分類算法中使用分類準確度衡量分類的準確度,那么在回歸算法中,我們怎樣來衡量回歸的準確度呢?
由線性回歸的方法我們可以得到這樣的衡量標準
#當比較兩個線性回歸算法的好壞的標準的時候,誤差和樣本的數(shù)量存在有關系的時候,我們可以先采用這個方法進行相應的改進
#存在問題2:結果為衡量指標值的平方,值較大時平方翻倍了影響較大,與量綱有關?#改進:開方后量綱一致
#平均絕對誤差
import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasets#采用sklearn中的Boston房價的數(shù)據(jù)集來進行測試boston = datasets.load_boston()boston.feature_names #查看有哪些特征參數(shù)#array(['CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', 'DIS', 'RAD','TAX', 'PTRATIO', 'B', 'LSTAT'], dtype='<U7')x = boston.data[:,5] #只取房間的的數(shù)量作為特征參數(shù)y = boston.targetplt.scatter(x,y)plt.show()
由上圖可知,有些數(shù)據(jù)在y軸上的數(shù)據(jù)等于50,這些數(shù)據(jù)可能是設置的區(qū)間決定的,因此,我們需要剔除這些數(shù)據(jù)
x = x[y < 50.0]y = y[y < 50.0]plt.scatter(x,y)plt.show()
#在jupyter notebook中進行相關的計算from sklearn.model_selection import train_test_splitx_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) #訓練數(shù)據(jù)的過程(擬合過程)reg2.a_ #得到參數(shù)a的值 :7.8608543562689555reg2.b_#得到參數(shù)b的值:-27.459342806705543#數(shù)據(jù)可視化的過程plt.scatter(x_train,y_train)plt.plot(x_train,reg2.predict(x_train),color='red')plt.show()
這樣我們就得到了相應的擬合函數(shù)圖像
y_predict = reg2.predict(x_test) #我們把預測值用一個變量來進行賦值
#MSE(均方誤差)mse_test = np.sum((y_predict - y_test)**2) / len(y_test)#24.156602134387438RMSE(均方根誤差)from math import sqrtrmse_test = sqrt(mse_test)#4.914936635846635#MAEmae_test= np.sum(np.absolute(y_predict - y_test))/len(y_test)#3.5430974409463873
from sklearn.metrics import mean_squared_errorfrom sklearn.metrics import mean_absolute_error#msemean_squared_error(y_test,y_predict)#24.156602134387438#maemean_absolute_error(y_test,y_predict)#3.5430974409463873
#自己簡單是實現(xiàn)1 - mean_squared_error(y_test,y_predict)/np.var(y_test)#0.6129316803937322#sklearn中內置方法from sklearn.metrics import r2_scorer2_score(y_test,y_predict)#0.6129316803937324
聯(lián)系客服