1.广义线性模型
以下是回歸相關的一系列方法,目標值y是輸入變量x的線性組合。用數學表達:是預測值
在這個模塊中,我們定義向量 w = (w_1,...,w_p) 為 coef_ ,math:w_0 表示為 intercept_
1.1. 普通最小二乘法
LinearRegression?用系數 :math:w = (w_1,...,w_p)?來擬合一個線性模型, 使得數據集實際觀測數據和預測數據(估計值)之間殘差平方和最小。數學形式可表達為:
LinearRegression 模型會調用 fit 方法來擬合X,y(X為輸入,y為輸出).并且會把擬合的線性模型的系數 w 存儲到成員變量 coef_?
? ? ? ?對于普通最小二乘問題,其系數估計依賴模型各項相互獨立。當各項是相關的,設計矩陣(Design Matrix) x 的各列近似線性相關, 那么,設計矩陣會趨向于奇異矩陣,這會導致最小二乘估計對于隨機誤差非常敏感,會產生很大的方差。這種 多重共線性(multicollinearity) 的情況可能真的會出現,比如未經實驗設計收集的數據。
1.2.普通最小二乘復雜度
? ? ? ? ?這種方法通過對矩陣 X 奇異值分解(SVD)的方式來計算最小二乘的解。如果 X 是一個(n, p)大小的矩陣,那么代價為?,假設?.import numpy as np import matplotlib.pyplot as plt from sklearn import datasets, linear_model# Load the diabetes dataset diabetes = datasets.load_diabetes()# Use only one feature diabetes_X = diabetes.data[:, np.newaxis, 2]# Split the data into training/testing sets diabetes_X_train = diabetes_X[:-20] diabetes_X_test = diabetes_X[-20:]# Split the targets into training/testing sets diabetes_y_train = diabetes.target[:-20] diabetes_y_test = diabetes.target[-20:]# Create linear regression object regr = linear_model.LinearRegression()# Train the model using the training sets regr.fit(diabetes_X_train, diabetes_y_train)# The coefficients print('Coefficients: \n', regr.coef_) # The mean square error print("Residual sum of squares: %.2f"% np.mean((regr.predict(diabetes_X_test) - diabetes_y_test) ** 2)) # Explained variance score: 1 is perfect prediction print('Variance score: %.2f' % regr.score(diabetes_X_test,diabetes_y_test))# Plot outputs plt.xlabel("diabetes_X_test") plt.ylabel("diabetes_y_test") plt.scatter(diabetes_X_test, diabetes_y_test, color='black') plt.plot(diabetes_X_test, regr.predict(diabetes_X_test), color='blue',linewidth=3) plt.show()
總結
- 上一篇: matplotlib 绘图-barCha
- 下一篇: 2.Ridge Regression 岭