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


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())

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

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

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()
