线性回归(Linear Regression)原理详解及Python代码示例

2024-06-24 09:44

本文主要是介绍线性回归(Linear Regression)原理详解及Python代码示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、线性回归原理详解

        线性回归是一种基本的统计方法,用于预测因变量(目标变量)与一个或多个自变量(特征变量)之间的线性关系。线性回归模型通过拟合一条直线(在多变量情况下是一条超平面)来最小化预测值与真实值之间的误差。

1. 线性回归模型

        对于单变量线性回归,模型的表达式为:

4736001b906240d9ae7c63ee8a9e102d.png

        其中:

  • y是目标变量。
  • x是特征变量。
  • β0是截距项(偏置)。
  • β1是特征变量的系数。

        对于多变量线性回归,模型的表达式为:

7a34a45745054fe6ba3ed51e68cc001e.png

        其中:

  • y是目标变量。
  • x1,x2,…,xn是多个特征变量。
  • β0是截距项(偏置)。
  • β1,β2,…,βn是各特征变量的系数。

2. 最小二乘法(Ordinary Least Squares, OLS)

        线性回归通过最小二乘法来估计模型参数,即最小化所有预测误差的平方和。对于给定的训练数据集 (xi,yi),目标是找到使得误差平方和最小的 β值。

        误差平方和(损失函数)的公式为:

6fb6e74ddf0841f699893c7315f80cfa.png

        其中 m是样本数量,yi^​ 是第 i个样本的预测值,通过最小化这个损失函数,可以得到最优的模型参数 β。

二、Python代码示例

下面是使用Python实现线性回归的代码示例。我们将使用scikit-learn库来构建和训练线性回归模型,并预测一些数据。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score# 生成示例数据
np.random.seed(0)
X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 创建线性回归模型并进行训练
lin_reg = LinearRegression()
lin_reg.fit(X_train, y_train)# 进行预测
y_pred = lin_reg.predict(X_test)# 打印模型参数
print("截距(Intercept):", lin_reg.intercept_)
print("系数(Coefficients):", lin_reg.coef_)# 评估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print("均方误差(MSE):", mse)
print("决定系数(R^2):", r2)# 绘制回归直线
plt.scatter(X_test, y_test, color='blue', label='Actual')
plt.plot(X_test, y_pred, color='red', linewidth=2, label='Predicted')
plt.xlabel('Feature')
plt.ylabel('Target')
plt.title('Linear Regression')
plt.legend()
plt.show()

代码解释:

  1. 数据生成:使用numpy生成随机数据集,特征变量 X 和目标变量 y 满足线性关系并添加一些噪声。
  2. 数据划分:将数据集划分为训练集和测试集,比例为80%训练和20%测试。
  3. 模型训练:使用scikit-learnLinearRegression类创建线性回归模型,并在训练集上进行训练。
  4. 模型预测:使用训练好的模型在测试集上进行预测。
  5. 模型评估:计算均方误差(MSE)和决定系数(R²)来评估模型性能。
  6. 结果可视化:绘制实际值和预测值的散点图以及回归直线。

 

这篇关于线性回归(Linear Regression)原理详解及Python代码示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1089792

相关文章

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

java中反射Reflection的4个作用详解

《java中反射Reflection的4个作用详解》反射Reflection是Java等编程语言中的一个重要特性,它允许程序在运行时进行自我检查和对内部成员(如字段、方法、类等)的操作,本文将详细介绍... 目录作用1、在运行时判断任意一个对象所属的类作用2、在运行时构造任意一个类的对象作用3、在运行时判断

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

MySQL 中的 CAST 函数详解及常见用法

《MySQL中的CAST函数详解及常见用法》CAST函数是MySQL中用于数据类型转换的重要函数,它允许你将一个值从一种数据类型转换为另一种数据类型,本文给大家介绍MySQL中的CAST... 目录mysql 中的 CAST 函数详解一、基本语法二、支持的数据类型三、常见用法示例1. 字符串转数字2. 数字

SpringBoot中SM2公钥加密、私钥解密的实现示例详解

《SpringBoot中SM2公钥加密、私钥解密的实现示例详解》本文介绍了如何在SpringBoot项目中实现SM2公钥加密和私钥解密的功能,通过使用Hutool库和BouncyCastle依赖,简化... 目录一、前言1、加密信息(示例)2、加密结果(示例)二、实现代码1、yml文件配置2、创建SM2工具

MySQL 定时新增分区的实现示例

《MySQL定时新增分区的实现示例》本文主要介绍了通过存储过程和定时任务实现MySQL分区的自动创建,解决大数据量下手动维护的繁琐问题,具有一定的参考价值,感兴趣的可以了解一下... mysql创建好分区之后,有时候会需要自动创建分区。比如,一些表数据量非常大,有些数据是热点数据,按照日期分区MululbU

MyBatis-Plus 中 nested() 与 and() 方法详解(最佳实践场景)

《MyBatis-Plus中nested()与and()方法详解(最佳实践场景)》在MyBatis-Plus的条件构造器中,nested()和and()都是用于构建复杂查询条件的关键方法,但... 目录MyBATis-Plus 中nested()与and()方法详解一、核心区别对比二、方法详解1.and()

Python中你不知道的gzip高级用法分享

《Python中你不知道的gzip高级用法分享》在当今大数据时代,数据存储和传输成本已成为每个开发者必须考虑的问题,Python内置的gzip模块提供了一种简单高效的解决方案,下面小编就来和大家详细讲... 目录前言:为什么数据压缩如此重要1. gzip 模块基础介绍2. 基本压缩与解压缩操作2.1 压缩文