如何用 scikit-learn 训练第一个分类模型
机器学习入门最经典的第一课,就是用 scikit-learn 训练一个分类模型。它把”加载数据、预处理、训练、评估”封装成统一的接口,几十行代码就能跑通完整流程。这篇教程以鸢尾花数据集为例,手把手带你走完每一步。
机器学习的标准流程
不管多复杂的模型,都遵循这条流水线:
graph LR
A[加载数据] --> B[划分训练测试集]
B --> C[特征预处理]
C --> D[训练模型]
D --> E[评估效果]
E --> F[预测新数据]
前置准备
pip install scikit-learn pandas matplotlib |
步骤一:加载数据集
sklearn 自带鸢尾花数据集,包含 150 条样本、4 个特征、3 个类别:
from sklearn.datasets import load_iris |
步骤二:划分训练集与测试集
用一部分数据训练、另一部分评估,避免模型”背答案”:
from sklearn.model_selection import train_test_split |
test_size=0.2:20% 作测试集stratify=y:保证训练/测试集里各类别比例一致random_state:固定随机种子,结果可复现
步骤三:特征预处理
不同特征量纲不同,标准化能提升很多模型的效果:
from sklearn.preprocessing import StandardScaler |
注意:测试集只能用训练集学到的均值方差来 transform,不能重新 fit,否则会造成数据泄漏。
步骤四:选择并训练模型
以逻辑回归为例,fit 一行完成训练:
from sklearn.linear_model import LogisticRegression |
换成决策树、SVM、随机森林,只需替换这一行,接口完全一致。
步骤五:评估效果
from sklearn.metrics import accuracy_score, classification_report |
准确率之外,还要看精确率、召回率、F1,尤其在类别不平衡时。
步骤六:预测新数据
new_sample = [[5.1, 3.5, 1.4, 0.2]] |
步骤七:用 Pipeline 一键串联
预处理和模型可以用 Pipeline 打包,避免手动管理 scaler:
from sklearn.pipeline import make_pipeline |
Pipeline 把预处理和模型作为一个整体,杜绝数据泄漏,也方便后续调参。
常见问题
- 准确率很低:先检查数据是否 shuffle、特征是否有意义
- 训练好测试差:过拟合,减少模型复杂度或加正则
- 报收敛警告:逻辑回归调大
max_iter - 类别不平衡:用
class_weight="balanced"
小结
scikit-learn 用统一的 fit / predict / score 接口,把机器学习流程标准化。记住这条主线——划分数据、预处理、训练、评估、预测,再用 Pipeline 串起来,你就能快速尝试各种模型。这套范式同样适用于回归、聚类等绝大多数传统机器学习任务。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 非鱼小站!
评论
WalineDisqus








