线性回归学习

article/2025/9/21 15:02:32

以下笔记来自于黑马程序员十三天入门机器学习

线性回归

  • 1. 什么是线性回归
    • 1.1 定义与公式
    • 1..2 线性回归的特征与⽬标的关系分析
  • 2 线性回归api初步使⽤
    • 2.1 线性回归API
    • 2.2 举例
    • 2.3 步骤分析
    • 2.4 代码过程
  • 3.线性回归的损失和优化
    • 3.1 损失函数
    • 3.2 优化算法
      • 3.2.1 正规⽅程
        • 3.2.1.1什么是正规方程
        • 3.2.1.2 正规⽅程求解举例
        • 3.2.1.3 正规⽅程的推导
      • 3.2.2 梯度下降(Gradient Descent)
        • 3.2.2.1 什么是梯度下降
        • 3.2.2.2 梯度的概念
        • 3.2.2.3 梯度下降举例
        • 3.2.2.4 梯度下降(Gradient Descent) 公式
    • 3.3 梯度下降和正规⽅程的对⽐
      • 3.3.1 两种方法对比
      • 3.3.2 算法选择依据:
  • 4.梯度下降⽅法介绍
    • 4.1 详解梯度下降算法
      • 4.1.2 梯度下降法的推导流程
  • 5.线性回归api再介绍
  • 6 ⽋拟合和过拟合
    • 6.1 定义
    • 6.2 原因以及解决办法
    • 6.3 正则化
      • 6.3.1 什么是正则化
      • 6.3.2 正则化类别
  • 7.正则化线性模型
    • 7.1 Ridge Regression (岭回归, ⼜名 Tikhonov regularization)
    • 7.2 Lasso Regression(Lasso 回归)
    • 7.3 Elastic Net (弹性⽹络)
  • 8.线性回归的改进-岭回归
    • 8.1 API
    • 8.2 观察正则化程度的变化, 对结果的影响?
    • 8.3 波⼠顿房价预测
  • 9.模型的保存和加载
    • 9.1 sklearn模型的保存和加载API
    • 9.2 线性回归的模型保存加载案例

1. 什么是线性回归

1.1 定义与公式

线性回归(Linear regression)是利⽤回归⽅程(函数)对⼀个或多个⾃变量(特征值)和因变量(⽬标值)之间关系进⾏建模的⼀种分析⽅式
在这里插入图片描述

  • 线性回归⽤矩阵表示举例
    在这里插入图片描述

1…2 线性回归的特征与⽬标的关系分析

线性回归当中主要有两种模型, ⼀种是线性关系, 另⼀种是⾮线性关系。 在这⾥我们只能画⼀个平⾯更好去理解, 所以都⽤单个特征或两个特征举例⼦。

  • 线性关系
    • 单变量线性关系:
      在这里插入图片描述
    • 多变量线性关系
      在这里插入图片描述
  • ⾮线性关系
    在这里插入图片描述

2 线性回归api初步使⽤

2.1 线性回归API

  • sklearn.linear_model.LinearRegression()
    • LinearRegression.coef_: 回归系数

2.2 举例

在这里插入图片描述

2.3 步骤分析

1.获取数据集
2.数据基本处理(该案例中省略)
3.特征⼯程(该案例中省略)
4.机器学习
5.模型评估(该案例中省略)

2.4 代码过程

  • 导⼊模块
from sklearn.linear_model import LinearRegression
  • 构造数据集
x = [[80, 86],
[82, 80],
[85, 78],
[90, 90],
[86, 82],
[82, 90],
[78, 80],
[92, 94]]
y = [84.2, 80.6, 80.1, 90, 83.2, 87.6, 79.4, 93.4]
  • 机器学习-- 模型训练
# 实例化API
estimator = LinearRegression()
# 使⽤fit⽅法进⾏训练
estimator.fit(x,y)
estimator.coef_
estimator.predict([[100, 80]])

3.线性回归的损失和优化

3.1 损失函数

在这里插入图片描述

3.2 优化算法

如何去求模型当中的W, 使得损失最⼩? (⽬的是找到最⼩损失对应的W值)

  • 线性回归经常使⽤的两种优化算法
    • 正规⽅程
    • 梯度下降法

3.2.1 正规⽅程

3.2.1.1什么是正规方程

在这里插入图片描述

3.2.1.2 正规⽅程求解举例

在这里插入图片描述

3.2.1.3 正规⽅程的推导

  • 推导⽅式⼀:
    把该损失函数转换成矩阵写法:
    在这里插入图片描述

3.2.2 梯度下降(Gradient Descent)

3.2.2.1 什么是梯度下降

梯度下降法的基本思想可以类⽐为⼀个下⼭的过程。
假设这样⼀个场景:
⼀个⼈被困在⼭上, 需要从⼭上下来(i.e. 找到⼭的最低点, 也就是⼭⾕)。 但此时⼭上的浓雾很⼤, 导致可视度很低。因此, 下⼭的路径就⽆法确定, 他必须利⽤⾃⼰周围的信息去找到下⼭的路径。 这个时候, 他就可以利⽤梯度下降算法来帮助⾃⼰下⼭。
具体来说就是, 以他当前的所处的位置为基准, 寻找这个位置最陡峭的地⽅, 然后朝着⼭的⾼度下降的地⽅⾛, (同理, 如果我们的⽬标是上⼭, 也就是爬到⼭顶, 那么此时应该是朝着最陡峭的⽅向往上⾛) 。 然后每⾛⼀段距离, 都反复采⽤同⼀个⽅法, 最后就能成功的抵达⼭⾕。
在这里插入图片描述

3.2.2.2 梯度的概念

在这里插入图片描述

3.2.2.3 梯度下降举例

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

3.2.2.4 梯度下降(Gradient Descent) 公式

在这里插入图片描述

    1. 为什么梯度要乘以⼀个负号?

梯度前加⼀个负号, 就意味着朝着梯度相反的⽅向前进! 我们在前⽂提到, 梯度的⽅向实际就是函数在此点上升最快的⽅向! ⽽我们需要朝着下降最快的⽅向⾛, ⾃然就是负的梯度的⽅向, 所以此处需要加上负号我们通过两个图更好理解梯度下降的过程
在这里插入图片描述

3.3 梯度下降和正规⽅程的对⽐

3.3.1 两种方法对比

在这里插入图片描述

3.3.2 算法选择依据:

在这里插入图片描述

4.梯度下降⽅法介绍

4.1 详解梯度下降算法

在这里插入图片描述

4.1.2 梯度下降法的推导流程

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

5.线性回归api再介绍

  • sklearn.linear_model.LinearRegression(fit_intercept=True)
    • 通过正规⽅程优化
    • 参数
      • fit_intercept: 是否计算偏置
    • 属性
      • LinearRegression.coef_: 回归系数
      • LinearRegression.intercept_: 偏置
  • sklearn.linear_model.SGDRegressor(loss=“squared_loss”, fit_intercept=True, learning_rate =‘invscaling’,eta0=0.01)
    • SGDRegressor类实现了随机梯度下降学习, 它⽀持不同的loss函数和正则化惩罚项来拟合线性回归模型。
    • 参数:
      • loss:损失类型
        • loss=”squared_loss”: 普通最⼩⼆乘法
      • fit_intercept: 是否计算偏置
      • learning_rate : string, optional
        • 学习率填充
        • ‘constant’: eta = eta0
        • ‘optimal’: eta = 1.0 / (alpha * (t + t0)) [default]
        • ‘invscaling’: eta = eta0 / pow(t, power_t)
          • power_t=0.25:存在⽗类当中
        • 对于⼀个常数值的学习率来说, 可以使⽤learning_rate=’constant’ , 并使⽤eta0来指定学习率。
    • 属性:
      • SGDRegressor.coef_: 回归系数
      • SGDRegressor.intercept_: 偏置

6 ⽋拟合和过拟合

6.1 定义

在这里插入图片描述

6.2 原因以及解决办法

在这里插入图片描述

6.3 正则化

6.3.1 什么是正则化

在这里插入图片描述

  • 如何解决?
    在这里插入图片描述

6.3.2 正则化类别

在这里插入图片描述

7.正则化线性模型

7.1 Ridge Regression (岭回归, ⼜名 Tikhonov regularization)

在这里插入图片描述

7.2 Lasso Regression(Lasso 回归)

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

7.3 Elastic Net (弹性⽹络)

在这里插入图片描述

8.线性回归的改进-岭回归

8.1 API

在这里插入图片描述

8.2 观察正则化程度的变化, 对结果的影响?

在这里插入图片描述

8.3 波⼠顿房价预测

def linear_model3():
"""
线性回归:岭回归
:return:
"""
# 1.获取数据
data = load_boston()
# 2.数据集划分
x_train, x_test, y_train, y_test = train_test_split(data.data, data.target, random_state=22)
# 3.特征⼯程-标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)
# 4.机器学习-线性回归(岭回归)
estimator = Ridge(alpha=1)
# estimator = RidgeCV(alphas=(0.1, 1, 10))
estimator.fit(x_train, y_train)
# 5.模型评估
# 5.1 获取系数等值
y_predict = estimator.predict(x_test)
print("预测值为:\n", y_predict)
print("模型中的系数为:\n", estimator.coef_)
print("模型中的偏置为:\n", estimator.intercept_)
# 5.2 评价
# 均⽅误差
error = mean_squared_error(y_test, y_predict)
print("误差为:\n", error)

9.模型的保存和加载

9.1 sklearn模型的保存和加载API

  • from sklearn.externals import joblib
    • 保存: joblib.dump(estimator, ‘test.pkl’)
    • 加载: estimator = joblib.load(‘test.pkl’)

9.2 线性回归的模型保存加载案例

def load_dump_demo():
"""
模型保存和加载
:return:
"""
# 1.获取数据
data = load_boston()
# 2.数据集划分
x_train, x_test, y_train, y_test = train_test_split(data.data, data.target, random_state=22)
# 3.特征⼯程-标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)
# 4.机器学习-线性回归(岭回归)
# # 4.1 模型训练
# estimator = Ridge(alpha=1)
# estimator.fit(x_train, y_train)
# #
# 4.2 模型保存
# joblib.dump(estimator, "./data/test.pkl")
# 4.3 模型加载
estimator = joblib.load("./data/test.pkl")
# 5.模型评估
# 5.1 获取系数等值
y_predict = estimator.predict(x_test)
print("预测值为:\n", y_predict)
print("模型中的系数为:\n", estimator.coef_)
print("模型中的偏置为:\n", estimator.intercept_)
# 5.2 评价
# 均⽅误差
error = mean_squared_error(y_test, y_predict)
print("误差为:\n", error)

http://chatgpt.dhexx.cn/article/oUgM8ViR.shtml

相关文章

机器学习:线性回归

一、线性回归简介 1 线性回归应用场景 房价预测销售额度预测贷款额度预测 举例: 2 什么是线性回归 2.1 定义与公式 线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。 特点&…

多元线性回归推导过程

接上篇:人工智能开篇 常用算法一 多元线性回归详解1 此次我们来学习人工智能的第一个算法:多元线性回归.文章会包含必要的数学知识回顾,大部分比较简单,数学功底好的朋友只需要浏览标题,简单了解需要哪些数学知识即可. 本章主要包括以下内容 数学基础知识回顾 什么是多元线…

线性回归详解(2)机器学习

多元线性回归   在介绍完机器学习的相关概念后,我们先从机器学习中最简单入门的线性回归模型出发,并且从最底层的数学讲起,完全深入理解机器学习的本质。 1 基本概念 线性回归是机器学习中有监督机器学习下的一种算法。 回归问题主要关注的…

【机器学习】线性回归

线性回归学习内容: 线性回归(上)Linear Regression引言:看看就行线性回归概念算法求解步骤Part1.建立模型基本形式Part2.选定距离衡量方程Part3.学习模型参数 评价指标: . . . R 2 ...R^2 ...R2 线性回归(下…

详解使用pytorch实现线性回归时,线性回归方程,损失函数,梯度下降优化算法之间的关系

One-dimensional linear regression 给定数据集(点集),我们希望优化出一个好的函数f(x),使得f(xi) wxib。有均方差损失函数可得E(w,b)。如下图: 为什么要求出outputs&…

【Matlab学习手记】多元非线性回归

介绍两种方法做多元非线性回归:lsqcurvefit、Adagrad 法。 lsqcurvefit是Matlab提供的内置函数,用于基于最小二乘的曲线拟合问题;Adagrad是一种基于梯度的迭代方法,特点在步长不固定,随着迭代次数变化。 clear; clc;…

线性回归原理----简单线性回归、多元线性回归

回归分析是用来评估变量之间关系的统计过程。用来解释自变量X与因变量Y的关系。即当自变量X发生改变时,因变量Y会如何发生改变。 线性回归是回归分析的一种,评估的自变量X与因变量Y之间是一种线性关系,当只有一个自变量时,成为简…

线性回归算法 php实现,PHP实现多元线性回归模拟曲线算法步骤详解

这次给大家带来PHP实现多元线性回归模拟曲线算法步骤详解,PHP实现多元线性回归模拟曲线算法的注意事项有哪些,下面就是实战案例,一起来看一下。 多元线性回归模型: y b1x1 b2x2 b3x3 ...... bnxn; 我们根据一组数据&#xff1a…

统计学考研笔记:回归方程计算题

题1: 利用某公司的年销售额Y与个人支配收入,商品价格,广告费的历年统计数据,研究Y关于,,的回归关系,得到回归方程为: Y 3573.879 6.687-25.051 9.316 (1981.741) (1.192) (24.515) (2.73…

一元一次线性回归详解

一元一次线性回归 作为机器学习的入门课程,线性回归是我们必须要学习的第一个算法。今天我们就来详细的讲解一下线性回归。 在讲解之前,我们先来解释以下几个问题。 可为线性?线性是指自变量x和因变量y之间是线性的关系,即图像…

线性回归之梯度下降详解

在了解梯度下降(Gradient Descent)之前,我们先要知道有关线性回归的基本知识,这样可以进一步的加深对梯度下降的理解,当然梯度下降(Gradient Descent)并不单单只能进行回归预测,它还…

【机器学习】线性回归——最小二乘法(理论+图解+公式推导)

🌠 『精品学习专栏导航帖』 🐳最适合入门的100个深度学习实战项目🐳🐙【PyTorch深度学习项目实战100例目录】项目详解 数据集 完整源码🐙🐶【机器学习入门项目10例目录】项目详解 数据集 完整源码&…

线性回归例题解析

前往我的主页以获得更好的阅读体验线性回归例题解析 - DearXuan的主页https://blog.dearxuan.com/2022/03/23/%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92%E4%BE%8B%E9%A2%98%E8%A7%A3%E6%9E%90/ 例题 调查某市出租车使用年限和该年支出维修费用(万元)&#…

windows计算机管理快捷键,windows系统常见快捷键大全

熟练电脑键盘快捷键有助于提供办公效率,但是对于一些职场的电脑小白来说,什么都不会,几分钟的工作需要几个小时来完成,如何在职场上立足呢?下面小编给您整理了常见的windows快捷键大全,让你的高效办公&…

桌面计算机休眠快捷键,电脑休眠唤醒快捷键

设置电脑休眠唤醒快捷键的方法 1、在电脑桌面空白处点击右键。 2、在新建列表中选择新建快捷方式。 3、在键入对象的位置栏中,输入rundll32.exe? powrprof.dll,SetSuspendState Hibernate。创建一个休眠命令。 4、把快捷方式的名字改为休眠即可。 设置电脑休眠键的…

修改PyCharm的快捷键

有的电脑系统中,按下一些PyCharm组合键可能会无法起作用,这是因为可能和当前系统的其他软件快捷键发生了冲突。 大家有需要可以更改下默认的快捷键,下面以Ctrl空格的自动代码补齐快捷键为例,方法是选择File——Settings&#xff…

调整计算机屏幕亮度快捷键,笔记本亮度调节的快捷键

现在小伙伴们使用电脑的时间越来越多,长时间使用电脑,对我们的眼睛伤害很大。建议大家使用一两个小时的电脑就要停下来休息10分钟,眺望远方。除此之外,电脑屏幕亮度的控制也是很有必要的。但是笔记本亮度调节的快捷键怎么使用呢&a…

立创eda快捷键

默认的快捷键列表如下。共用快捷键文档类型快捷键功能所有Space(空格键)旋转所选图形所有鼠标右键长按右键拖动画布;操作过程中按一下右键释放操作’所有Left向左滚动或左移所选图形所有Right向右滚动或右移所选图形所有Up向上滚动或上移所选图形所有Down向下滚动或…

Pycharm 常用快捷键 for Mac

格式化代码: command option L多行合并一行:control shift J快速注释/取消注释:crtl /鼠标指针上方插入空行:command option enter鼠标指针下方插入空行:shift enter上下移动选中代码: shift opti…

常用Windows快捷键大全

0. 简要 要将电脑玩的溜,快捷键是必须要掌握的技能,本文汇总了一些常用的快捷键,相信加以练习,一定能提高你的工作效率。 笔者将常用快捷键分为四个系列,如下所示: Win 系列Ctrl 系列Alt 系列F 系列 本…