线性回归(Linear regression)算法详解

用人话讲明白线性回归LinearRegression 目录 什么是回归 一元线性回归 损失函数 最小二乘估计 小结 1. 什么是回归 当我们学习一门新课程、接触一个新专业时,总会对该领域的专有名词感到困惑,甚至看完解释仍难以理解其含义。在我们一起学习machine learning的过程中,我会尽量对相关名词用“人话”做一遍解释,以减少学习的“痛苦感”。 譬如今天要学的线性“回归”,这个回归(regression)和我们平时说的“回归祖国”的回... 阅读详情

一、线性回归基础概念

1.1 什么是线性回归

线性回归是一种通过回归方程来建模自变量(特征值)与因变量(目标值)之间线性关系的分析方法。简单来说,它试图找到一条直线(或超平面),能够最佳地拟合数据点,从而实现对新数据的预测。

一元线性回归(单变量)的数学表达式为:

y = k x + b y = kx + b y=kx+b

其中, x x x 是特征(如房屋面积), y y y 是目标值(如房屋价格), k k k 是斜率, b b b 是截距。

k = 1 k=1 k=1, b = 0 b=0 b=0时的 y = k x + b y = kx + b y=kx+b:
在这里插入图片描述

多元线性回归(多变量)的表达式为:

y = w 1 x 1 + w 2 x 2 + . . . + w n x n + b y = w_1x_1 + w_2x_2 + ... + w_nx_n + b y=w1​x1​+w2​x2​+...+wn​xn​+b

其中, x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n x1​,x2​,...,xn​ 是多个特征(如房屋面积、房间数、地理位置等), w 1 , w 2 , . . . , w n w_1, w_2, ..., w_n w1​,w2​,...,wn​ 是对应的权重, b b b 是截距。

两个特征(两个 x x x ) w 1 = 1 w_1=1 w1​=1, w 2 = 1 w_2=1 w2​=1, b = 0 b=0 b=0 时的 y = w 1 x 1 + w 2 x 2 + b y = w_1x_1 + w_2x_2+ b y=w1​x1​+w2​x2​+b 的图像:
在这里插入图片描述
绘图代码:

import numpy as np
# 导入 NumPy 库,它是 Python 中用于科学计算的基础库,提供了高效的多维数组对象和处理这些数组的工具。
import matplotlib.pyplot as plt
# 导入 Matplotlib 库中的 pyplot 模块,它是一个用于创建各种可视化图形的接口,可用于绘制折线图、散点图等。
from mpl_toolkits.mplot3d import Axes3D  # 用于3D绘图
# 从 mpl_toolkits.mplot3d 模块中导入 Axes3D 类,该类用于创建三维图形。

# 设置中文字体和负号显示
plt.rcParams["font.family"] = ["SimHei"]
# 设置 Matplotlib 的字体为黑体,以便在图形中正确显示中文。
plt.rcParams["axes.unicode_minus"] = False
# 设置允许在坐标轴上正确显示负号。

# 设置权重和偏置
w1, w2 = 1, 1  # 权重
# 定义多元线性模型中的两个权重 w1 和 w2,这里都设置为 1。
b = 0               # 截距
# 定义多元线性模型中的截距 b,这里设置为 0。

# 创建 x1 和 x2 的网格数据
x1 = np.linspace(-10, 10, 100)
# 使用 NumPy 的 linspace 函数生成从 -10 到 10 之间均匀分布的 100 个点,作为特征 x1 的取值。
x2 = np.linspace(-10, 10, 100)
# 同样使用 linspace 函数生成从 -10 到 10 之间均匀分布的 100 个点,作为特征 x2 的取值。
x1_mesh, x2_mesh = np.meshgrid(x1, x2)
# 使用 NumPy 的 meshgrid 函数将 x1 和 x2 转换为二维网格矩阵,方便后续计算。

# 计算 y 值
y = w1 * x1_mesh + w2 * x2_mesh + b
# 根据多元线性模型的公式 y = w1 * x1 + w2 * x2 + b,计算对应的目标值 y。

# 创建 3D 图像
fig = plt.figure(figsize=(10, 7))
# 使用 plt.figure 函数创建一个新的图形对象,设置图形的大小为宽 10 英寸,高 7 英寸。
ax = fig.add_subplot(111, projection='3d')
# 在图形中添加一个子图,111 表示将图形划分为 1 行 1 列,当前子图为第 1 个,projection='3d' 表示创建一个三维子图。

# 绘制曲面
surf = ax.plot_surface(x1_mesh, x2_mesh, y, cmap='viridis', alpha=0.8)
# 使用 plot_surface 方法在三维子图中绘制曲面,x1_mesh 和 x2_mesh 是网格数据,y 是对应的目标值,cmap='viridis' 设置颜色映射为 'viridis',alpha=0.8 设置曲面的透明度为 0.8。

# 添加坐标轴标签
ax.set_xlabel('$x_1$', fontsize=12)
# 设置 x 轴的标签为 '$x_1$',字体大小为 12。
ax.set_ylabel('$x_2$', fontsize=12)
# 设置 y 轴的标签为 '$x_2$',字体大小为 12。
ax.set_zlabel('$y$', fontsize=12)
# 设置 z 轴的标签为 '$y$',字体大小为 12。

# 添加标题
ax.set_title('多元线性模型示意图:$y = w_1x_1 + w_2x_2 + b$', fontsize=14)
# 设置子图的标题为 '多元线性模型示意图:$y = w_1x_1 + w_2x_2 + b$',字体大小为 14。

# 添加颜色条(表示 y 值高低)
fig.colorbar(surf, shrink=0.6, aspect=10)
# 在图形中添加颜色条,用于表示 y 值的高低,shrink=0.6 表示将颜色条缩小为原来的 0.6 倍,aspect=10 表示颜色条的宽高比为 10。

# 显示图像
plt.show()
# 显示最终绘制的图形。

1.2 线性回归小例子

假设我们有一个简单的数据集,包含房屋面积和房屋价格的信息。我们想要通过房屋面积来预测房屋价格,这就是一个典型的一元线性回归问题。

我们假设房屋价格 y y y 和房屋面积 x x x 之间存在线性关系,即 y = k x + b y = kx + b y=kx+b,其中 k k k 是斜率, b b b 是截距。

现在我们有以下数据集:

房屋面积 ( x x x)房屋价格 ( y y y)
50100
60120
70140
80160

我们的目标是找到最佳的 k k k 和 b b b 值,使得预测值 y ^ = k x + b \hat{y} = kx + b y^​=kx+b 与真实值 y y y 之间的误差最小。常用的误差衡量方法是均方误差(MSE,MSE介绍),即 M S E = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 MSE = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1​∑i=1n​(yi​−y^​i​)2,其中 n n n 是样本数量。

通过最小化 MSE,我们可以得到最佳的 k k k 和 b b b 值。在这个简单的例子中,我们可以通过手动计算或者使用线性回归算法来找到 k = 2 k = 2 k=2, b = 0 b = 0 b=0,即 y = 2 x y = 2x y=2x ,此时回归曲线将会完全拟合样本,误差为 0。

假设此时输入一个样本,该样本 x = 75 x=75 x=75 ,真实值: y = 145 y=145 y=145 ,那么模型的预测值: y ^ = 150 \hat{y}=150 y^​=150,根据 M S E MSE MSE 计算公式即可计算出误差为 25。这样做能测试模型对未知数据的预测能力,揭示模型的泛化局限性,并为模型优化提供依据。这正是机器学习中训练 - 测试 - 验证流程的基础逻辑。

在这里插入图片描述
绘图代码:

import numpy as np
import matplotlib.pyplot as plt

# 设置中文字体和负号显示
plt.rcParams["font.family"] = ["SimHei"]  # 指定中文字体为黑体
plt.rcParams["axes.unicode_minus"] = False  # 确保负号正确显示

# 数据集:房屋面积 x 和对应的价格 y
x = np.array([50, 60, 70, 80])  # 房屋面积(平方米)
y = np.array([100, 120, 140, 160])  # 房屋价格(万元)

# 线性回归模型参数(假设已知)
k = 2  # 斜率,表示每增加1平方米面积,价格增加2万元
b = 0  # 截距,表示面积为0时的基础价格

# 计算预测值
y_pred = k * x + b  # 根据模型 y = 2x + 0 计算预测的价格
# 计算均方误差(MSE)
mse = np.mean((y - y_pred) ** 2)  # 误差平方的均值,衡量模型拟合程度

# 新增一个测试点 (75, 145)
x_new = 75  # 新房屋面积
y_true_new = 145  # 新房屋真实价格
y_pred_new = k * x_new + b  # 根据模型预测的新房屋价格

# 创建绘图窗口
fig, ax = plt.subplots(figsize=(8, 6))  # 创建8×6英寸的图表
# 绘制原始数据点(散点图)
ax.scatter(x, y, color='red', label='真实数据点')  # 用红色圆点表示原始数据
# 绘制新增数据点
ax.scatter(x_new, y_true_new, color='green', label='新增数据点', zorder=5)  # 用绿色圆点表示新增数据

# 绘制拟合直线 y = 2x
x_line = np.linspace(40, 90, 100)  # 在40-90范围内生成100个均匀分布的点
y_line = k * x_line + b  # 计算拟合直线上的对应点
ax.plot(x_line, y_line, color='blue', label=rf'拟合直线: $y = {k}x + {b}$')  # 用蓝色线绘制拟合直线

# 添加误差线(真实值与预测值之间的垂直线)
for i in range(len(x)):
    ax.plot([x[i], x[i]], [y[i], y_pred[i]], 'k--', lw=1)  # 用黑色虚线连接每个点的真实值和预测值

# 添加新增点的误差线
ax.plot([x_new, x_new], [y_true_new, y_pred_new], 'g--', lw=1.5, label='误差线')  # 绿色虚线表示新增点的误差

# 设置图表标题和坐标轴标签
ax.set_title(r'一元线性回归示例:房屋面积 vs 房屋价格', fontsize=14)  # 设置标题
ax.set_xlabel('房屋面积 $x$', fontsize=12)  # 设置x轴标签
ax.set_ylabel('房屋价格 $y$', fontsize=12)  # 设置y轴标签

# 显示 MSE 值
ax.text(45, 170, f'MSE = {mse:.2f}', fontsize=12, bbox=dict(facecolor='white', alpha=0.6))  # 在图表上标注MSE

# 显示新增点的预测值和真实值
ax.text(x_new + 1, y_true_new, f'(x={x_new}, y={y_true_new})', fontsize=10, color='green')  # 标注新增点的真实坐标
ax.text(x_new + 1, y_pred_new, f'$\hat{{y}} = {y_pred_new}$', fontsize=10, color='blue')  # 标注新增点的预测值

# 图例和网格
ax.legend(fontsize=12)  # 显示图例
ax.grid(True, linestyle='--', alpha=0.7)  # 添加网格线,增强可读性

# 设置坐标轴范围
ax.set_xlim(40, 95)  # 设置x轴范围
ax.set_ylim(80, 180)  # 设置y轴范围

# 优化布局并显示图像
plt.tight_layout()  # 自动调整布局,防止内容重叠
plt.show()  # 显示图表

二、sklearn 中线性回归的 API 和参数

2.1 安装sklearn

sklearn 即 scikit-learn,是 Python 中常用的机器学习库。以下为你介绍几种常见的下载安装方式:

使用 pip 安装

  1. 打开命令行工具:

    • 在 Windows 系统中,可以通过按下 Win + R 组合键,输入 cmd 并回车,打开命令提示符。

    • 在 macOS 和 Linux 系统中,可以打开终端应用程序。

  2. 执行安装命令:

在命令行中输入以下命令并回车:

pip install -U scikit-learn

这里的 -U 选项表示如果已经安装了 scikit-learn,则将其升级到最新版本。

  1. 验证安装:
    安装完成后,你可以在 Python 环境中验证是否安装成功。在命令行中输入 python 进入 Python 交互式环境,然后输入以下代码:
import sklearn
print(sklearn.__version__)

如果没有报错并能输出版本号,则说明安装成功。

使用 conda 安装

如果你使用的是 Anaconda 或 Miniconda 环境,那么可以使用 conda 来安装 scikit-learn。

  1. 打开 Anaconda Prompt 或终端:
    • 在 Windows 系统中,找到并打开 Anaconda Prompt。
    • 在 macOS 和 Linux 系统中,打开终端。
  2. 执行安装命令:
    在命令行中输入以下命令并回车:
conda install scikit-learn
  1. 验证安装:
    同样进入 Python 交互式环境,执行上述验证代码,确认是否安装成功。

2.2 LinearRegression

API 介绍:LinearRegression 是 sklearn 中用于实现普通最小二乘(最小二乘介绍)线性回归的类,它使用正规方程法来求解线性回归的参数。

参数解释:

  • fit_intercept:布尔值,默认为 True,表示是否计算截距。如果设置为 False,则不会计算截距。
  • normalize:布尔值,默认为 False,表示是否对输入数据进行归一化处理。
  • copy_X:布尔值,默认为 True,表示是否复制输入数据。
  • n_jobs:整数,默认为 None,表示用于计算的 CPU 核心数。

示例代码:

from sklearn.linear_model import LinearRegression
import numpy as np

# 生成示例数据
X = np.array([[50], [60], [70], [80]])
y = np.array([100, 120, 140, 160])

# 创建线性回归模型
lin_reg = LinearRegression()

# 训练模型
lin_reg.fit(X, y)

# 输出模型参数
print(f"斜率: {lin_reg.coef_[0]:.2f}, 截距: {lin_reg.intercept_:.2f}")

2.3 SGDRegresso

API 介绍:SGDRegressor 是 sklearn 中用于实现随机梯度下降(SGD,SGD介绍)回归的类,它通过迭代更新模型参数来最小化损失函数。

参数解释:

  • loss:字符串,默认为 'squared_loss',表示损失函数的类型,常见的有 'squared_loss'(均方误差)、'huber'(Huber 损失)等。
  • penalty:字符串,默认为 'l2',表示正则化的类型,常见的有 'l2'(L2 正则化)、'l1'(L1 正则化)等。
  • alpha:浮点数,默认为 0.0001,表示正则化的强度。
  • learning_rate:字符串,默认为 'invscaling',表示学习率的更新策略,常见的有 'constant'(固定学习率)、'invscaling'(递减学习率)等。
  • eta0:浮点数,默认为 0.01,表示初始学习率。

示例代码:

from sklearn.linear_model import SGDRegressor
import numpy as np

# 生成示例数据
X = np.array([[50], [60], [70], [80]])
y = np.array([100, 120, 140, 160])

# 创建随机梯度下降回归模型
sgd_reg = SGDRegressor(loss='squared_loss', learning_rate='constant', eta0=0.001)

# 训练模型
sgd_reg.fit(X, y)

# 输出模型参数
print(f"斜率: {sgd_reg.coef_[0]:.2f}, 截距: {sgd_reg.intercept_[0]:.2f}")

2.4 Lasso

API 介绍:Lasso 是 sklearn 中用于实现 L1 正则化线性回归的类,它可以用于特征选择。

参数解释:

  • alpha:浮点数,默认为 1.0,表示正则化的强度。
  • fit_intercept:布尔值,默认为 True,表示是否计算截距。
  • normalize:布尔值,默认为 False,表示是否对输入数据进行归一化处理。

示例代码:

from sklearn.linear_model import Lasso
import numpy as np

# 生成示例数据
X = np.array([[50], [60], [70], [80]])
y = np.array([100, 120, 140, 160])

# 创建 Lasso 回归模型
lasso_reg = Lasso(alpha=0.1)

# 训练模型
lasso_reg.fit(X, y)

# 输出模型参数
print(f"斜率: {lasso_reg.coef_[0]:.2f}, 截距: {lasso_reg.intercept_:.2f}")

2.5 Ridge

API 介绍:Ridge 是 sklearn 中用于实现 L2 正则化线性回归的类,它可以用于防止过拟合。

参数解释:

  • alpha:浮点数,默认为 1.0,表示正则化的强度。
  • fit_intercept:布尔值,默认为 True,表示是否计算截距。
  • normalize:布尔值,默认为 False,表示是否对输入数据进行归一化处理。

示例代码:

from sklearn.linear_model import Ridge
import numpy as np

# 生成示例数据
X = np.array([[50], [60], [70], [80]])
y = np.array([100, 120, 140, 160])

# 创建 Ridge 回归模型
ridge_reg = Ridge(alpha=0.1)

# 训练模型
ridge_reg.fit(X, y)

# 输出模型参数
print(f"斜率: {ridge_reg.coef_[0]:.2f}, 截距: {ridge_reg.intercept_:.2f}")

2.6 各个API的对比

API名称适用场景优点缺点示例场景
LinearRegression数据规模较小且特征数量不多,数据噪声小,无明显多重共线性基于正规方程法,能直接得到精确最优解,计算效率高数据规模大时计算复杂度高,可能导致内存不足或计算时间过长;存在多重共线性时易过拟合预测学生考试成绩,特征为学习时长、预习次数等,样本少且特征间无明显相关性
SGDRegressor数据规模非常大,需要在线学习采用随机梯度下降算法,内存占用少,计算速度快,适合在线学习收敛速度可能较慢,结果可能受初始值和学习率影响较大电商平台预测用户购买金额,每天产生大量用户行为数据
Lasso需要进行特征选择,数据集中部分特征对目标变量影响较小能通过L1正则化使部分不重要特征系数变为零,实现自动特征筛选当特征之间存在较强相关性时,可能无法很好地保留所有重要特征基因数据分析,有成千上万个基因特征,只有少数与疾病相关
Ridge数据存在多重共线性,普通线性回归易过拟合L2正则化可将特征系数收缩到接近零但不为零的值,缓解多重共线性,提高泛化能力不能进行特征选择,所有特征都会保留一定的权重房地产价格预测,房屋面积、房间数量、使用年限等特征间有较强相关性

三、使用 sklearn 实现线性回归

3.1 程序概述

本程序演示了使用Python实现线性回归的完整流程,包括数据生成、模型训练和可视化展示。程序通过生成带噪声的模拟数据,使用scikit-learn库进行线性回归拟合,并通过matplotlib库可视化拟合结果,直观展示了线性回归模型的工作原理。

3.2 核心功能

  1. 数据生成模块

    • 基于真实线性关系 y = 2.5 x + 10 y = 2.5x + 10 y=2.5x+10 生成基础数据
    • 添加高斯噪声(均值0,标准差25)模拟真实观测误差
    • 使用固定随机种子确保结果可复现
  2. 模型训练模块

    • 使用scikit-learn的LinearRegression类实现最小二乘法拟合
    • 自动计算最优斜率和截距参数
    • 支持多维特征输入格式处理(reshape操作)
  3. 可视化模块

    • 绘制带噪声的原始数据点
    • 绘制真实线性关系(蓝色实线)
    • 绘制模型拟合的线性关系(绿色虚线)
    • 直观对比真实参数与拟合参数差异

3.3 关键技术细节

  1. 数据处理

    • 使用 np.linspace 生成均匀分布的特征数据
    • 通过 np.random.normal 添加符合高斯分布的随机噪声
    • 使用 reshape(-1, 1) 将一维数组转换为二维特征矩阵(sklearn要求)
  2. 模型参数

    • model.coef_:获取模型学习到的斜率参数
    • model.intercept_:获取模型学习到的截距参数
    • 拟合结果自动存储在模型实例中

3.4 程序运行结果

运行程序后,将生成一个包含以下元素的图表:

  • 红色散点:带噪声的观测数据点
  • 蓝色实线:真实的线性关系(无噪声)
  • 绿色虚线:模型拟合的线性关系
  • 图例中标注了真实参数与拟合参数

在这里插入图片描述

通过对比蓝色实线与绿色虚线,可以直观理解噪声对模型拟合的影响。在本示例中,即使数据包含噪声,线性回归模型仍能较好地逼近真实参数。

利用线性回归演示过拟合和正则化:网页连接

3.5 代码结构

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# 设置中文字体和负号显示
plt.rcParams["font.family"] = ["SimHei"]  # 指定中文字体为黑体
plt.rcParams["axes.unicode_minus"] = False  # 确保负号正确显示

# 1. 使用 NumPy 生成带噪声的数据
np.random.seed(44)  # 固定随机种子,确保结果可复现

# 真实参数(我们希望模型学习的理想参数)
k_true = 2.5  # 真实斜率
b_true = 10   # 真实截距

# 生成 x 数据(特征):在 0-50 范围内均匀生成 25 个点
x = np.linspace(0, 50, 25)

# 生成 y 数据(目标):基于真实线性关系 y = 2.5x + 10,并添加高斯噪声
# np.random.normal(0, 25, size=x.shape) 生成均值为 0、标准差为 25 的随机噪声
y = k_true * x + b_true + np.random.normal(0, 25, size=x.shape)

# 2. 使用 sklearn 进行线性回归拟合
model = LinearRegression()  # 创建线性回归模型实例
model.fit(x.reshape(-1, 1), y)  # 训练模型
# x.reshape(-1, 1) 将一维数组转换为二维数组(sklearn 要求输入为二维特征矩阵)

# 获取拟合参数
k_fit = model.coef_[0]  # 提取拟合的斜率
b_fit = model.intercept_  # 提取拟合的截距

# 生成拟合直线上的预测值
y_fit = model.predict(x.reshape(-1, 1))  # 使用模型预测训练数据

# 3. 可视化展示
fig, ax = plt.subplots(figsize=(10, 6))  # 创建 10×6 英寸的图表

# 绘制原始数据点(带噪声的样本)
ax.scatter(x, y, color='red', label='样本点', alpha=0.7)  # 使用半透明红色圆点表示数据点

# 绘制真实直线(无噪声的理想情况)
ax.plot(x, k_true * x + b_true, color='blue', label=r'真实关系 $y = %.1fx + %.1f$' % (k_true, b_true))

# 绘制拟合直线(模型学习到的关系)
ax.plot(x, y_fit, color='green', linestyle='--', linewidth=2,
        label=r'拟合直线 $\hat{y} = %.2fx + %.2f$' % (k_fit, b_fit))

# 添加标题和坐标轴标签
ax.set_title('线性回归拟合示例', fontsize=14)
ax.set_xlabel('x 特征值')
ax.set_ylabel('y 目标值')

# 添加图例与网格
ax.legend(fontsize=12)  # 显示图例,调整字体大小
ax.grid(True, linestyle='--', alpha=0.6)  # 添加半透明虚线网格

# 优化布局并显示图像
plt.tight_layout()  # 自动调整布局,防止内容重叠
plt.show()  # 显示图表
机器学习方法:回归(一):线性回归Linear regression 欢迎转载,转载请注明:本文出自Bin的专栏blog.youkuaiyun.com/xbinworld。 开一个机器学习方法科普系列:做基础回顾之用,学而时习之;也拿出来与大家分享。数学水平有限,只求易懂,学习与工作够用。周期会比较长,因为我还想写一些其他的,呵呵。 content: linear regression, Ridge, Lasso Logistic Regression... 阅读详情

相关推荐

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

在统计学和机器学习领域,回归分析是一种重要的方法,用于分析一个或多个自变量(解释变量)与因变量(响应变量)之间的关系。通过建立数学模型,回归分析不仅能预测事件的结果,还能揭示不同变量间的相互影响。比如,在教育领域,通过分析学习平台的交互性、教学资源质量和课程设计对学习满意度的影响,教育机构能够优化其课程和服务,提高学习效果。

高丽大学人工智能硕士在读|专注大模型、RAG、OCR与AI工程实践 3590

机器学习——线性回归

线性回归(Linear regression)是利用回归方程(函数)对一个或多个自变量(特征值)和因变量(目标值)之间关系进行建模的一种分析方式。特点:只有一个自变量的情况称为单变量回归,多于一个自变量情况的叫做多元回归线性回归用矩阵表示举例那么怎么理解呢?我们来看几个例子期末成绩:0.7×考试成绩+0.3×平时成绩房子价格 = 0.02×中心区域的距离 + 0.04×城市一氧化氮浓度 + (-0.12×自住房平均房价) + 0.254×城镇犯罪率上面两个例子,

yXuan_ai的博客 1万+

Spark MLlib Linear Regression线性回归算法

1、Spark MLlib Linear Regression线性回归算法 1.1 线性回归算法 1.1.1 基础理论 在统计学中,线性回归(Linear Regression)是利用称为线性回归方程的最小平方函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。 回归分析中,只包括一个自变量和一个因变量,且二者的关系可用一条

Spark MLlib 机器学习 1万+

线性回归详解

线性回归学习思路 一.定义 回归是监督学习的一个重要问题,回归用于预测输入变量和输出变量之间的关系,特别是当输入变量的值发生变化时,输出变量的值也随之发生变化。回归模型正是表示从输入变量到输出变量之间映射的函数 回归的目的是预测数组型的目标值。 线性回归:根据已知的数据集,通过梯度下降的方法来训练线性回归模型的参数w,从而用线性回归模型...

笼中鸟 1万+

机器学习经典算法详解及Python实现--线性回归(Linear Regression)算法

回归是统计学中最有力的工具之一。回归算法用于连续型分布预测,针对的是数值型的样本,使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签。回归的目的就是建立一个回归方程用来预测目标值,回归的求解就是求这个回归方程的回归系数。预测的方法当然十分简单,回归系数乘以输入值再全部相加就得到了预测值。说到回归,常常指的也就是线性回归,因此本文阐述的就是多元线性回归方程的求解和应用,通过Python实现。

Adan 6万+

局部加权线性回归算法(Locally Weighted Linear Regression)及相关案例

局部加权线性回归算法(Local Weighted Linear Regression)及相关案例 大家好,我是W 这次讲线性回归,之前有说逻辑回归(Logistic Regression),虽然逻辑回归负责分类,可是在数据到达二值函数之前的逻辑都是线性回归的逻辑,所以这两个回归是十分相似的。这篇文章的顺序是:1、线性回归算法原理 2、最小二乘法和算法评估标准 3、案例1-简单数据集标准线性回归 4、案例2-简单数据集局部加权线性回归 5、案例3-鲍鱼年龄预测。 案例2-简单数据集局部加权线性回归 接上一篇

Alian_W的博客 9855

机器学习之线性回归(Linear Regression)算法

回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。通常使用曲线/线来拟合数据点,目标是使曲线到数据点的距离差异最小 。线性回归是回归问题中的一种,线性回归假设目标值与特征之间线性相关,即满足一个多元一次方程。通过构建损失函数,来求解损失函数最小时的参数w和b。通长我们可以表达成如下公式:y^\hat{y}y^​ 为预测值,自变量x和因变量y是已知的,而我们想实现的是预测新增一个x,其对应的y是多少。因此,为

年少的勇气已经用完,剩下的就是三思而后行 2万+

[机器学习] 线性回归算法 (Linear Regression)

回归问题 在回归问题中,我们具体要预测的是一个具体的数值,而不是分类。 对于回归问题,比如,我们可以根据房屋的大小预测房屋的价格,在这里只有一个样本特征,就是房屋的大小,为了实现这个,我们需要在两维空间中表示。如横轴代表房屋大小,纵轴就是房屋的价格,也就是我们要预测的数值。但是在分类问题里,假如样本有两维特征,如鸢尾花花瓣的大小与叶子的宽度,我们只需要二维空间中就能将它们分类,只需把用不同颜色...

Peggy_Chang的博客 1015

机器学习—线性回归算法(Linear Regression)

本文主要是介绍了机器学习中的线性回归算法,包含线性回归基本概念,简单分类与模型,线性回归问题分析,线性回归的解法,线性回归问题中的过拟合、欠拟合以及相应的解决方案,线性回归模型的评估等内容,能在一定程度上帮助我们加深对线性回归问题的认识。

qq_43016560的博客 1万+

线性回归(Linear regression)算法

归类:属于有监督学习、判别模型、有预测函数、有优化目标,有优化求解算法 应用:股票价格预测(依据过去的数据预测将来的状态) 分类: 回归按照输入变量的个数可分为:一元回归和多元回归 按照输入变量和输出变量的关系可分为:线性回归和非线性回归 回归可称为函数的拟合:选择一条函数曲线能很好的拟合过去的数据并且能够预测将来的数据 回归:用观察使认知接近真值的过程,回归本源。参考:各种回归都...

heda3的博客 2080

24V供电D1047/B817对管AB类音频功放设计与制作全解析

音频功率放大器是电子系统将微弱音频信号放大驱动扬声器的核心电路,其核心原理是通过晶体管或集成电路对信号进行电压和电流放大。从技术价值看,优秀的功放设计需兼顾效率、保真度与稳定性,AB类放大器便是经典折中方案,它在A类低失真与B类高效率间取得平衡。在应用场景上,这类电路广泛应用于家用音响、多媒体音箱、车载音频及DIY音频项目。本文聚焦于一个采用24V直流供电、以D1047和B817互补对管为核心输出级的AB类功放实例,深入剖析其**电路设计**与**元件选型**,涵盖从BC547小信号放大、偏置设置、PCB布

weixin_31355483的博客 412

线性回归(Linear Regression)算法 简介

线性回归(Linear Regression)算法根据已有的数据去寻找一条直线,让它尽可能地接近这些数据,再用这条直线预测新数据的可能结果,这个结果是一个具体的数值。Y = AX + B根据样本数据求出方程的最优解.

galoiszhou的博客 2173

别再为数码管引脚发愁了!用STM32的普通IO口驱动TM1650数码管模块(附完整模拟I2C代码)

本文详细介绍了如何利用STM32的普通IO口通过模拟I2C协议驱动TM1650数码管模块,提供了完整的硬件连接方案和软件实现代码。通过模拟I2C技术,开发者可以灵活使用任意GPIO引脚控制多位数码管显示,解决了传统驱动方式占用大量IO资源的问题。文章包含TM1650寄存器解析、亮度控制等实用功能实现,并分享了常见问题排查与性能优化技巧。

weixin_30764771的博客 657

线性回归算法(Linear Regression)及相关案例

线性回归算法的原理和代码实现 大家好,我是W 这次讲线性回归,之前有说逻辑回归(Logistic Regression),虽然逻辑回归负责分类,可是在数据到达二值函数之前的逻辑都是线性回归的逻辑,所以这两个回归是十分相似的。这篇文章的顺序是:1、线性回归算法原理 2、最小二乘法和算法评估标准 3、案例1-简单数据集标准线性回归 4、案例2-简单数据集局部加权线性回归 5、案例3-鲍鱼年龄预测。 1、线性回归算法原理 在学习scikitlearn的时候会有一个经典案例,就是Boston房价预测,就是用回归去做

Alian_W的博客 1万+

从仿真到实物:Realsense D435+ROS2焊接机械臂的视觉标定与数据验证指南

本文详细介绍了如何将Realsense D435相机与ROS2焊接机械臂从仿真环境迁移到实物部署的全过程。通过视觉标定、数据验证和焊接场景优化,确保系统在真实环境中精准可靠。重点讲解了硬件配置、驱动优化、数据一致性验证及焊接应用的特殊处理,为工业自动化开发者提供实用指南。

weixin_28701593的博客 407

SAP EWM 内向交货流程(一)

本文介绍了SAP EWM系统中内向交货单的基本配置与操作流程。

huqinghai的专栏 2398

python 实现linear regression线性回归算法

线性回归(Linear Regression)是一种在统计学中广泛使用的预测分析方法,它用于建立自变量(解释变量)和因变量(响应变量)之间的线性关系模型。简单来说,线性回归试图找到一个最佳的直线(或更一般地,一个线性模型),使得这条直线能够最好地拟合数据点(即使得实际观测值与通过模型预测的值之间的差异最小)。基本概念Yβ0β1X1β2X2⋯βnXnϵYβ0​β1​X1​β2​X2​⋯βn​Xn​ϵY 是因变量(响应变量),

luthane的博客 1258

匈牙利算法解决指派问题清晰流程

匈牙利算法解决指派问题清晰流程 百度词条上,指派问题(Assignment problem)是这么定义的:在满足特定指派要求条件下,使指派方案总体效果最佳。如:有若干项工作需要分配给若干人(或部门)来完成;有若干项合同需要选择若干个投标者来承包:有若干班级需要安排在若干教室里上课等。   一、做减法(归约): 行归约:每行元素减去该行最小元素。 列归约:每行元素减去该行最小元素。

siss0siss的博客 6万+

机器学习算法总结—— 线性回归(Linear Regression)

前言 本系列为机器学习算法的总结和归纳,目的为了清晰阐述算法原理,同时附带上手代码实例,便于理解。 目录 k近邻(KNN) 决策树 线性回归 逻辑斯蒂回归 朴素贝叶斯 支持向量机(SVM) 组合算法(Ensemble Method) K-Means 本章为线性回归,内容包括模型介绍及代码实现(包括自主实现和sklearn案例)。 一、算法简介 1.1 什么是回归分析 回归分析是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的

Harrytsz的博客 7950

Windows上MSYS2的安装和使用

MSYS2这个工具我是越用越喜欢,很多东西放在Linux上如鱼得水但是放在Windows上就没那么好用,比如ffmpeg,opencv等直接引用就行了,这个工具真的很省事。接下来带你们看看它的妙用。1、好好研究确实妙用无穷。

jiexijihe945的博客 4141

手把手教你搭建工业级C#上位机:完整架构+通信+配置+日志,新手也能落地(附全套源码)

模型层是“数据容器”,统一数据格式,避免参数传递混乱。本文搭建的C#上位机,采用“分层+模块化”架构,解耦了UI、通信、配置、日志四大核心功能,不仅满足工业场景的基础需求,还为后续扩展打下基础。新手跟着步骤走,既能掌握上位机的核心开发技能,又能理解工业级项目的架构设计思路。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1154

线性回归算法 Linear Regression

大家好!今天我想给大家讲一个很有趣的算法,叫做线性回归算法。这个算法可以帮我们在生活中预测一些事情,比如说,根据温度预测我会吃多少冰淇淋!

m0_58067066的博客 920

【ComfyUI】Wan2.2 + IndexTTS 图像数字人或动物口播视频生成

本文介绍了一个基于ComfyUI的数字人口播视频生成工作流,整合了IndexTTS和图像处理技术。该系统通过多模型协同工作,实现从形象图、文本和音频输入到自动生成口播视频的全流程。核心包含WanVideo系列模型,通过CLIP Vision、T5文本编码器和Wav2Vec语音模型分别处理视觉特征、语义理解和口型同步。工作流涵盖素材加载、特征提取、音频处理和视频生成等节点,支持人物、动物等多种主体的口播内容创作。该方案自动化程度高,适用于知识讲解、剧情旁白等多种场景,能帮助创作者高效产出高质量口播视频。

Mr数据杨 2050

机器学习经典算法---线性回归(Linear Regression)算法

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Ma...

lcx_nanmu的博客 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

机器学习之线性回归算法Linear Regression(python代码实现)

线性回归(Linear Regression)是一种非常简单、用处非常广泛、含义也非常容易理解的一类经典的算法,非常合适作为机器学习的入门算法。 线性回归就是拟合出一个线性组合关系的函数。要找一条直线,并且让这条直线尽可能地拟合所有数据点。即:试图找到一条直线,使所有样本到直线上的欧式距离之和最小。 一元线性回归(Linear Regression) 拟合出一个线性组合关系的函数:y = wx+b 。 拟合图像: 多元线性回归 多元线性回归比一元线性回归复杂,其组成的不是直线,而是一..

记录知识,学习分享 4万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

<线性回归算法(Linear regression)>——《机器学习算法初识》

机器学习算法初识——线性回归算法(Linear regression)

m0_57859086的博客 1386

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

上一篇: 人工智能概念之三:常见的损失函数(交叉熵损失、Hinge损失、0-1损失、MSE、MAE、RMSE、最小二乘法、焦点损失、Dice损失、三元组损失)
下一篇: 人工智能概念之四:常见的正则化手段(用线性回归演示过拟合和正则化、L1正则化、L2正则化、Dropout、批量归一化、早停法、数据增强)
.30-06Springfield
博客等级 码龄7年 321粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值