资料来源
scikit-learn官网
Scikit-learn安装
这里我们主要安装最新的官方发行版本,这也是官方推荐的大多数用户的选择
同时,官方建议使用虚拟环境避免软件之间的冲突,比如使用python3 virtualenv 或者 conda环境(因为博主短期使用,就懒得装虚拟环境,需要长期使用的同学使用conda环境,还是比较方便的)
这是博主的系统环境
| 环境 | 版本 |
|---|---|
| 操作系统 | win10 |
| python | 3.7 |
| pip | 19.3.1 |
因为scikit-learn的基于Numpy,Scipy,matplotlib,所以安装scikit-learn 之前需要安装这几个库
pip install numpy
pip install scipy
pip install matplotlib
pip install scikit-learn
Scikit-learn使用入门
数据集的分割
我们知道,在机器学习中我们需要将数据集分成训练集和测试集两部分。在scikit-learn中,可以使用train_test_splithelper函数快速将随机分为训练和测试集
from sklearn.model_selection import train_test_split
X = []#特征向量集
Y = []#标签集
# ...这之后我是把数据加进了X,Y两个list。因为涉及到项目把代码隐去了
x_train,x_test,y_train,y_test = train_test_split(X,Y,train_size=0.8,random_state=0)
train_test_split
| 参数 | 说明 |
|---|---|
| * array | 输入多个具有相同长度的序列,允许的输入是列表,numpy数组,稀疏矩阵或pandas dataframe |
| test_size | 浮点数,整数或无,可选项,默认值为无,如果为float,则应在0.0到1.0之间,并表示rain数据集在原数据集的比例。如果为int,则表示火车样本的绝对数量。如果未None,则自动设置为0.25 |
| random_state | int,RandomState实例或无,如果为int,则random_state是随机数生成器使用的种子e。如果是RandomState实例,则random_state是随机数生成器;如果为None,则随机数生成器是所使用的RandomState实例np.random |
| shuffle | bool,可选(默认为True)拆分前是否对数据进行混洗。如果shuffle = False,则straitify必须为None。 |
| stratify | array-like or None (default=None),如果不为None,则将数据用作类标签以分层方式拆分 |
stratify这个参数在官方文档里讲得不是很清楚,又查阅了别的博主的一些博客
大概意思就是,stratify 参数用保持测试集与整个数据集中的数据分类比例一致。
比如有100个数据,80个属于A类,20个属于B类。如果train_test_split(… test_size=0.25, stratify = y_all), 那么split之后数据如下:
training: 75个数据,其中60个属于A类,15个属于B类。
testing: 25个数据,其中20个属于A类,5个属于B类。
模型训练&测试-—以决策树为例
因为博主用的是决策树这个算法,这里就展示决策树的使用方法,但其他算法的流程,API应该一致的。具体算法可以看官网,还是比较清楚的。
from sklearn import tree
from sklearn.metrics import accuracy_score
if __name__ == '__main__':
clf = tree.DecisionTreeClassifier()
#分离训练集和测试集
x_train,x_test,y_train,y_test = train_test_split(X,Y,train_size=0.8,random_state=0)
#训练决策树
clt = clf.fit(x_train,y_train)
#使用训练的模型进行测试,predict_labels保存返回的结果
predict_labels =clf.predict(x_test)
#accuracy_score
Accuracy = accuracy_score(y_test,predict_labels)
print(Accuracy)
保存/载入训练后的模型对象
在训练完成一个模型之后,我们希望能够把模型保存下。不然每次使用都要训练就很浪费时间。博主使用的joblib这个库,如果没有就安装一下,pip还是很方便的。
import joblib
#from sklearn.externals import joblib #这种写法不推荐,joblib这个库要从scikit-learn中移除
if __name__ == '__main__':
#保存模型
joblib.dump(clf, '../model/decisionTree_mode.pkl')#第一个参数是训练模型,第二参数文件路径
#读入模型
clf = joblib.load(r'.\..\model\decisionTree_mode.pkl')
模型可视化
使用graphvi这个库可以将生成的决策树画出来
graphivi的安装教程可以看这篇,有点多就不记录在这篇博客中了。
import graphviz
dot_data = tree.export_graphviz(clf, out_file=None)
graph = graphviz.Source(dot_data)
graph.render("DecisionTree")#这个是最后保存的文件路径
本文介绍了如何安装Scikit-learn及其依赖库,并详细讲解了数据集分割、模型训练与测试(以决策树为例)、模型的保存与加载,以及模型可视化的步骤。重点强调了`train_test_split`的`stratify`参数作用,以及使用joblib库保存和载入模型的方法。
3225

被折叠的 条评论
为什么被折叠?



