Scikit-learn,一个机器学习入门必备 Python 库!
聊聊 Scikit-learn 这个机器学习神器。它就像是机器学习界的瑞士军刀,里面啥都有,用起来还贼简单。
安装那些事
装个sklearn真的太简答了:
pip install scikit-learn
要是想用conda:
conda install scikit-learn
⚠️ 小贴士:
- 建议先装好NumPy和SciPy,sklearn跟它俩关系特别铁
- Windows用户遇到装不上的情况,去找个预编译的wheel包准没错
数据集:从玩具到实战
sklearn内置了好多数据集,拿来练手贼好用:
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载鸢尾花数据集
iris = load_iris()
X, y = iris.data, iris.target
# 分训练集和测试集,这波不能太任性
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42
)
模型训练:一套组合拳
sklearn的模型API设计得太舒服了,fit一下就能训练,predict一下就能预测:
from sklearn.tree import DecisionTreeClassifier
# 整一个决策树分类器
clf = DecisionTreeClassifier(max_depth=3)
# 训练模型,就这么简单
clf.fit(X_train, y_train)
# 预测结果
y_pred = clf.predict(X_test)
# 看看准确率咋样
from sklearn.metrics import accuracy_score
print(f“准确率:{accuracy_score(y_test, y_pred):.2f}”)
数据预处理:给数据洗个澡
原始数据都不太干净,得处理一下:
from sklearn.preprocessing import StandardScaler
# 标准化数据
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
⚠️ 小贴士:
- fit_transform和transform不是一回事,测试集只能用transform
- 标准化要在划分训练集和测试集之后做,不然会数据泄露
模型评估:刷分大法
光看准确率还不够,咱们来个全面体检:
from sklearn.metrics import classification_report
from sklearn.metrics import confusion_matrix
# 整个分类报告
print(classification_report(y_test, y_pred))
# 来个混淆矩阵
print(confusion_matrix(y_test, y_pred))
管道:流水线作业
手动一步步处理太麻烦了,用Pipeline一条龙服务:
from sklearn.pipeline import Pipeline
# 建个流水线
pipe = Pipeline([
('scaler', StandardScaler()),
('clf', DecisionTreeClassifier(max_depth=3))
])
# 一套带走
pipe.fit(X_train, y_train)
y_pred = pipe.predict(X_test)
⚠️ 小贴士:
- Pipeline能防止数据泄露
- 调参的时候用get_params()和set_params()特别方便
交叉验证:稳定性测试
单次划分数据集不太靠谱,交叉验证才是正道:
from sklearn.model_selection import cross_val_score
# 5折交叉验证
scores = cross_val_score(pipe, X, y, cv=5)
print(f“交叉验证分数:{scores.mean():.2f} (+/- {scores.std() * 2:.2f})”)
机器学习真没那么难,关键是要动手实践。sklearn的API设计得特别人性化,跟着文档一步步来,很快就能上手。要是卡住了,就去翻翻官方文档,里面例子可多了。
代码写多了就会发现,机器学习也就那么回事,重要的是理解每个步骤在干啥。等你把这些基础概念都搞明白了,上手那些高大上的深度学习框架也就不在话下了。
来源:青言悉语