線性回歸方法--衡量線性回歸算法的指標


一.指標的一些簡單的介紹

1.介紹

分類算法中使用分類准確度衡量分類的准確度,那么在回歸算法中,我們怎樣來衡量回歸的准確度呢?

由線性回歸的方法我們可以得到這樣的衡量標准

 

 2.改進方法一:使用均方根誤差

#當比較兩個線性回歸算法的好壞的標准的時候,誤差和樣本的數量存在有關系的時候,我們可以先采用這個方法進行相應的改進

 

 3.改進方法二:使用RMSE(均方根誤差)

#存在問題2:結果為衡量指標值的平方,值較大時平方翻倍了影響較大,與量綱有關?
#改進:開方后量綱一致

 

3.改進方法三:采用MAE的方法

#平均絕對誤差

二.使用代碼實現上述問題

1.數據加載以及預處理過程

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

#采用sklearn中的Boston房價的數據集來進行測試
boston = datasets.load_boston()

boston.feature_names  #查看有哪些特征參數
#array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD','TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')


x = boston.data[:,5]  #只取房間的的數量作為特征參數
y = boston.target

plt.scatter(x,y)
plt.show()

由上圖可知,有些數據在y軸上的數據等於50,這些數據可能是設置的區間決定的,因此,我們需要剔除這些數據

x = x[y < 50.0]
y = y[y < 50.0]


plt.scatter(x,y)
plt.show()

2.使用簡單的線性回歸來進行運算

#在jupyter notebook中進行相關的計算
from sklearn.model_selection import train_test_split

x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=666)


%run D:\project\sk-learn\Linear_regression\simple_linear_regression.py #加載自己寫好的程序

reg2=SimpleLinearRegression2()  #實例化過程

reg2.fit(x_train,y_train)  #訓練數據的過程(擬合過程)

reg2.a_ #得到參數a的值  :7.8608543562689555

reg2.b_#得到參數b的值:-27.459342806705543

#數據可視化的過程
plt.scatter(x_train,y_train)
plt.plot(x_train,reg2.predict(x_train),color='red')
plt.show()

 

 

 這樣我們就得到了相應的擬合函數圖像

y_predict = reg2.predict(x_test) #我們把預測值用一個變量來進行賦值

3.計算相應的指標參數

#MSE(均方誤差)
mse_test = np.sum((y_predict - y_test)**2) / len(y_test)
#24.156602134387438


RMSE(均方根誤差)
from math import sqrt
rmse_test = sqrt(mse_test)
#4.914936635846635

#MAE
mae_test= np.sum(np.absolute(y_predict - y_test))/len(y_test)
#3.5430974409463873

4.使用sklearn的方法來計算指標參數

from sklearn.metrics import mean_squared_error
from sklearn.metrics import mean_absolute_error

#mse
mean_squared_error(y_test,y_predict)
#24.156602134387438

#mae
mean_absolute_error(y_test,y_predict)
#3.5430974409463873

5.線性回歸最重要的指標參數 R Squared

1.介紹

 

 

2.代碼實現

#自己簡單是實現
1 - mean_squared_error(y_test,y_predict)/np.var(y_test)
#0.6129316803937322



#sklearn中內置方法
from sklearn.metrics import r2_score
r2_score(y_test,y_predict)

#0.6129316803937324

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM