Scikit-learn-入门学习

本文介绍了如何安装Scikit-learn及其依赖库,并详细讲解了数据集分割、模型训练与测试(以决策树为例)、模型的保存与加载,以及模型可视化的步骤。重点强调了`train_test_split`的`stratify`参数作用,以及使用joblib库保存和载入模型的方法。

资料来源
scikit-learn官网

Scikit-learn安装

这里我们主要安装最新的官方发行版本,这也是官方推荐的大多数用户的选择
同时,官方建议使用虚拟环境避免软件之间的冲突,比如使用python3 virtualenv 或者 conda环境(因为博主短期使用,就懒得装虚拟环境,需要长期使用的同学使用conda环境,还是比较方便的)
这是博主的系统环境

环境版本
操作系统win10
python3.7
pip19.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_stateint,RandomState实例或无,如果为int,则random_state是随机数生成器使用的种子e。如果是RandomState实例,则random_state是随机数生成器;如果为None,则随机数生成器是所使用的RandomState实例np.random
shufflebool,可选(默认为True)拆分前是否对数据进行混洗。如果shuffle = False,则straitify必须为None。
stratifyarray-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")#这个是最后保存的文件路径
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值