本文只讲scikit-learn的基础使用,不涉及有关机器学习的理论基础。
本文只涉及scikit-learn在监督式学习上的使用,所以相关的描述可能有失全面,请谅解。
scikit-learn是什么?
scikit-learn是一个开源(BSD协议)的机器学习库。
scikit-learn是最为常用的机器学习库之一。
它基于NumPy、SciPy、Pandas和Matplotlib开发。
scikit-learn我使用的感觉比较爽,以致于其他的图我暂时就不学了,我非常推荐scikit-learn。
scikit-learn特点
- 好用的数据集
scikit-learn自带了很多著名的数据集,可以直接用来教和学。
比如鸢尾花、波士顿房价数据集。
- 好用的一致性
对于各种机器学习算法,scikit-learn提供的API具有很高的一致性,对学习特别友好,容易一通百通。
- 好用的示例代码
scikit-learn提供了大量的示例代码。
快速开始
安装
如果你安装了Anaconda,那么scikit-learn已经在Anaconda中自带,不用再安装。
手动安装scikit-learn也很简单:
执行以下命令:
pip install scikit-learn
也可以指定镜像来安装,比如指定清华镜像:
pip install scikit-learn -i https://pypi.tuna.tsinghua.edu.cn/simple
代码示例
阅读以下代码,将其跑起来感受一下就差不多了。
import numpy as np
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
# 直接从 scikit-learn 载入波士顿房价数据集
X, y = load_boston(return_X_y=True)
# 数据集切分:70% 用于训练,30% 用于测试
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)
# 使用训练集来训练(拟合)
LR = LinearRegression().fit(X_train, y_train)
w = np.insert(LR.coef_, 0, LR.intercept_, axis=0)
with np.printoptions(precision=3, suppress=True): # 设置输出格式
print(f'w = {w}')
# 使用验证集来验证
acc = LR.score(X_test, y_test)
print(f"acc={acc}")
运行结果:
w = [ 37.937 -0.121 0.044 0.011 2.511 -16.231 3.859 -0.01 -1.5
0.242 -0.011 -1.018 0.007 -0.487]
acc=0.6733825506400193
代码解释
线性回归的对应的超平面函数为:
LR.coef_对应的是,,...,,LR.intercept_对应的是。
好用的数据集
scikit-learn自带的数据集通过是sklearn.datasets导入。
scikit-learn可导入三种数据集:
- 打包好的数据集。这些数据是随scikit-learn安装时,存储在本地的,通常数据量较小。这种数据集用
sklearn.dataset.load_*的方式导入。 - 分流下载的数据:这些数据本地没有,导入时才去下载。这种数据集用
sklearn.datasets.fetch_*方式导入(获取)。 - 随机生成数据:用
sklearn.datasets.make_*导入(生成)。
好用的一致性
对于不同的机器学习算法,使用scikit-learn的套路很相似。
但要提前说一下,我还不算是scikit-learn的深度用户,所以我总结的相关套路是否全面,会不会打破,我并不敢保证。随着使用的深入,我也会酌情更新本文。
导入数据的一致性
如何导入数据,前面已讲,可以看出规律性很强,这就是一致性的体现。
使用模型的一致性
我所接触和实践的机器学习算法,都是遵从如下套路:
- 导入相关的模型包,实例化模型,记为model
- 使用
train_test_split(X,y,...)进行数据集拆分 - 使用
model.fit(X_train, y_train)进行训练 - 使用
model_selection.cross_val_score(...)进行K折交叉验证 - 使用
model.score(X_verify, y_verify)进行验证 - 使用
model.predict(X_test)进行测试
好用的示例代码
示例代码请看:这里
Scikit-learn快速入门教程和实例(一) - 知乎 (zhihu.com)
Examples — scikit-learn 1.2.0 documentation