机器学习:线性回归

本文深入探讨线性回归模型,包括单变量和多变量线性回归,讲解如何通过正规方程和梯度下降法求解最优参数,以最小化预测误差。并通过波士顿房价数据集实例,展示了使用sklearn库进行线性回归预测的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

线性回归

预测结果与真实值是有一定的误差

一个特征:单变量

在这里插入图片描述
多个特征:多变量

在这里插入图片描述
预测结果和真实值肯定存在偏差

损失函数(误差大小)

在这里插入图片描述
如何去求模型当中的W,使得损失最小(目的是找到最小损失对应的W值):

最小二乘法之正规方程:

在这里插入图片描述
在这里插入图片描述

通常方法:

最小二乘法之梯度下降:

我们以单变量中的w0,w1为例子:
在这里插入图片描述
在这里插入图片描述理解:沿着这个函数下降的方向找,最后就能找到山谷的最低点,然后
更新W值

使用:面对训练数据规模十分庞大的任务

在这里插入图片描述
cost为损失函数,w1为权重。梯度下降方向和下降率,就是学习率。一次一次下降然后进行迭代。

在这里插入图片描述

sklearn线性回归正规方程、梯度下降API

sklearn.linear_model.LinearRegression
正规方程

sklearn.linear_model.SGDRegressor
梯度下降

LinearRegression、SGDRegressor:

sklearn.linear_model.LinearRegression()
普通最小二乘线性回归

coef_:回归系数

sklearn.linear_model.SGDRegressor( )
通过使用SGD最小化线性模型

coef_:回归系数

线性回归实例

1、sklearn线性回归正规方程、梯度下降API

2、波士顿房价数据集分析流程

波士顿房价数据案例分析流程:

1、波士顿地区房价数据获取

2、波士顿地区房价数据分割

3、训练与测试数据标准化处理

4、使用最简单的线性回归模型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
def mylinear():
    """线性回归预测房子价格"""
    #获取数据
    lb=load_boston()

    #分割数据集的到训练集和测试集
    x_train,x_test,y_train,y_test=train_test_split(lb.data,lb.target,test_size=0.25)
    print(y_train,y_test)

    #进行标准化处理
    #特征值和目标值是都必须进行标准化处理,实例化两个标准化api
    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.reshape(-1,1))
    y_test=std_y.transform(y_test.reshape(-1,1))

    #estimator预测
    #正规方程求解方式预测结果
    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))

    #梯度下降进行房价预测
    sgd=SGDRegressor()
    sgd.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()

在这里插入图片描述在这里插入图片描述

回归性能评估

在这里插入图片描述
sklearn回归评估API:

sklearn.metrics.mean_squared_error

mean_squared_error(y_true, y_pred)
均方误差回归损失
y_true:真实值
y_pred:预测值
return:浮点数结果

注:真实值,预测值为标准化之前的值

总结正规方程和梯度下降:

在这里插入图片描述

线性回归总结:
特点:线性回归器是最为简单、易用的回归模型。
从某种程度上限制了使用,尽管如此,在不知道特征之
间关系的前提下,我们仍然使用线性回归器作为大多数
系统的首要选择。
小规模数据:LinearRegression(不能解决拟合问题)以及其它
大规模数据:SGDRegressor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值