from sklearn.linear_model import LinearRegression
linreg = LinearRegression()
# 拟合训练集
linreg.fit(train_X, train_Y)
# 打印模型的系数
print (linreg.intercept_)
print (linreg.coef_)
# 其中的一组输出为
# [ 458.39877507]
# [[-1.97137593 -0.23772975 0.05834485 -0.15731748]]
# 线性模型 Y = theta0 + theta1 * x1 + theta2 * x2 + theta3 * x3 + theta4 * x4
# PE = 458.39877507 - 1.97137593 * AT - 0.23772975 * V + 0.05834485 * AP - 0.15731748 * RH
# 对于线性回归模型, 一般使用均方误差(Mean Squared Error,MSE)或者
# 均方根误差(Root Mean Squared Error,RMSE)在测试集上的表现来评该价模型的好坏.
test_Y_pred = linreg.predict(test_X)
print "测试集MSE:", mean_squared_error(test_Y, test_Y_pred)
print "测试集RMSE:", np.sqrt(mean_squared_error(test_Y, test_Y_pred))
# 可以通过交叉验证来持续优化模型, 下面采用的是10折交叉验证
from sklearn.model_selection import cross_val_predict
Y_pred = cross_val_predict(linreg, X, Y, cv=10)
print ("交叉验证MSE:", mean_squared_error(Y, Y_pred))
print ("交叉验证RMSE:", np.sqrt(mean_squared_error(Y, Y_pred)))
|