sklearn-线性回归

news2024/9/24 15:18:28

文章目录

  • 一、sklearn-线性回归介绍
  • 二、线性回归
    • 1.一元线性回归
    • 2.多元线性回归模型
    • 3.最小二乘法
  • 三、一元线性回归应用
    • 1.导入库
    • 2.绘制散点图
    • 3.建立回归模型并进行训练
    • 4.模型评估与数据查看
    • 5.模型测试
  • 四、多元线性回归应用
    • 1.导入库
    • 2.计算相关性
    • 3.数据预处理
    • 4.训练评估模型
    • 5.模型预测
    • 6.输出模型参数
  • 五、总结

一、sklearn-线性回归介绍

sklearn(Scikit-learn)是Python中用于机器学习的一个非常流行的库,它提供了大量的算法和工具来构建和评估模型。线性回归是统计学中用于预测一个或多个自变量(特征)和一个因变量(目标)之间线性关系的方法。回归是一种应用广泛的预测建模技术,这种技术的核心在于预测的结果是连续型变量。在sklearn中,线性回归可以通过LinearRegression类来实现。

二、线性回归

1.一元线性回归

一元线性回归模型是统计学中用于预测一个因变量(通常表示为y)和一个自变量(通常表示为x)之间线性关系的模型。这种模型可以表示为数学方程:
y = β 0 ​ + β 1 ​ x + ϵ y=β 0 ​ +β 1 ​ x+ϵ y=β0​+β1​x+ϵ

其中:

  • y 是因变量(目标变量),是我们想要预测的。
  • x 是自变量(特征),是我们用来预测y的。
  • β0 是截距项(intercept),也称为常数项或y轴上的截点。
  • β1 是斜率(slope),表示x每增加一个单位时,y平均增加(或减少,如果β1是负数)的单位数。
  • ε 是误差项(error term),表示除线性因素外随机因素所产生的误差。

2.多元线性回归模型

多元线性回归模型(Multiple Linear Regression Model),它包含两个或更多个自变量以及一个因变量。

多元线性回归模型可以表示为以下数学方程:
y = β 0 ​ + β 1 ​ x 1 ​ + β 2 ​ x 2 ​ + ⋯ + β n ​ x n ​ + ϵ y=β 0 ​ +β 1 ​ x 1 ​ +β 2 ​ x 2 ​ +⋯+β n ​ x n ​ +ϵ y=β0​+β1​x1​+β2​x2​++βnxn+ϵ
其中:

  • y 是因变量(目标变量)。
  • x_1, x_2, …, x_n 是自变量(特征),n 表示自变量的数量。
  • β_0, β_1, β_2, …, β_n 是模型的参数,其中 β_0 是截距项,β_1 到 β_n 是各自变量的系数。
  • ε 是误差项,表示除线性因素外随机因素所产生的误差。

3.最小二乘法

  • 最小二乘法就是通过最小化真实值和预测值之间的RSS来求解参数的方法。

目标函数:
在这里插入图片描述
求导结果:
在这里插入图片描述
偏导为0:
在这里插入图片描述

三、一元线性回归应用

一元线性回归是统计学和数学中用于分析两个变量之间线性关系的重要方法,其中一个变量(自变量)的变化对另一个变量(因变量)产生线性影响。这种方法广泛应用于多个领域,以下是一元线性回归的在预测广告投入与营销的应用。

1.导入库

import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression

data = pd.read_csv("data.csv")
  • pandas:用于数据处理和分析。
  • matplotlib.pyplot:用于绘制图形,这里主要用于绘制散点图来直观展示“广告投入”与“销售额”之间的关系。
  • sklearn.linear_model.LinearRegression:从sklearn库中导入线性回归模型,用于拟合和预测数据。
  • 使用pandas的read_csv函数读取名为"data.csv"的CSV文件,该文件应包含两列数据:‘广告投入’和’销售额’。

2.绘制散点图

plt.scatter(data.广告投入, data.销售额)
plt.show()
  • 使用matplotlib.pyplot的scatter函数绘制“广告投入”与“销售额”之间的散点图,以便直观地观察它们之间的关系。
    图例:
    在这里插入图片描述

3.建立回归模型并进行训练

corr = data.corr()
lr = LinearRegression()
x = data[['广告投入']]
y = data[['销售额']]

lr.fit(x, y)
  • 初始化LinearRegression对象lr。
  • 使用fit方法来训练模型,即让模型学习“广告投入”与“销售额”之间的线性关系。

4.模型评估与数据查看

"""score指R2"""
result = lr.predict(x)
score = lr.score(x, y)

a = round(lr.intercept_[0], 2)
b = round(lr.coef_[0][0], 2)
print("线性回归模型为: y = {}x + {}".format(b, a))
  • 计算模型的R²分数,即决定系数,用来评估模型的好坏。R²分数的值越接近1,说明模型的拟合效果越好。
  • 查看模型的截距和斜率,并将它们四舍五入到小数点后两位。
    最终输出该回归模型为: y = 3.74x + -36.36

5.模型测试

predict = lr.predict([[40], [45], [50]])
print(predict)
  • 对模型进行新的测试,输入新数据,并进行输出
    输出结果为:
    [[113.15418502]
    [131.84361233]
    [150.53303965]]

四、多元线性回归应用

多元线性回归是一种重要的统计分析方法,用于研究多个自变量与一个因变量之间的线性关系。通过建立一个包含多个自变量的线性方程来预测或解释因变量的变化。多元线性回归的应用非常广泛,这里我们简单介绍银行贷款的案例来解释。

1.导入库

import pandas as pd
from sklearn.linear_model import LinearRegression

data = pd.read_excel("案例.xlsx")
  • pandas 用于数据处理和分析。
  • 从sklearn库中导入线性回归模型。
  • 读取名为“案例.xlsx”的Excel文件

2.计算相关性

corr = data[['不良贷款', '各项贷款余额', '本年累计应收贷款', '贷款项目个数', '本年固定资产投资额']].corr()

  • 从data中选取’不良贷款’, ‘各项贷款余额’, ‘本年累计应收贷款’, ‘贷款项目个数’,
    '本年固定资产投资额’这五个字段,并计算它们之间的相关系数矩阵corr。了解变量之间的线性相关程度。

3.数据预处理

lr_model = LinearRegression()
x = data[['不良贷款', '各项贷款余额', '本年累计应收贷款', '贷款项目个数']]
y = data[['本年固定资产投资额']]
  • 将’不良贷款’, ‘各项贷款余额’, ‘本年累计应收贷款’, '贷款项目个数’作为特征(自变量)x。
  • 将’本年固定资产投资额’作为目标(因变量)y。

4.训练评估模型

lr_model.fit(x, y)

score = lr_model.score(x, y)
print(score)
  • 通过fit方法对模型进行训练
  • 计算模型的决定系数(也称为R²分数),以评估模型的好坏。R²分数的值越接近1,说明模型的预测能力越强。最终结果为:0.6972425448090671

5.模型预测

print(lr_model.predict([[0.1, 200, 30, 10]]))
print(lr_model.predict([[0.5, 150, 1.1, 8], [10, 30, 20, 3]]))
  • 对新的数据点进行预测。
    最终输出结果:
    [[113.46732744]]
    [[ 79.37075222]
    [-30.5681806 ]]

6.输出模型参数

a = lr_model.coef_
b = lr_model.intercept_
print("线性回归模型为:y = {:.2f}x1 + {:.2f}x2 + {:.2f}".format(a[0][0], a[0][1], b[0]))

-打印线性回归模型的系数coef_和截距intercept_。
最终结果为:y = -5.41x1 + 0.47x2 + 1.49

五、总结

线性回归模型易于理解和解释,模型的参数(系数和截距)直接反映了自变量对因变量的影响。但是预测能力有限,比如不能预测比较复杂的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053528.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

iOS 18.1 Beta 2评测:新变化与体验升级

苹果公司近日向开发者推送了iOS 18.1 Beta 2更新,这一版本基于beta1版本进行多个方面优化和改进,为用户带来了更加流畅和个性化的使用体验。作为一位热衷于体验新系统的用户,小编也是第一时间升级了Beta 2版本,并对其进行了全面的…

Java二十三种设计模式-状态模式(20/23)

本文深入探讨了状态模式,一种允许对象根据其内部状态变化而改变行为的软件设计模式。文章从定义、组成部分、实现方式、使用场景、优缺点分析、与其他模式的比较,到最佳实践和建议,全面介绍了状态模式的各个方面。通过Java语言的实现示例和实…

2024前端面试题-篇章一(个人向)

1.vue2生命周期(省略) 2.vue3生命周期(省略) 3.vue2页面生命周期与组件生命周期执行顺序: 一般是 页面先创建,然后准备再准备挂载,挂载的时候发现有组件再执行组件的生命周期,组件…

数字影像技术是如何改变我们看待世界的方式呢?

在当今的科技时代,数字影像技术正以惊人的速度改变着我们的生活和视觉体验。那么,什么是数字影像技术呢? 数字影像技术是指通过数字化手段对图像和视频进行获取、处理、存储、传输和展示的一系列技术。 它利用各种数字设备,如数…

msf+proxychains组合搭建socks5隧道 | 内网穿透

实验环境 网络拓扑: kali: VMnet1(公网)192.168.52.134 win10: VMnet1(公网)192.168.52.135VMnet2(内网)192.168.72.133 win2008: VMnet2&#xff08…

【数据结构初阶】二叉树--基本概念

hello! 目录 一、树 1.1 树的概念和结构 1.2 树的相关术语 1.3 树的表示 1.4 树形结构实际应用场景 二、二叉树 2.1 概念和结构 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.3 二叉树的存储结构 2.3.1 顺序结构 2.3.2 链式结构 …

转行到大模型,完整版攻略从大模型零基础到大模型精通,我是这样过来的

在当今这个日新月异的时代,技术的更新迭代速度远超我们的想象。对于那些渴望在职业生涯中寻求新挑战的人来说,转向人工智能领域,尤其是投身于大规模语言模型的研究与开发,无疑是一个充满机遇的选择。本文将为您揭示如何从零开始&a…

阿里十万卡训练集群 网络拓扑架构和优势 Alibaba HPN: A Data Center Network for Large Language Model Training

本博客的视频教程在这: 2.2阿里十万卡集群 网络拓扑架构和优势 Alibaba HPN: A Data Center Network for Large Language Model_哔哩哔哩_bilibili 一、大模型训练的核心问题 1.1 流量模式的问题 大语言模型训练的流量模式问题可参考这个: ECMP等价…

Linux 服务器下非root用户安装CUDA完整流程(多次踩雷经验总结)

参考博客: linux下安装cuda和cudnn(非root权限)_cuda下载安装 远程服务器 linux-CSDN博客 Linux下非root用户安装CUDA_linux下cuda-toolkit-archive-CSDN博客 非root用户安装cuda10.1,以及CUDA不同版本间切换_非root用户.run文…

已解决centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64的解决方案

出现cannot find a valid baseurl for repo:base/7/x86_64错误通常是由于YUM仓库源无法找到或无法访问,导致YUM无法正常工作。这种情况常见于CentOS 7系统。解决这个问题需要检查几个方面,如网络连接、DNS设置和YUM仓库源配置。 🧑 博主简介&…

aspose-words中插入附件及遇到的问题

aspose-words版本:21.1 java:1.8 目标: 前端使用tinymce编辑一段内容,后端使用aspose-words将html转为word,并将html中的附件转换为word中的附件。 形如: 实现方案: 使用正则表达式找出需要替…

setData的 Qt::CheckStateRole是model中checkbox的状态(选中否)

checkbox的状态 bool MissionModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (role Qt::CheckStateRole && col 3 ) { } }

【嵌入式裸机开发】基于stm32的照相机(OV7670摄像头、STM32、TFTLCD)

基于STM32的照相机 准备工作最终效果一、下位机1、主函数2、OV7670初始化 二、上位机1、控制拍照2、接收图片数据 准备工作 一、硬件及片上资源: 1,串口1(波特率:921600,PA9/PA10通过usb转ttl连接电脑,或者其他方法)上传图片数据至上位机 2,串口2(波特率:115200,PA…

Opencv学习-直方图应用

1. 直方图均衡化 如果一个图像的直方图都集中在一个区域,那么整体图像的对比度比较小,不便于图像中纹理的识别。例如,如果相邻的两个像素灰度值分别是 120 和 121 ,那么仅凭肉眼是无法区别出来的。同时,如果图像中所…

音频提取软件分享:6款好用音频提取工具推荐

在现代数字媒体中,音频提取已经成为一项至关重要的技能。无论你是视频创作者、播客主持人,还是音乐爱好者,从视频、电影或其他多媒体文件中提取音频,都是一项非常有用的操作。 本文将围绕音频提取,介绍这项技术的应用、…

一篇文章带你实现大模型及RAG入门---小白速进

项目概述:随着人工智能技术的飞速发展,大模型(Large Models)和检索增强型生成(Retrieval-Augmented Generation, RAG)已成为自然语言处理(NLP)领域的热点。大模型以其强大的理解和生…

Java二十三种设计模式-责任链模式(17/23)

责任链模式:实现请求处理的灵活流转 引言 在这篇博客中,我们深入探讨了责任链模式的精髓,从其定义和用途到实现方法,再到使用场景、优缺点、与其他模式的比较,以及最佳实践和替代方案,旨在指导开发者如何…

力扣第 411 场周赛题解

3258. 统计满足 K 约束的子字符串数量 I 给你一个 二进制 字符串 s 和一个整数 k。 如果一个 二进制字符串 满足以下任一条件,则认为该字符串满足 k 约束: 字符串中 0 的数量最多为 k。字符串中 1 的数量最多为 k。 返回一个整数,表示 s …

系统编程-进程初步1

5 进程初步 一、认识进程 -- 进程Process是指计算机中已运行的程序,是系统进行资源分配和调度的基本单位,是操作系统结构的基础 -- 程序运行起来就是一个进程 进程存在于运行内存中程序存在于硬盘中 -- windows下查看进程使用任务管理器进行查看 1…

EXCEL——Vlookup17个高级用法

大纲 一、基本语法 1、参数详解 二、入门篇 1、单条件查找 2、屏蔽查找返回的错误值 三、进阶篇 1、反向查找 2、包含查找 3、区间查找 4、含通配符查找 5、多列查找 6、多区域查找 四、高级篇 1、多条件查找 2、合并单元格查找 3、带合并单元格的多条件查找 …