利用python第三方sklearn进行简单的回归、分类应用

一、基础知识

        1.sklearn全名scikit-learn,在pycharm中添加时应搜索全名,是基于python语言的机器学习工具包。本文sklearn版本为1.1.2,使用其提供的一些功能进行实现回归预测、分类等任务。

        2.pandas是另一个在数据处理中十分重要的库,通过它可以维护一个表格,储存需要的数据,就像Excel表格一样。其中只有一个维度的数据结构是Series,二维是DataFrame。简单的回归学习中,自变量值可以是二维的,因变量往往只是一维。如下图前四列(“ch1”至“ch4”列)可作为自变量,最后一列为因变量。每行的四个自变量对应着最后一个因变量。这个表格的数据有统计工作得来,其内在关系则是我们要进行探索的。

ch1 ch2 ch3 ch4 y
0 1.1 0.1 10 23 1
1 2.2 0.2 20 45 2
2 3.3 0.3 39 34 3
3 4.4 0.4 39 23 4
4 5.5 0.5 54 23 5.5
5 6.6 0.5 34 54 6
6 7.7 0.5 231 3 7
7 8.8 0.5 43 45 8
8 9.9 0.8 23 2 9

二、主要类和函数

        sklearn等第三方库通过提供函数和类简化编写程序时的工作,要实现某项功能只需要引用相应函数即可。

        本文展示由sklearn实现的过程逻辑回归、支持向量机回归、决策树、多层感知机、自适应提升、线性回归、线性判别、K邻近回归·、朴素贝叶斯、随机森林、极端树、梯度提升算法。导入相关函数代码如下

# 以下为回归方法
from sklearn.svm import SVR # 支持向量机回归
from sklearn.ensemble import AdaBoostRegressor # 自适应提升回归
from sklearn.ensemble import RandomForestRegressor # 随机森林回归
from sklearn.ensemble import ExtraTreesRegressor # 极端树回归
from sklearn.ensemble import GradientBoostingRegressor # 梯度提升回归
from sklearn.linear_model import Ridge # 岭回归
from sklearn.linear_model import Lasso # Lasso回归
from sklearn.linear_model import ElasticNet # 弹性网回归
from sklearn.linear_model import LassoLars # LassoLars回归
from sklearn.linear_model import BayesianRidge # 贝叶斯岭回归
from sklearn.linear_model import LinearRegression # 线性回归
from sklearn.tree import DecisionTreeRegressor # 决策树回归
from sklearn.neural_network import MLPRegressor # 多层感知机回归
# 以下为分类方法
from sklearn.linear_model import LogisticRegression # 逻辑回归
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis # 线性判别
from sklearn.naive_bayes import GaussianNB #高斯朴素贝叶斯分类

       亦可通过其他方法导入,如直接导入sklearn,每次通过打点访问到下属的类或函数。在上述代码中sklearn之后通过点连接的均为sklearn的类,我们从这些类中导入了其中下一级的类。

        值得注意的是逻辑回归是一个分类方法。其实名字并不重要,重要的是它以及后两个分类方法在训练时,训练集的y值需要是整数。而回归可以是任意实数。通过下方代码,将一个Series转为整型。

y_test.astype('int')

       三、模型训练

        对于回归和分类,主要任务是通过已有数据,训练好一个模型,并将这个模型应用于一些知道自变量的数据上,来预测其因变量值或分类结果。这是典型的监督学习。

        注意,上文刚刚导入了一些用于机器学习的类。从面向对象编程的角度出发,此时应实例化一些类,以进行下一步工作。这个实例化的过程就是创建一些空白的模型,这些模型还没有被训练。实例化的指令很简单,只需给出一个名字即可:

model_1=LinearRegression()

        model_1就是新建好的支持向量机回归模型,同理我们可以实例化其他空白的机器学习模型。

        训练的命令也很简单,通过打点的方式,访问类中函数即可。至于函数是怎么实现的,每个模型有着不同算法,这是偏向数学与数理统计的内容,此处不做介绍。

        fit()函数可以帮助我们训练大多数模型,几乎所有模型都有这个函数。其传入的参数依次为自变量和因变量。训练好的模型,可以通过predict函数进行预测的工作,只需传入自变量。

x_train = np.array([1,2,3,4,5,6]).reshape(-1,1)
y_train = np.array([4,5,6,7,8,9]).reshape(-1,1)
x_test= np.array([7,8]).reshape(-1,1)

model_1.fit(x_train,y_train)
model_1.predict(x_test)

       此时,最后一句函数会返回预测值如下。

[[10.]
 [11.]]

        应注意部分模型对输入值的形式有着特殊要求,如分类模型y必须为整数等,需要进行特殊的数据预处理。

        四、模型保存

        对于sklearn学习得到的模型,可以使用第三方库joblib进行保,通过下方代码可以将训练好的线性回归模型保存为同目录下的pkl文件。

import joblib
joblib.dump(model_1,'model01.pkl')

        在另一个python文件中导入joblib可以带入模型。

import joblib
model=joblib.load('model01.pkl')

        此时得到的model即为刚刚训练好的模型,在新的文件中无需导入sklearn即可使用其进行预测以及其他操作。

        

你可能感兴趣的:(python,sklearn,回归)