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设计得特别人性化,跟着文档一步步来,很快就能上手。要是卡住了,就去翻翻官方文档,里面例子可多了。

代码写多了就会发现,机器学习也就那么回事,重要的是理解每个步骤在干啥。等你把这些基础概念都搞明白了,上手那些高大上的深度学习框架也就不在话下了。

来源:青言悉语

THE END