适合人群:机器学习新手 | 数据分析爱好者 | 需快速展示案例的学生
一、引言:为什么要学这个案例?
目的:明确机器学习解决什么问题,建立学习信心。
机器学习定义:让计算机从数据中自动学习规律(如分类鸢尾花品种)。
为什么选鸢尾花数据集:数据量小、特征明确,适合教学演示。
Scikit-learn优势:提供现成算法和工具,无需从头写数学公式。
二、环境准备:5分钟快速上手
目的:搭建可运行的代码环境,避免卡在工具安装环节。
安装库(命令逐行执行):
pip install numpy pandas matplotlib scikit-learn
加载数据:
from sklearn.datasets import load_iris iris = load_iris() X, y = iris.data, iris.target # X:特征矩阵,y:品种标签
三、数据探索:理解数据才能用好模型
目的:避免“垃圾进垃圾出”,确保数据质量。
查看特征含义:
print(iris.feature_names) # 输出:['花萼长度', '花萼宽度', '花瓣长度', '花瓣宽度'] print(iris.target_names) # 输出:['山鸢尾', '变色鸢尾', '维吉尼亚鸢尾']
可视化特征分布(代码+作用):
import matplotlib.pyplot as plt # 绘制花瓣长度与宽度的散点图 plt.scatter(X[:, 2], X[:, 3], c=y) plt.xlabel('花瓣长度') plt.ylabel('花瓣宽度') plt.show()
✅ 作用:观察不同品种在特征空间中的分布是否可分。
四、数据预处理:让模型更好学习
目的:消除特征尺度差异,提升模型收敛速度与精度。
标准化处理:
from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_scaled = scaler.fit_transform(X) # 转换为均值为0、方差为1的分布
划分训练集与测试集:
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2)
✅ 作用:
训练集:用于模型学习规律
测试集:模拟新数据评估模型效果
五、模型训练与评估:三步完成分类
目的:掌握机器学习核心流程,理解模型性能评估方法。
选择并训练模型:
from sklearn.svm import SVC model = SVC(kernel='linear') # 使用线性核的支持向量机 model.fit(X_train, y_train) # 喂入训练数据
预测与评估:
from sklearn.metrics import accuracy_score, confusion_matrix y_pred = model.predict(X_test) # 计算准确率 print("准确率:", accuracy_score(y_test, y_pred)) # 查看混淆矩阵 print("混淆矩阵:\n", confusion_matrix(y_test, y_pred))
✅ 指标解释:
准确率:正确预测的比例(越高越好)
混淆矩阵:展示各类别预测结果与真实值的对应关系
六、模型优化:让效果更上一层楼
目的:理解调参重要性,提升模型泛化能力。
网格搜索调参:
from sklearn.model_selection import GridSearchCV # 定义参数范围 param_grid = {'C': [0.1, 1, 10], 'gamma': [1, 0.1, 0.01]} # 自动搜索最优参数 grid = GridSearchCV(SVC(), param_grid, cv=5) grid.fit(X_train, y_train) print("最优参数:", grid.best_params_)
✅ 作用:通过交叉验证找到最佳超参数组合(如SVM的惩罚系数C)。
七、总结与下一步
目的:明确学习成果,规划后续方向。
机器学习局限性:
依赖数据质量(需人工特征工程)
复杂问题(如图像识别)需转向深度学习
推荐学习路径:
实战平台:Kaggle(参加入门竞赛如Titanic)
官方文档:Scikit-learn中文文档