导入线性回归中用到的模块
sklean中的线性回归模型,在liner_model模块中,常用有线性回归、SGD回归,和岭回归等不同的分类器:LinearRegression,SGDRegressor,Ridge。不同分类器在计算时采用的方式不一样,LinearRegression使用的是解析解,通过矩阵计算的方式求解参数,SGD采用梯度下降的方式求解参数,ridge是采用L2的正则化惩罚项。虽然不同的分类器在数据求解上不一样,但是在api的使用中是展示上是一致的,可以通用。
在sklearn的liner_model模块中,包含了线性回归、SGD回归,和岭回归等不同的分类器:LinearRegression,SGDRegressor,Ridge
sklearn自带数据集 datasets
选择模块model_selection,导入 train_test_split 测试训练集分离方法
预处理模块preprocessing ,导入数据标准化的处理方法,选择StandardScaler标准化方法
模块metrics,导入计算均方误差的方法 mean_squared_error
from sklearn.linear_model import LinearRegression,SGDRegressor,Ridge from sklearn import datasets from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.metrics import mean_squared_error
线下回归采用波士顿房价数据进行测试datasets.load_boston()
bostdon = datasets.load_boston() x_train,x_test,y_train,y_test = train_test_split(bostdon.data,bostdon.target,random_state=1) #标准化 transfer = StandardScaler() x_train = transfer.fit_transform(x_train) x_test = transfer.transform(x_test) #线下分类器 print('线性回归') lin_model = LinearRegression() lin_model.fit(x_train,y_train) lin_y = lin_model.predict(x_test) print(lin_model.coef_) print(lin_model.intercept_) print('均方误差',mean_squared_error(y_test,lin_y)) # 采用梯度下降SGD的分类器 print('SGD') sgd_model = SGDRegressor() sgd_model.fit(x_train, y_train) sgd_y = sgd_model.predict(x_test) print(sgd_model.coef_) print(sgd_model.intercept_) print('均方误差',mean_squared_error(y_test,sgd_y)) # 采用岭回归分类器 print('岭回归') r_model = Ridge() r_model.fit(x_train, y_train) r_y = r_model.predict(x_test) print(r_model.coef_) print(r_model.intercept_) print('均方误差',mean_squared_error(y_test,r_y))
通过训练模型的 coef_ intercept_属性,可以查看模型的参数和截距,通过均方误差,还看模型的数据离散程度。