Python 机器学习:十个入门机器学习的必备库

大家好!今天我们要聊的是 Python 机器学习中不可或缺的 10 . 无论你是刚刚接触机器学习的新手,还是已经有一定经验的老手,这些库都能帮助你更好地理解和应用机器学习技术。 让我们一步步来,从最基础的库开始,逐渐深入到更高级的工具。

大家好!今天我们要聊的是 Python 机器学习中不可或缺的 10 个库。无论你是刚刚接触机器学习的新手,还是已经有一定经验的老手,这些库都能帮助你更好地理解和应用机器学习技术。让我们一步步来,从最基础的库开始,逐渐深入到更高级的工具。

Python 机器学习:十个入门机器学习的必备库

1. NumPy

简介:NumPy 是 Python 中用于科学计算的基础库,提供了多维数组对象、各种派生对象(如掩码数组和矩阵)以及用于数组快速操作的各种函数。

示例:

复制
import numpy as np

# 创建一个一维数组
a = np.array([1, 2, 3, 4, 5])
print(a)  # 输出: [1 2 3 4 5]

# 创建一个二维数组
b = np.array([[1, 2, 3], [4, 5, 6]])
print(b)
# 输出:
# [[1 2 3]
#  [4 5 6]]

# 数组的基本操作
c = a + 2
print(c)  # 输出: [3 4 5 6 7]

d = b * 2
print(d)
# 输出:
# [[ 2  4  6]
#  [ 8 10 12]]

2. Pandas

简介:Pandas 是一个强大的数据处理和分析库,提供了 DataFrame 和 Series 数据结构,方便进行数据清洗、转换和分析。

示例:

复制
import pandas as pd

# 创建一个 DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': [25, 30, 35],
    'City': ['New York', 'Los Angeles', 'Chicago']
}
df = pd.DataFrame(data)
print(df)
# 输出:
#       Name  Age         City
# 0    Alice   25     New York
# 1      Bob   30  Los Angeles
# 2  Charlie   35      Chicago

# 数据筛选
young_people = df[df['Age'] < 30]
print(young_people)
# 输出:
#     Name  Age     City
# 0  Alice   25  New York

3. Matplotlib

简介:Matplotlib 是一个用于绘制图表的库,可以生成各种静态、动态和交互式图表。

示例:

复制
import matplotlib.pyplot as plt

# 绘制简单的折线图
x = [1, 2, 3, 4, 5]
y = [1, 4, 9, 16, 25]

plt.plot(x, y)
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
plt.title('Simple Line Plot')
plt.show()

4. Scikit-learn

简介:Scikit-learn 是一个用于机器学习的库,提供了大量的监督和非监督学习算法,以及模型评估和选择的工具。

示例:

复制
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score

# 加载 Iris 数据集
iris = load_iris()
X = iris.data
y = iris.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练 KNN 模型
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)

# 预测
y_pred = knn.predict(X_test)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
# 输出: Accuracy: 0.97

5. TensorFlow

简介:TensorFlow 是由 Google 开发的深度学习框架,支持多种平台和语言,广泛应用于图像识别、自然语言处理等领域。

示例:

复制
import tensorflow as tf
from tensorflow.keras import layers, models

# 构建一个简单的神经网络
model = models.Sequential([
    layers.Dense(64, activation='relu', input_shape=(32,)),
    layers.Dense(64, activation='relu'),
    layers.Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 生成一些随机数据
import numpy as np
x_train = np.random.random((1000, 32))
y_train = np.random.randint(10, size=(1000,))

# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=32)

6. PyTorch

简介:PyTorch 是由 Facebook 开发的深度学习框架,以灵活性和动态计算图著称,广泛应用于研究和生产环境。

示例:

复制
import torch
import torch.nn as nn
import torch.optim as optim

# 定义一个简单的神经网络
class SimpleNet(nn.Module):
    def __init__(self):
        super(SimpleNet, self).__init__()
        self.fc1 = nn.Linear(32, 64)
        self.fc2 = nn.Linear(64, 64)
        self.fc3 = nn.Linear(64, 10)

    def forward(self, x):
        x = torch.relu(self.fc1(x))
        x = torch.relu(self.fc2(x))
        x = torch.softmax(self.fc3(x), dim=1)
        return x

# 实例化模型
model = SimpleNet()

# 生成一些随机数据
x_train = torch.randn(1000, 32)
y_train = torch.randint(10, (1000,))

# 定义损失函数和优化器
criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(model.parameters(), lr=0.001)

# 训练模型
for epoch in range(10):
    optimizer.zero_grad()
    outputs = model(x_train)
    loss = criterion(outputs, y_train)
    loss.backward()
    optimizer.step()
    print(f'Epoch {epoch+1}, Loss: {loss.item()}')

7. Keras

简介:Keras 是一个高级神经网络 API,可以运行在 TensorFlow、Theano 或 CNTK 后端,提供了简洁易用的接口。

示例:

复制
from keras.models import Sequential
from keras.layers import Dense

# 构建一个简单的神经网络
model = Sequential([
    Dense(64, activation='relu', input_shape=(32,)),
    Dense(64, activation='relu'),
    Dense(10, activation='softmax')
])

# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 生成一些随机数据
import numpy as np
x_train = np.random.random((1000, 32))
y_train = np.random.randint(10, size=(1000,))

# 训练模型
model.fit(x_train, y_train, epochs=10, batch_size=32)

8. LightGBM

简介:LightGBM 是一个基于梯度提升决策树(GBDT)的高效机器学习框架,特别适用于大规模数据集。

示例:

复制
import lightgbm as lgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载乳腺癌数据集
data = load_breast_cancer()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 转换为 LightGBM 的数据格式
train_data = lgb.Dataset(X_train, label=y_train)
test_data = lgb.Dataset(X_test, label=y_test, reference=train_data)

# 设置参数
params = {
    'objective': 'binary',
    'metric': 'binary_logloss',
    'boosting_type': 'gbdt',
    'num_leaves': 31,
    'learning_rate': 0.05
}

# 训练模型
model = lgb.train(params, train_data, num_boost_round=100, valid_sets=[test_data], early_stopping_rounds=10)

# 预测
y_pred = model.predict(X_test)
y_pred = [1 if pred > 0.5 else 0 for pred in y_pred]

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
# 输出: Accuracy: 0.96

9. XGBoost

简介:XGBoost 是另一个基于梯度提升决策树的高效机器学习框架,以其高性能和准确性而闻名。

示例:

复制
import xgboost as xgb
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载乳腺癌数据集
data = load_breast_cancer()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 转换为 DMatrix 格式
dtrain = xgb.DMatrix(X_train, label=y_train)
dtest = xgb.DMatrix(X_test, label=y_test)

# 设置参数
params = {
    'objective': 'binary:logistic',
    'eval_metric': 'logloss',
    'eta': 0.1,
    'max_depth': 3
}

# 训练模型
model = xgb.train(params, dtrain, num_boost_round=100, evals=[(dtest, 'test')], early_stopping_rounds=10)

# 预测
y_pred = model.predict(dtest)
y_pred = [1 if pred > 0.5 else 0 for pred in y_pred]

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
# 输出: Accuracy: 0.96

10. CatBoost

简介:CatBoost 是一个开源的梯度提升框架,特别适合处理分类特征,无需进行预处理。

示例:

复制
from catboost import CatBoostClassifier
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 加载乳腺癌数据集
data = load_breast_cancer()
X = data.data
y = data.target

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练模型
model = CatBoostClassifier(iterations=100, learning_rate=0.1, depth=3)
model.fit(X_train, y_train, verbose=False)

# 预测
y_pred = model.predict(X_test)

# 评估模型
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy:.2f}')
# 输出: Accuracy: 0.96

实战案例:使用 Scikit-learn 进行房价预测

假设我们有一个包含房屋特征的数据集,目标是预测房屋的价格。我们将使用 Scikit-learn 来构建一个线性回归模型。

数据集:

  • house_prices.csv 包含以下列:
  • bedrooms:卧室数量
  • bathrooms:浴室数量
  • sqft_living:居住面积(平方英尺)
  • price:房屋价格

步骤:

  • 加载数据。
  • 数据预处理。
  • 划分训练集和测试集。
  • 训练线性回归模型。
  • 评估模型性能。

代码实现:

复制
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score

# 1. 加载数据
data = pd.read_csv('house_prices.csv')

# 2. 数据预处理
X = data[['bedrooms', 'bathrooms', 'sqft_living']]
y = data['price']

# 3. 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 4. 训练线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)

# 5. 评估模型性能
y_pred = model.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)

print(f'Mean Squared Error: {mse:.2f}')
print(f'R^2 Score: {r2:.2f}')

总结

本文介绍了 10 个 Python 机器学习的必备库,包括 NumPy、Pandas、Matplotlib、Scikit-learn、TensorFlow、PyTorch、Keras、LightGBM、XGBoost 和 CatBoost。每个库都有其独特的特点和应用场景,通过实际的代码示例,我们展示了如何使用这些库进行数据处理、可视化和模型训练。最后,我们通过一个实战案例,展示了如何使用 Scikit-learn 进行房价预测。

相关资讯

提升编码水平,这本Python软件工程开源书籍为研究人员量身打造

在科研领域,计算机软件的应用无处不在。但是,一些研究者因为自身并非毕业于计算机相关学科,所以有时不得不将大量的时间花费在自学软件工程上。对于有些想要提升自身编码与软件开发水平的研究者来说,合适的学习资料至关重要。本文介绍的这本开源书籍就是为这类研究者「量身打造」的。

M1芯片搞数据科学好使吗?5种基准测试给你答案

最近 M1 芯片爆火,它是否适用于数据科学?在常用基准上测试一下就知道了。

有人总结了70多个Python精选项目:再也不用去GitHub、Reddit大海捞针了

学习一门编程语言比较好的方式是听人讲课吗?还是自己钻研书本?都算是。但阅读项目和亲手实现项目绝对是进步最快的方式。