sklearn中文文档:https://www.cntofu.com/book/170/docs/2.md
官方网站:https://scikit-learn.org/stable/

sklearn(scikit-learn)是一个做数据挖掘比较重要的工具包,里边主要的模块包括一些分类、聚类、回归、降维、模型选择和数据预处理。分类中包括一些算法例如:SVM(支持向量机)、最近邻和随机森林等;聚类中包括些算法例如:k-means、mean-shift等;回归中主要包含一些算法例如:SVR、lasso、岭回归等;降维模块中主要包含一些算法例如:主成分分析、特征选择等。
与此同时,如果不知道如何下手,sklearn也给出了一个学习路线如下,根据数据多少来选择不同的算法。

案例:快速入门sklearn–以鸢尾花数据为例
①加载数据以及数据可视化

在sklearn中自带了一些数据集想iris是鸢尾花的数据集、boston是波士顿房价数据、后边还有cancer癌症的相关数据以及diabetes糖尿病的相关数据,笔记中使用的是iris莺尾花的相关数据集。
分别打印一下data、DESCR、Target_name可以看到莺尾花的相关数据、该数据集的描述以及标签名称。

其中莺尾花的标签主要有三个:[‘setosa’ ‘versicolor’ ‘virginica’]
②数据可视化
做数据可视化需要预先加载pandas、matplotlib库,来展示一下iris内的数据。


从图中可以看出鸢尾花被划分为三个品种根据萼片长度和宽度以及花瓣长度和宽度(iris数据集中共有150条数据)sepal为萼片,petal为花瓣,target为属于哪种花。
③数据的预处理
数据的预处理主要包括:数据标准化、归一化、二值化、非线性转换、缺失值处理等。主要来提高模型的精确度。下边做的是将样本特征值线性放缩到零到1之间。

打印数据之后可以发现数据都在0-1之间了

④模型训练
主要来训练一个模型对三种花进行分类,根据上面的学习图,推荐使用支持向机(SVM)来训练模型。


④模型的评估
在sklearn.metrics模块中针对不同的问题类型提供了各种评估指标,可以采用交叉验证的评估方法避免过度拟合。
K折交叉验证,例如K=10

以此类推做十次验证,取九个数据作为训练集 剩一个为训练集。
生成分类模型评估报告

结果为

precision:精度 recall:召回率 f1:得分 support:支持度
关于这几个参数的详细解释::https://www.jianshu.com/p/5df19746daf9
之后进行交叉验证模型评分

得出来的结果求平均值即可

⑤模型的优化
优化模型的方法主要有网格搜索法、随机搜索法、模型特定交叉验证、信息准则优化。网格搜索法指的是在超参空间中对每种情况进行交叉验证评分选出最好的组合。GridSearchCV存在的意义就是自动套餐,只要把参数输入就可以给出最优结果和参数

使用优化之后的分类器得出来的结果

⑥数据的持久化
数据的持久化就是保存模型,以后还可以继续拿出来用,主要有pickle(可以存到磁盘或者存为字符串)和joblib(只能存到磁盘)的方法。

使用joblib存储的文件格式一定要存为pkl的形式。
总结
学习完爬虫之后获取信息的手段已经具备了,接下来就是要应用数据进行分析了,我的打算是开始学习sklearn、pandas、matplotlib相关的库能做一些简单的分析以及可视化,之后慢慢的再去介绍一些像jieba、snownlp、nltk之类的自然语言库,再往后后在慢慢打算去学习一些其他的东西。爬虫的最后一篇scrapy正在准备中,但是我觉得有过有时间的同学们可以了解一些java的面向对象编程的方法,因为在scrapy中ItemPipeline中的Item就是使用的面向对象编程的思想,将数据封装成一个对象进行传递、过滤等等的操作。Java是一门非常严谨且标准的语言,并且运用非常广泛,JavaEE用在Web开发中、JavaME可以用在开发AndroidApp。
