定義:經過一個或者多個自變量與因變量之間進行建模的迴歸分析。其中能夠爲一個或者多個自變量之間的線性組合。python
一元線性迴歸:涉及到的變量只有一個
多元線性迴歸:變量兩個或以上算法
通用公式:h(w) = w0 + w1x1 + w2x2 + ....= wTx
其中w,x 爲矩陣:wT=(w0, w1, w2) x=(1,x1, x2)Tapi
最小二乘法之梯度降低
函數
from sklearn.datasets import load_boston from sklearn.linear_model import LinearRegression, SGDRegressor from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_squared_error def mylinear(): """ 線性迴歸預測房價 :return: None """ # 1. 獲取數據 lb = load_boston() # 2. 分割數據集到訓練集和測試集 x_train, x_test, y_train, y_test = train_test_split(lb.data, lb.target, test_size=0.25) print(y_train, y_test) # 3. 進行標準化處理(特徵值和目標值都必須標準化處理) # 實例化兩個標準化API,特徵值和目標值要用各自fit # 特徵值 std_x = StandardScaler() x_train = std_x.fit_transform(x_train) x_test = std_x.transform(x_test) std_y = StandardScaler() y_train = std_y.fit_transform(y_train) y_test = std_y.transform(y_test) # 4. estimator預測 # 4.1 正規方程求解預測結果 lr = LinearRegression() lr.fit(x_train, y_train) print(lr.coef_) y_lr_predict = std_y.inverse_transform(lr.predict(x_test)) print('正規方程測試集裏面每一個房子的預測價格:', y_lr_predict) print('正規方程的均方偏差:',mean_squared_error(std_y.inverse_transform(y_test),y_lr_predict)) # 4.1 梯度降低進行梯度預測 sgd = SGDRegressor() lr.fit(x_train, y_train) print(sgd.coef_) y_sgd_predict = std_y.inverse_transform(sgd.predict(x_test)) print('梯度降低測試集裏面每一個房子的預測價格:', y_sgd_predict) print('梯度降低的均方偏差:', mean_squared_error(std_y.inverse_transform(y_test), y_sgd_predict)) return None if __name__ == '__main__': mylinear()
均方偏差 (Mean Squared Error MSE) 評價機制性能
梯度降低 | 正規方程 |
---|---|
須要選擇學習率 | 不須要 |
須要屢次迭代 | 一次運算得出 |
當特徵數量大時也能較好使用 | 須要計算(xTx)-1,運算量大 |
適用於各類類型的模型 | 只適用於線性模型 |