线性回归学习笔记

定义

线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。

损失函数

正规方程
梯度下降

是一个迭代的过程,一步一步找到最小值

sklearn中的API

波士顿房价分析实例

线性回归需要对特征值和目标值都进行标准化

import numpy as np
from sklearn.linear_model import LinearRegression,SGDRegressor
from sklearn.datasets import load_boston
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
#导入均方误差,评价回归
from sklearn.metrics import mean_squared_error,r2_score

#获取波士顿房价数据
bs = load_boston()


#数据分割
x_train,x_test,y_train,y_test = train_test_split(bs.data,bs.target,test_size=0.25)

#进行标准化,特征值和目标值都需要进行标准化
#特征值标准化
#print('标准化前:',x_test)
stand_x = StandardScaler()
x_train = stand_x.fit_transform(x_train)
x_test = stand_x.transform(x_test)
#print(x_test)

#目标值标准化,要将目标值变为二维的,reshape(-1, 1)是将数据变成n行,1列,n是根据原始数据计算的
stand_y = StandardScaler()
y_train = stand_y.fit_transform(y_train.reshape(-1, 1))
y_test = stand_y.transform(y_test.reshape(-1, 1))

#estimator预测
#正规方程求解方式预约结果
lr = LinearRegression()
lr.fit(x_train,y_train)
#回归系数w
print('正规方程计算回归系数:',lr.coef_)
print('正规方程计算常数项:',lr.intercept_)
#预测标准化之后的房屋价格
y_predict_after_zg = lr.predict(x_test)

print('正规方程预测标准化之后的房屋价格:',y_predict_after_zg)

#预测标准化之前的房屋价格,inverse_transform是将数据转换为标准化之前的数据
y_predict_before_zg = stand_y.inverse_transform(lr.predict(x_test))

print('正规方程预测标准化之前的房屋价格:',y_predict_before_zg)
print('正规方程的均方误差是:',mean_squared_error(stand_y.inverse_transform(y_test),y_predict_before_zg))
#梯度下降法预测房价,ravel()方法将数组维度拉成一维数组,将目标值转换,否则梯度下降法计算时会发出警告信息
sgd = SGDRegressor()
sgd.fit(x_train,y_train.ravel())

#回归系数w
print('梯度下降法计算回归系数:',sgd.coef_)
print('梯度下降法计算常数项:',sgd.intercept_)
#预测标准化之后的房屋价格
y_predict_after_sgd = sgd.predict(x_test)

print('梯度下降法预测标准化之后的房屋价格:',y_predict_after_sgd)

#预测标准化之前的房屋价格,inverse_transform是将数据转换为标准化之前的数据
y_predict_before_sgd = stand_y.inverse_transform(sgd.predict(x_test))

print('梯度下降法预测标准化之前的房屋价格:',y_predict_before_sgd)

print('梯度下降法的均方误差是:',mean_squared_error(stand_y.inverse_transform(y_test),y_predict_before_sgd))
print(r2_score(stand_y.inverse_transform(y_test),y_predict_before_sgd))
print(lr.score(x_test,y_test))
print(sgd.score(x_test,y_test))

print('影响房价特征排序:',np.argsort(sgd.coef_))
#特征值名字
print('特征值名字:',bs.feature_names)
print('影响房价特征排序:',bs.feature_names[np.argsort(sgd.coef_)])

要将目标值变为二维的,reshape(-1, 1)是将数据变成n行,1列,n是根据原始数据计算的。

回归性能评估-均方误差

对比

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值