使用Scikit-Learn和Pandas学习线性回归模型优化

 时间:2024-10-12 12:54:26

1、首先我么需要下载公开的数据(循环发电厂的数据)供我们跑机器学习的线性模型,该数据的属性主要有以下5个列属性:1)AT(温度),2) V(压力),3) AP(湿度),4) RH(压强),5)PE(输出电力)。

使用Scikit-Learn和Pandas学习线性回归模型优化
使用Scikit-Learn和Pandas学习线性回归模型优化
使用Scikit-Learn和Pandas学习线性回归模型优化

2、其次,明确我们的研究目的,就是使用这些数据得到一个线性的关系,对应PE是样本输出,利用AT/V/AP/RH这4个是样本特征属性, 得到一个线性回归模型,即:PE=θ_0+θ_1*AT+θ_2*V+θ_3*AP+θ_4*RH,我们需要通过数据学习的θ_0、θ_1、θ_2、θ_3、θ_4这5个参数。

3、现在我们需要对下载的数据进行整理1)对数据文件进行解压缩2)将xls文件另存为csv文件供我们进行下一步的处理

使用Scikit-Learn和Pandas学习线性回归模型优化

4、导入相关的Python依赖库,读取数据文件import matplotlib.pyplot as pltimport numpy as npimport pandas as pdfrom sklearn import datasets, linear_model# read_csv里面的参数是csv在你电脑上的路径data = pd.read_csv('F:\ML\CCPP\CCPP\Folds5x2_pp.csv')#测试打印前5行数据print(data.head())

使用Scikit-Learn和Pandas学习线性回归模型优化

5、识别数据的维度信息,通过data.shape可以识别出数据为(9568, 5):说明数据有9568个样本,每个样本数据有5列。

使用Scikit-Learn和Pandas学习线性回归模型优化

6、构建数据的样本特征我们用AT, V,AP和RH这4个列作为样本特征属性,PE作为特征输出:#样本特征x = data[['AT', 'V', 'AP', 'RH']]print(x.head())#样本输出y = data[['PE']]print(y.head())

使用Scikit-Learn和Pandas学习线性回归模型优化

7、划分数据模型的训练集和测试集我们把x和y的数据样本分为两部分数据集,A憧钏荭拜部分模型训练集,B部分是模型测试集,如下:from sklearn.cross_validation imp泠贾高框ort train_test_splitx_train, x_test, y_train, y_test = train_test_split(x, y, random_state=1)print(x_train.shape)print(y_train.shape)print(x_test.shape)print(y_test.shape)输出结果为:(7176, 4)(7176, 1)(2392, 4)(2392, 1)可以看到大概75%的数据到训练集,25%的数据到测试集

使用Scikit-Learn和Pandas学习线性回归模型优化

8、用scikit-learn的线性模型来拟合我们需要求解的问题,scikit-learn的线性回归算法使用的是最小二乘法来实现的。#运行缏堋垌胯线性回归模型进行训练集数据的拟合训练from sklearn.linear_model import LinearRegressionlinearReg = LinearRegression()linearReg.fit(x_train, y_train)#拟合后可以得到模型系数结果:print(linearReg.intercept_)print(linearReg.coef_)最后输出的结果如下:intercept_:[460.05727267]coef_:[[-1.96865472 -0.2392946 0.0568509 -0.15861467]]这样我们就得到了在步骤2里面的需要求得的5个系数值:PE=θ_0+θ_1*AT+θ_2*V+θ_3*AP+θ_4*RH   也就是说PE和其他4个变量的关系如下:PE=460.05727267-1.96865472∗AT-0.2392946∗V+0.0568509∗AP-0.15861467∗RH

使用Scikit-Learn和Pandas学习线性回归模型优化

9、有了我们的训练集输出模型,我么需要评估我们的模型的好害仑喵茏坏程度,对于线性回归来说,我们用均方差(Mean Squared Error, MSE)或者均方根差(Root Mean Squared Error, RMSE)在测试集上的表现来评价模型的好坏。我么需要根据测试集的x特征数据预预测的y数据,最后根据测试集y特征值与预测的特征值进行比对,输出我们模型的MSE和RMSE,MSE说明了我们的模型预测值和测试集y的差异。------------------#模型拟合测试集y_pred = linearReg.predict(x_test)from sklearn import metrics# 用scikit-learn计算MSEprint("MSE:")print(metrics.mean_squared_error(y_test, y_pred))# 用scikit-learn计算RMSEprint("RMSE")print(np.sqrt(metrics.mean_squared_error(y_test, y_pred)))

使用Scikit-Learn和Pandas学习线性回归模型优化

10、如何优化我们的模型我们可以使用AT, V,AP和RH中的2个或3个进行交叉验证,看看使用2个或3个特征属性值得到的拟合模型,最后的MSE的值差别 ,MSE值越小说明该模型越准确,这样我们就可以进行模型的优化,获得到最好的模型。

11、最后我们通过画图的方式显示真实值和预测值的变化关系,离中间的直线y=x直接越近的点代表预测损失越低。将测量值和预测值进行图表展现:y_pred = linearReg.predict(x)plt.figure()plt.title("Model Star")plt.xlabel("Measured")plt.ylabel("Predicted")plt.grid(True)plt.plot(y,y_pred,'r.')plt.show()

使用Scikit-Learn和Pandas学习线性回归模型优化
  • WPS Excel统计函数:FORECAST
  • 怎么用excel进行回归分析
  • 如何用Minitab17进行显示描述性统计分析
  • spss教程:多独立样本的非参数检验
  • 箱线图怎么画
  • 热门搜索
    我读书我快乐手抄报 端午手抄报 手抄报花边 元旦手抄报 节水手抄报简单又漂亮 古诗手抄报 关于植树节的手抄报 春节的手抄报 数学手抄报图片 清明手抄报内容