一.指標的一些簡單的介紹
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