(笔记)sklean入门 3.1 线性回归

开学没时间,就直接放代码了。。。
image

线性回归器是最为简单、易用的回归模型。
从某种程度上限制了使用,尽管如此,在不知道特征之间关系的前提下,我们仍然使用线性回归器作为大多数系统的首要选择。

小规模数据:LinearRegression(不能解决拟合问题)以及其它

大规模数据:SGDRegressor

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 # 均方误差
lb = load_boston()

# 划分测试集
x_train, x_test, y_train, y_test = train_test_split(lb.data,lb.target,test_size=.25)

# 必须进行标准化处理
std_x = StandardScaler()
x_train = std_x.fit_transform(x_train)
x_test = std_x.fit_transform(x_test)

std_y = StandardScaler()
# 由于这里y为一个行向量,ndarray中为1维,需要reshape(-1,1)
# sklearn0.19中不知道有多少个样本, 每个样本只有一个目标值
y_train = y_train.reshape(-1,1)
y_test = y_test.reshape(-1,1)
y_train = std_y.fit_transform(y_train)
y_test = std_y.fit_transform(y_test.reshape(-1,1))

# 正规方程预测

lr = LinearRegression()
lr.fit(x_train,y_train)
y_lr_predict = lr.predict(x_test)
y_predict # 还需要inverse_transform利用之前的StandardScaler把标准化后的值逆转换
y_lr_predict = std_y.inverse_transform(y_lr_predict)

# 梯度下降进行房价预测,流程同上

sgd = SGDRegressor()
sgd.fit(x_train,y_train)
# 要把列向量y展平才不会报异常,对同一实例对象fit的效果为覆盖
y_train = y_train.ravel()
sgd.fit(x_train,y_train)
y_sgd_predict = sgd.predict(x_test)
y_sgd_predict = std_y.inverse_transform(y_sgd_predict)

#结果对比
print("正规方程测试集里面每个房子的预测价格:",y_lr_predict)
print("正规方程的均方误差:",mean_squared_error(std_y.inverse_transform(y_test),y_lr_predict))

print("梯度下降测试集里面每个房子的预测价格:",y_sgd_predict.reshape(-1,1))
print("梯度下降的均方误差:",mean_squared_error(std_y.inverse_transform(y_test),y_lr_predict))

image
image

posted @ 2021-09-23 21:04  Lecoww  阅读(89)  评论(0)    收藏  举报