Scikit-learn(通常缩写为 sklearn)是一个强大的 Python 库,专门用于机器学习和数据挖掘。该库提供了丰富的功能,包括分类、回归、聚类、降维、模型选择和预处理等。本文将通过一个详细的示例来展示如何使用 Scikit-learn 进行基本的机器学习任务。
1. 安装 Scikit-learn
在开始使用 Scikit-learn 之前,我们需要确保已安装该库。打开命令行或终端,输入以下命令:
pip install scikit-learn
如果您还没有安装 NumPy、Pandas 和 Matplotlib,您可以一起安装它们:
pip install numpy pandas matplotlib seaborn
2. 导入必要的库
在您的 Python 脚本或 Jupyter Notebook 中,首先导入所需的库:
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import accuracy_score, classification_report, confusion_matrix
3. 加载数据集
Scikit-learn 提供了一些内置数据集。我们将使用鸢尾花(Iris)数据集作为示例,展示如何加载和查看数据集的基本信息。
# 加载鸢尾花数据集
iris = load_iris()
# 特征(特征矩阵)
X = iris.data
# 标签(目标向量)
y = iris.target
# 将数据转换为 DataFrame 以便更好地展示
iris_df = pd.DataFrame(data=np.c_[iris.data, iris.target], columns=iris.feature_names + ['target'])
print(iris_df.head()) # 打印前5行数据
4. 数据预处理
数据预处理是机器学习中的重要步骤。我们通常需要将数据分为训练集和测试集,并进行标准化:
# 划分训练集和测试集,80% 训练集,20% 测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 输出训练集和测试集的形状
print(f"训练集形状: {X_train.shape}, 测试集形状: {X_test.shape}")
# 标准化特征
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train) # 拟合并转换训练数据
X_test = scaler.transform(X_test) # 仅转换测试数据
5. 选择和训练模型
在这个示例中,我们将使用 K-最近邻(K-Nearest Neighbors)分类器进行训练。指定邻居数为 3。
# 创建 KNN 分类器实例
knn = KNeighborsClassifier(n_neighbors=3)
# 用训练数据训练模型
knn.fit(X_train, y_train)
print("模型训练完成!")
6. 进行预测
使用训练好的模型对测试集进行预测。
# 进行预测
y_pred = knn.predict(X_test)
# 输出预测结果
print(f"预测结果: {y_pred}")
7. 评估模型
评估模型性能是检验机器学习模型有效性的重要步骤。我们可以使用准确率、分类报告和混淆矩阵来评估模型。
# 计算并输出准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"准确率: {accuracy:.2f}")
# 打印分类报告
print("分类报告:")
print(classification_report(y_test, y_pred, target_names=iris.target_names))
# 计算混淆矩阵
conf_matrix = confusion_matrix(y_test, y_pred)
print("混淆矩阵:")
print(conf_matrix)
8. 可视化结果
通过可视化来了解数据和模型结果非常重要。我们可以使用 Matplotlib 和 Seaborn 库来绘制混淆矩阵的热图。
# 可视化混淆矩阵
plt.figure(figsize=(8, 6))
sns.heatmap(conf_matrix, annot=True, fmt='d', cmap='Blues',
xticklabels=iris.target_names, yticklabels=iris.target_names)
plt.ylabel('实际标签')
plt.xlabel('预测标签')
plt.title('混淆矩阵')
plt.show()
9. 调整模型参数(可选)
为提高模型性能,可以尝试调整 KNN 参数 n_neighbors
,使用交叉验证选择最佳参数。
from sklearn.model_selection import GridSearchCV
param_grid = {'n_neighbors': np.arange(1, 11)}
grid = GridSearchCV(KNeighborsClassifier(), param_grid, cv=5)
grid.fit(X_train, y_train)
print(f"最佳参数: {grid.best_params_}")
print(f"最佳交叉验证得分: {grid.best_score_:.2f}")
在本教程中,我们详细介绍了如何使用 Scikit-learn 进行基本的机器学习任务,包括数据加载、预处理、模型训练、预测和模型评估。Scikit-learn 提供的功能非常强大,您可以根据需求进一步探索其他算法和工具。
标签:iris,Python,Scikit,test,train,learn,print,import From: https://blog.csdn.net/vvvae1234/article/details/141017621