一。sklearnAPI 正规方程和梯度下降
1 from sklearn.datasets import load_boston 2 from sklearn.model_selection import train_test_split 3 from sklearn.preprocessing import StandardScaler 4 from sklearn.linear_model import LinearRegression,SGDRegressor #正规方程,梯度下降 5 from sklearn.metrics import mean_squared_error #均方误差 6 def linear1(): 7 """ 8 正规方程对波士顿房价进行预测 9 :return: 10 """ 11 #1.导入数据 12 boston=load_boston() 13 #print(boston) 14 #2.划分数据集 15 x_train,x_test,y_train,y_test=train_test_split(boston.data,boston.target,random_state=22) 16 #3.特征工程:标准化 17 transfer=StandardScaler() 18 x_train=transfer.fit_transform(x_train) 19 x_test=transfer.transform(x_test) 20 #4.预估器 21 estimator=LinearRegression() 22 estimator.fit(x_train,y_train) 23 #5.得出模型 24 print("正规方程权重系数: ",estimator.coef_) 25 print("正规方程偏置: ",estimator.intercept_) 26 #6.模型评估 27 y_predict=estimator.predict(x_test) 28 error = mean_squared_error(y_test,y_predict) 29 print("正规方程均方误差: :",error) 30 31 def linear2(): 32 """ 33 梯度下降对波士顿房价进行预测 34 :return: 35 """ 36 #1.导入数据 37 boston=load_boston() 38 #print(boston) 39 #2.划分数据集 40 x_train,x_test,y_train,y_test=train_test_split(boston.data,boston.target,random_state=22) 41 #3.特征工程:标准化 42 transfer=StandardScaler() 43 x_train=transfer.fit_transform(x_train) 44 x_test=transfer.transform(x_test) 45 #4.预估器 46 estimator=SGDRegressor(learning_rate="constant",eta0=0.001,max_iter=10000) 47 estimator.fit(x_train,y_train) 48 #5.得出模型 49 print("梯度下降权重系数: ",estimator.coef_) 50 print("梯度下降偏置: ",estimator.intercept_) 51 #6.模型评估 52 y_predict=estimator.predict(x_test) 53 error = mean_squared_error(y_test,y_predict) 54 print("梯度下降均方误差: :",error) 55 if __name__ == "__main__": 56 linear1() 57 linear2()
二。 岭回归-带L2正则化的线性回归
在建立回归方程时加上正则化,解决过拟合问题。
from sklearn.linear_model import LinearRegression,SGDRegressor,Ridge #正规方程,梯度下降、
1 def linear3(): 2 """ 3 岭回归对波士顿房价进行预测 4 :return: 5 """ 6 #1.导入数据 7 boston=load_boston() 8 #print(boston) 9 #2.划分数据集 10 x_train,x_test,y_train,y_test=train_test_split(boston.data,boston.target,random_state=22) 11 #3.特征工程:标准化 12 transfer=StandardScaler() 13 x_train=transfer.fit_transform(x_train) 14 x_test=transfer.transform(x_test) 15 #4.预估器 16 estimator=Ridge() 17 estimator.fit(x_train,y_train) 18 #5.得出模型 19 print("岭回归权重系数: ",estimator.coef_) 20 print("岭回归偏置: ",estimator.intercept_) 21 #6.模型评估 22 y_predict=estimator.predict(x_test) 23 error = mean_squared_error(y_test,y_predict) 24 print("岭回归均方误差: :",error)