机器学习sklearn(学习笔记1)

(此文纯记录自己的学习进度。)

一、sklearn库的学习

1、机器学习的认识:

如果一个程序可以在任务T上,随着经验E的增加,效果P也可以随之增加,则称这个程序可以从经验中学习。
机器学习sklearn(学习笔记1)

机器学习分类

机器学习可以分为以下两类

监督学习(Supervised learning)

通过大量已知的输入和输出相配对的数据,让计算机从中学习出规律,从而能针对一个新的输入作出合理的输出预测。

比如,有大量不同特征(面积、地理位置、朝向、开发商)的房子的价格数据,通过学习这些数据,能预测已知特征的房子价格。这种称为回归学习(Regression learning)即输出结果是一个具体的数值,它的预测模型是一个连续的函数。

再比如我们有大量的邮件,每个邮件都已经标记是否是垃圾邮件。通过学习这些已标记的邮件数据,最后得出一个模型,这个模型对新的邮件,能准确地判断出该邮件是否是垃圾邮件,这种称为分类学习(Classfication learning),即输出结果是离散的,即要么输出1表示是垃圾邮件,要么输出0表示不是垃圾邮件。

无监督学习(Unsupervised learning)

通过学习大量的无标记数据,去分析出数据本身的内在特点和结构。

比如有大量的用户购物的历史记录信息,从数据中去分析用户的不同类别。针对这个问题,最终能划分几个类别?每个类别有哪些特点?这个称为聚类(Clustering)。与分类学习不同,分类问题是已知哪几种类别,聚类问题是不知道有哪些类别。答案是未知的,需要利用算法从数据里挖掘出数据的特点和结构。

两类机器学习的区别:

有监督学习的训练数据里有已知的结果来监督,无监督学习的训练数据里没有结果监督,不知道到底能分析出什么样的结果出来。

2、sklearn库官方文档结构:

tutorials:是一个官方教程,可以理解快速上手教程,但是看完感觉并没有很快。
user guide(用户指南):这里对每一个算法有详细的介绍
API:这里是库调用的方法
FAQ:常见问题
contributing:贡献,还介绍最新的一些代码,功能。

官方文档:
链接: [ https://scikit-learn.org/stable/index.html ]

3、sklearn库的结构:

机器学习sklearn(学习笔记1)

(1)结构:

由图中,可以看到库的算法主要有四类:分类,回归,聚类,降维。其中:
常用的回归:线性、决策树、SVM、KNN ;集成回归:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees
常用的分类:线性、决策树、SVM、KNN,朴素贝叶斯;集成分类:随机森林、Adaboost、GradientBoosting、Bagging、ExtraTrees
常用聚类:k均值(K-means)、层次聚类(Hierarchical clustering)、DBSCAN
常用降维:LinearDiscriminantAnalysis、PCA

定义解释:
线性回归:

机器学习包含监督学习、非监督学习、以及强化学习三大部分。监督学习又分为分类和回归两大类。线性回归模型就属于监督学习里的回归模型。
参考资料:[ https://www.cnblogs.com/GuoJiaSheng/p/3928160.html ]
参考资料:[ https://blog.csdn.net/sinat_20623345/article/details/78879379 ]

决策树模型:

机器学习包含监督学习、非监督学习、以及强化学习三大部分。监督学习又分为分类和回归两大类。决策树模型就属于监督学习里的分类模型。
参考资料:[ https://blog.csdn.net/sinat_20623345/article/details/78916411 ]
参考资料:[ https://blog.csdn.net/weixin_36586536/article/details/80468426 ]

逻辑回归:

机器学习包含监督学习、非监督学习、以及强化学习三大部分。监督学习又分为分类和回归两大类。Logistic回归模型就属于监督学习里的分类模型。
参考资料:[ https://blog.csdn.net/sinat_20623345/article/details/78896356 ]

(2)图片中隐含的操作流程:

这个流程图代表:蓝色圆圈内是判断条件,绿色方框内是可以选择的算法。你可以根据自己的数据特征和任务目标去找到一条自己的操作路线,一步步做就好了。

二、机器学习主要步骤中sklearn应用

1、数据集:

面对自己的任务肯定有自己的数据集,但是对于学习来说,sklearn提供了一些数据,主要有两部分:现在网上一些常用的数据集,可以通过方法加载;另一种sklearn可以生成数据,可以生成你设定的数据。(设定规模,噪声等)
机器学习sklearn(学习笔记1)

2、数据预处理:

数据预处理包括:降维、数据归一化、特征提取和特征转换(one-hot)等,这在sklearn里面有很多方法,具体查看api。

3、选择模型并训练:

sklearn里面有很多的机器学习方法,可以查看api找到你需要的方法,sklearn统一了所有模型调用的api,使用起来还是比较简单。

4,模型评分:

(1)模型的score方法:

最简单的模型评估方法是调用模型自己的方法:

    #预测
    y_predict = knnClf.predict(x_test)
    print("score on the testdata:",knnClf.score(x_test,y_test))

(2)sklearn的指标函数:

库提供的一些计算方法,常用的有classification_report方法

(3)sklearn也支持自己开发评价方法

5、模型的保存与恢复:

模型的保存与恢复可以采用python的pickle,也可以用joblib的方法。

from sklearn import svm
from sklearn import datasets

clf=svm.SVC()
iris=datasets.load_iris()
X,y=iris.data,iris.target
clf.fit(X,y)

#method1:pickle
import pickle
#save
with open('save/clf.pickle','wb')as f:
    pickle.dump(clf,f)

#restore
with open('save/clf.pickle','rb') as f:
    clf=pickle.load(f)
    print(clf.predict(X[0:1]))


#method2:joblib
from sklearn.externals import joblib
#save
joblib.dump(clf,'save/clf.pkl')
clf3=joblib.load('save/clf.pkl')
print(clf3.predict(X[0:1]))

参考来源:
[ https://blog.csdn.net/u014248127/article/details/78885180 ]
[ https://www.cnblogs.com/chenxygx/p/9056702.html ]