大家好呀,我是二维。今天咱们来聊聊Python机器学习里的一个超级好用的工具包 - Scikit-learn 。说实话,我第一次接触机器学习的时候也是一脸懵,看到那些复杂的算法就头大。不过用了Scikit-learn后,感觉整个人都通透了,它把复杂的算法都封装得特别优雅,用起来贼简单。
安装Scikit-learn特别简单,打开终端敲一行命令就搞定:
pip install scikit-learn
引入模块的时候,业内都喜欢用这么个简写:
import sklearn
# 常用的一些子模块
from sklearn import datasets # 数据集
from sklearn.model_selection import train_test_split # 数据集分割
from sklearn.linear_model import LinearRegression # 线性回归
温馨提示:安装的时候最好用清华源,速度飞快,把pip那个地址换成就成。
Scikit-learn自带了不少经典数据集,比如波士顿房价、鸢尾花分类这些,练手特别好用:
from sklearn.datasets import load_iris
iris = load_iris()
X = iris.data
y = iris.target
# 把数据分成训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
这代码看着挺简单吧?但有个坑得提醒下:random_state这个参数记得设置,不然每次运行结果都不一样,调试起来可烦人了。
说实话,Scikit-learn最牛的地方就是把所有模型都统一到一个套路里了:
from sklearn.neighbors import KNeighborsClassifier
# 创建模型
knn = KNeighborsClassifier(n_neighbors=5)
# 训练模型
knn.fit(X_train, y_train)
# 预测
predictions = knn.predict(X_test)
看到没?不管是KNN、随机森林还是神经网络,都是这仨步骤:创建、训练、预测。这设计简直绝了!
训练完模型,肯定得看看效果咋样吧:
from sklearn.metrics import accuracy_score, confusion_matrix
# 计算准确率
acc = accuracy_score(y_test, predictions)
print(f“准确率:{acc}”)
# 混淆矩阵
cm = confusion_matrix(y_test, predictions)
print(“混淆矩阵:\n”, cm)
温馨提示:accuracy_score返回的是0到1之间的小数,要想显示百分比得自己乘100。
机器学习里有句老话:垃圾进垃圾出。数据预处理真的特别重要:
from sklearn.preprocessing import StandardScaler
# 标准化数据
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
小技巧:测试集只能用transform,不能用fit_transform,不然就数据泄露了。这个问题我当年踩过坑,记忆深刻啊!
如果数据处理步骤多,一个一个写多麻烦。Pipeline直接一条龙搞定:
from sklearn.pipeline import Pipeline
pipe = Pipeline([
('scaler', StandardScaler()),
('knn', KNeighborsClassifier(n_neighbors=5))
])
# 一步到位
pipe.fit(X_train, y_train)
机器学习说复杂也复杂,说简单也简单。用Scikit-learn的话,上手特别快。它的API设计得真是太优雅了,基本上看个函数名就知道啥意思。花几天时间熟悉下基本操作,搞个简单的机器学习项目完全没问题。顺便说一句,文档写得特别详细,遇到不会的直接查文档准没错。
这玩意真是Python机器学习的瑞士军刀,我现在做项目基本上都离不开它。不过话说回来,知其然也得知其所以然,建议大家多看看算法原理,光会用工具可不够。
领取专属 10元无门槛券
私享最新 技术干货