scikit-learn (sklearn) 是一个常用的Python机器学习库,提供了许多常用的模型和工具,帮助用户完成数据预处理、特征提取、模型训练、模型评估等机器学习任务。

下面列出了sklearn中常用的模型。

一、线性回归模型(Linear Regression)

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
import joblib

# 从CSV文件中读取数据
data = pd.read_csv('data.csv')

# 假设特征矩阵 X 的列是 'feature1' 和 'feature2',目标向量 y 的列是 'target'
X = data[['feature1', 'feature2']]
y = data['target']

# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建线性回归模型
model = LinearRegression()

# 在训练集上训练模型
model.fit(X_train, y_train)

# 保存模型
joblib.dump(model, 'linear_regression_model.pkl')

# 加载模型
loaded_model = joblib.load('linear_regression_model.pkl')

# 保存模型和加载模型的另一种方法
# 保存模型
# with open('model/model.pkl', 'wb') as f:
#     pickle.dump(model, f)

# 加载模型
# with open('model/model.pkl', 'rb') as f:
#     model = pickle.load(f)

# 在训练集和测试集上进行预测
train_predictions = loaded_model.predict(X_train)
test_predictions = loaded_model.predict(X_test)

# 评估模型
train_mse = mean_squared_error(y_train, train_predictions)
test_mse = mean_squared_error(y_test, test_predictions)
r2 = r2_score(y_test, test_predictions)

# 打印评估结果
print("训练集均方误差:", train_mse)
print("测试集均方误差:", test_mse)
print("R2 分数:", r2)

二、支持向量机模型(Support Vector Machine)

from sklearn import svm
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score

# 1. 数据准备
# 假设你有一个特征矩阵 X 和对应的目标变量 y
# X 的形状为 (样本数, 特征数),y 的形状为 (样本数,)
# 你需要将数据划分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 2. 模型训练
# 创建一个 SVM 分类器对象
clf = svm.SVC(kernel='linear')  # 这里使用线性核函数,你也可以选择其他核函数
# 使用训练集进行模型训练
clf.fit(X_train, y_train)

# 3. 模型评估
# 使用测试集进行预测
y_pred = clf.predict(X_test)

# 计算分类准确率
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

# 计算精确度、召回率和 F1 值
precision = precision_score(y_test, y_pred)
recall = recall_score(y_test, y_pred)
f1 = f1_score(y_test, y_pred)
print("Precision:", precision)
print("Recall:", recall)
print("F1 Score:", f1)

三、决策树模型(Decision Tree)

# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

# 加载数据集
data = load_iris()
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)

# 创建决策树分类器
clf = DecisionTreeClassifier()

# 训练决策树模型
clf.fit(X_train, y_train)

# 在训练集上进行预测
train_predictions = clf.predict(X_train)

# 在测试集上进行预测
test_predictions = clf.predict(X_test)

# 计算训练集和测试集的准确率
train_accuracy = accuracy_score(y_train, train_predictions)
test_accuracy = accuracy_score(y_test, test_predictions)

print("训练集准确率:", train_accuracy)
print("测试集准确率:", test_accuracy)

四、随机森林模型(Random Forest)

# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# 加载数据集
data = load_iris()
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)

# 创建随机森林分类器
clf = RandomForestClassifier(n_estimators=100, random_state=42)

# 训练随机森林模型
clf.fit(X_train, y_train)

# 在训练集上进行预测
train_predictions = clf.predict(X_train)

# 在测试集上进行预测
test_predictions = clf.predict(X_test)

# 计算训练集和测试集的准确率
train_accuracy = accuracy_score(y_train, train_predictions)
test_accuracy = accuracy_score(y_test, test_predictions)

print("训练集准确率:", train_accuracy)
print("测试集准确率:", test_accuracy)

五、K近邻模型(K-Nearest Neighbors)

# 导入必要的库
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

# 加载数据集
data = load_iris()
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)

# 创建K近邻分类器
clf = KNeighborsClassifier(n_neighbors=3)

# 训练K近邻模型
clf.fit(X_train, y_train)

# 在训练集上进行预测
train_predictions = clf.predict(X_train)

# 在测试集上进行预测
test_predictions = clf.predict(X_test)

# 计算训练集和测试集的准确率
train_accuracy = accuracy_score(y_train, train_predictions)
test_accuracy = accuracy_score(y_test, test_predictions)

print("训练集准确率:", train_accuracy)
print("测试集准确率:", test_accuracy)

六、朴素贝叶斯模型(Naive Bayes)

# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import GaussianNB
from sklearn.metrics import accuracy_score

# 加载数据集
data = load_iris()
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)

# 创建朴素贝叶斯分类器
clf = GaussianNB()

# 训练朴素贝叶斯模型
clf.fit(X_train, y_train)

# 在训练集上进行预测
train_predictions = clf.predict(X_train)

# 在测试集上进行预测
test_predictions = clf.predict(X_test)

# 计算训练集和测试集的准确率
train_accuracy = accuracy_score(y_train, train_predictions)
test_accuracy = accuracy_score(y_test, test_predictions)

print("训练集准确率:", train_accuracy)
print("测试集准确率:", test_accuracy)

七、K均值聚类模型(K-Means Clustering)

K均值聚类模型(K-Means Clustering)是一种无监督学习算法,用于将数据集划分为K个不同的簇。该算法通过迭代地将数据点分配到最近的簇中,并更新簇的中心,直到达到收敛。

下面是一个使用Python中的scikit-learn库来执行K均值聚类的简单示例代码

# 导入必要的库
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt

# 生成模拟数据
X, y = make_blobs(n_samples=100, centers=3, random_state=42)

# 创建K均值聚类模型
kmeans = KMeans(n_clusters=3, random_state=42)

# 拟合模型
kmeans.fit(X)

# 预测簇标签
labels = kmeans.predict(X)

# 获取簇中心
centers = kmeans.cluster_centers_

# 可视化结果
plt.scatter(X[:, 0], X[:, 1], c=labels)
plt.scatter(centers[:, 0], centers[:, 1], marker='x', color='red')
plt.show()

八、PCA降维模型(Principal Component Analysis)

PCA(Principal Component Analysis)是一种常用的降维技术,用于将高维数据映射到低维空间。它通过找到数据中的主成分(Principal Components),将数据在这些主成分上进行投影,从而实现降维的目的。

下面是一个使用Python中的scikit-learn库来执行PCA降维的简单示例代码:

# 导入必要的库
from sklearn.datasets import load_iris
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

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

# 创建PCA对象,指定降维后的维度
pca = PCA(n_components=2)

# 执行PCA降维
X_pca = pca.fit_transform(X)

# 可视化降维后的数据
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y)
plt.xlabel('PC1')
plt.ylabel('PC2')
plt.show()

九、神经网络模型(Neural Network)

神经网络模型(Neural Network)是一种机器学习模型,受到人类神经系统的启发而设计。它由多个神经元(或称为节点)组成的层级结构构成,每个神经元都与前一层的神经元相连,并通过学习来调整连接权重,以实现对输入数据的复杂模式识别和预测。

以下是一个使用Python中的TensorFlow库来构建和训练一个简单神经网络模型的示例代码:

# 导入必要的库
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from tensorflow.keras.optimizers import Adam

# 构建神经网络模型
model = Sequential()
model.add(Dense(64, activation='relu', input_shape=(input_dim,)))
model.add(Dense(64, activation='relu'))
model.add(Dense(num_classes, activation='softmax'))

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

# 训练模型
model.fit(X_train, y_train, batch_size=32, epochs=10, validation_data=(X_val, y_val))

# 在测试集上评估模型
loss, accuracy = model.evaluate(X_test, y_test)
print(f'Test Loss: {loss}')
print(f'Test Accuracy: {accuracy}')

十、AdaBoost模型(Adaptive Boosting)

AdaBoost(Adaptive Boosting)是一种集成学习方法,用于提高分类算法的准确性。它通过训练一系列弱分类器(比如决策树)并将它们组合成一个强分类器,从而实现更好的分类性能。

下面是一个使用Python中的scikit-learn库来构建和训练AdaBoost模型的简单示例代码:

# 导入必要的库
from sklearn.ensemble import AdaBoostClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 创建一个示例数据集
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建AdaBoost分类器
adaboost = AdaBoostClassifier(n_estimators=100, random_state=42)

# 训练AdaBoost模型
adaboost.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = adaboost.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'Test Accuracy: {accuracy}')

十一、Bagging模型(Bootstrap Aggregating)

Bagging(Bootstrap Aggregating)是一种集成学习方法,用于提高分类和回归算法的准确性。它通过对原始数据集进行有放回的随机抽样(bootstrap采样),然后使用这些抽样数据集训练多个独立的基分类器(比如决策树),最后通过投票或平均的方式将它们组合成一个强分类器或回归器。

下面是一个使用Python中的scikit-learn库来构建和训练Bagging模型的简单示例代码:

# 导入必要的库
from sklearn.ensemble import BaggingClassifier
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 创建一个示例数据集
X, y = make_classification(n_samples=1000, n_features=20, random_state=42)

# 将数据集拆分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建Bagging分类器
bagging = BaggingClassifier(n_estimators=100, random_state=42)

# 训练Bagging模型
bagging.fit(X_train, y_train)

# 在测试集上进行预测
y_pred = bagging.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'Test Accuracy: {accuracy}')

这些模型都有其独特的优点和适用范围,用户可以根据自己的具体问题和数据特征,选择合适的模型进行训练和预测。