線性迴歸又稱最小二乘法。其中:python
預測值能夠表示爲輸入參數在各個參數下的線性組合:數組
最小二乘法的核心爲計算預測值與真實值向量差的2範數的平方的最小值函數
在線性迴歸中,調用linear_model模塊中類linearRegreesion類的fit方法(最小二乘法)對訓練數據進行預測得出各個參數測試
w0爲截距項,python中調用爲intercept_屬性spa
其他參數爲參數向量,python中調用爲coef_code
線性迴歸模型的例子以下:orm
1 #導入須要的模塊 2 import matplotlib.pyplot as plt #可視化模塊 3 import numpy as np #矩陣處理模塊 4 from sklearn import datasets, linear_model #數據集,線性模型 5 from sklearn.metrics import mean_squared_error, r2_score #均方偏差,方差得分 6 7 # Load the diabetes dataset 加載糖尿病數據 8 diabetes = datasets.load_diabetes() 9 10 11 # Use only one feature,導入糖尿病數據集的兩列,即表示特徵的數據集X列,和觀測值y 12 diabetes_X = diabetes.data[:, np.newaxis, 2] 13 14 # Split the data into training/testing sets,將全部數據分爲訓練集和測試集,後20個數據爲測試集,其他爲訓練集 15 diabetes_X_train = diabetes_X[:-20] 16 diabetes_X_test = diabetes_X[-20:] 17 18 # Split the targets into training/testing sets 將觀測值也分爲訓練集和測試集,個數同X,分別對應 19 diabetes_y_train = diabetes.target[:-20] 20 diabetes_y_test = diabetes.target[-20:] 21 22 # Create linear regression object 創建線性迴歸的對象 23 regr = linear_model.LinearRegression() 24 25 # Train the model using the training sets 使用對象的fit方法對訓練集的(x,y)進行線性擬合 26 regr.fit(diabetes_X_train, diabetes_y_train) 27 28 # Make predictions using the testing set 輸出y的預測值 29 diabetes_y_pred = regr.predict(diabetes_X_test) 30 31 # The coefficients 輸出參數向量 32 print('Coefficients: \n', regr.coef_) 33 # The mean squared error 輸出測試集的均方偏差,並保留兩位小數 34 print("Mean squared error: %.2f" 35 % mean_squared_error(diabetes_y_test, diabetes_y_pred)) 36 # Explained variance score: 1 is perfect prediction 輸出測試集的方差得分,並保留兩位小數 37 print('Variance score: %.2f' % r2_score(diabetes_y_test, diabetes_y_pred)) 38 39 # Plot outputs 畫出測試集的散點圖及採用預測參數得出線性迴歸線 40 plt.scatter(diabetes_X_test, diabetes_y_test, color='black') 41 plt.plot(diabetes_X_test, diabetes_y_pred, color='blue', linewidth=3) 42 43 #顯示x,y軸 44 plt.xticks(()) 45 plt.yticks(()) 46 #顯示plot圖 47 plt.show()
均方偏差的數學意義:反應估計量與被估計量的差別,用來指定在多目標迴歸問題中,若干個目標變量的損失或得分以什麼樣的形式平均起來對象
這個模塊在sklearn.metrics裏 eg: from sklearn.metrics import mean_squared_errorblog
mean_squared_error(y_true, y_pred,
sample_weight=None,
multioutput='uniform_average')
均方偏差爲計算y_true, y_pred 兩個向量或數組的偏差,
sample_weight:每組數據的權重向量,可理解爲各數據的機率向量
multioutput有兩個字符串形式的選擇或數組
默認爲multioutput='uniform_average'表示全部數據輸出的權重都相同,
multioutput='raw_values'表示全部迴歸目標的預測損失或預測得分都會被單獨返回一個shape是(n_output)的數組中
函數返回值爲一個非負的浮點數值或數組(每一個值對應一個單獨的目標)
方差得分:R2方法 表示用預測值估計與用均值估計的狀況下,看能好多少,
上式表示R2範圍在[0,1]之間,當預測值接近均值時,R2值爲0,表示預測不必,能夠直接取均值,值爲1時,表示預測值與真實值相等