之前已經創建好線性迴歸器,並且用模型對測試數據進行了預測,接下來最重要的就是如何評價迴歸器的模擬效果。在模型評價的相關內容中,用誤差表示實際值與模型預測值之間的差值。
常見的衡量回歸器擬合效果的指標如下:
平均絕對誤差:這是給定數據集的所有數據點的絕對誤差平均。
均方誤差:這是給定數據集的所有數據點的誤差的平方的平均值。這是最流行的指標之一。
中位數絕對誤差:這是給定數據集的所有數據點的誤差的中位數。這個指標的主要優點是可以消除異常值的干擾。測試數據集中的單個壞點不會影響整個誤差指標,均值誤差指標會受到異常點的影響。
解釋方差分:這個分數用於衡量我們的模型對數據集波動的解釋能力。如果得分1.0分,那麼表明我們的模型是完美的。
R方得分:這個指標讀作“R方”,是指確定性相關係數,用於衡量模型對未知樣本預測的效果。最好的得分是1.0,值也可以是負數。
scikit-learn裡面有一個模塊,提供了計算所有指標的功能,接著編寫《 》的代碼:
#計算迴歸準確性
import sklearn.metrics as sm
#計算平均絕對誤差
print ("Mean absolute error=", round(sm.mean_absolute_error(y_test,y_test_pred),2))
#計算均方誤差
print ("Mean squared error=", round(sm.mean_squared_error(y_test,y_test_pred),2))
#計算中位數絕對誤差
print ("Median absolute error=", round(sm.median_absolute_error(y_test,y_test_pred),2))
#計算解釋方差分
print ("Explained variance error=", round(sm.explained_variance_score(y_test,y_test_pred),2))
#計算R方得分
print ("R2 score error=", round(sm.r2_score(y_test,y_test_pred),2))
輸出結果如下:
('Mean absolute error=', 0.54)
('Mean squared error=', 0.38)
('Median absolute error=', 0.54)
('Explained variance error=', 0.68)
('R2 score error=', 0.68)
每個指標都描述得面面俱到是非常乏味的,因此只選擇一兩個指標來評估我們的模型。通常的做法是儘量保證均方誤差最低,而且解釋方差分最高。
模型訓練結束後,需要把模型保存成文件,下次再使用的時候,只要簡單地加載就可以了。代碼如下:
#保存模型
import cPickle as pickle
output_model_file = 'saved_model.pkl'
with open(output_model_file,'w') as f:
pickle.dump(linear_regressor,f)
迴歸模型會保存在saved_model.pkl文件中。下面看看如何加載使用它,代碼如下所示:
#加載使用模型
with open(output_model_file,'r') as f:
model_linregr = pickle.load(f)
y_test_pred_new = model_linregr.predict(x_test)
print("New mean absolute error = ", round(sm.mean_absolute_error(y_test,y_test_pred_new),2))
輸出結果如下:
('New mean absolute error = ', 0.54)
相關閱讀:
《 》
《 》
《 》
閱讀更多 數據分析和挖掘 的文章