机器学习:一元线性回归模型

news2024/9/20 20:40:18

目录

前言

一、讲在前面

1.data.csv:

2.完整代码:

3.运行结果:

二、实现步骤

1.导入库

2.导入数据

3.绘制散点图(这步可以省略)

4.求特征和标签的相关系数

5.建立并训练线性回归模型

6.检验模型

7.获取线性回归模型方程

8.利用模型进行预测

总结


前言

        线性回归是一种基本的回归分析方法,用于建模两个或多个变量之间的关系。其主要目标是通过一条直线(在简单线性回归中)或一个超平面(在多元线性回归中)来预测一个目标变量的值。

 

一、讲在前面

1.data.csv:

data.csv

 

2.完整代码:

# 一元线性回归
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression

data = pd.read_csv('data.csv')

# 绘制散点图
plt.scatter(data['广告投入'], data['销售额'])
# plt.show()

corr = data.corr()  # 求x和y的相关系数
# 估计模型参数,建立回归模型
lr = LinearRegression()   # 建立模型
x = data[['广告投入']]     # 特征数据
y = data[['销售额']]      # 结果数据
lr.fit(x, y)  # 训练模型  需要传入二维数据

# 对回归模型进行检验
result = lr.predict(x)
score = lr.score(x, y)   # 判断拟合优度 R方 [0,1] 越高越拟合
# print(result)
print(score)

b = round(lr.intercept_[0], 2)  # 查看截距 round()四舍五入至小数点后两位
k = round(lr.coef_[0][0], 2)  # 查看斜率
print(f"线性回归模型为: y = {k}x + {b}")

predict = lr.predict([[21], [23], [99]])   # 使用新数据进行预测
print(predict)

 

3.运行结果:

 

 

二、实现步骤

1.导入库

# 一元线性回归
import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression

 

2.导入数据

data = pd.read_csv('data.csv')

 

3.绘制散点图(这步可以省略)

# 绘制散点图
plt.scatter(data['广告投入'], data['销售额'])
plt.show()

 

4.求特征和标签的相关系数

相关系数在线性回归模型里是一个重要指标!

相关程度越弱,说明特征数据越差!

  • 计算方法:
  • 各段数值解释

代码:

# 求x和y的相关系数
corr = data.corr()

输出:

 

5.建立并训练线性回归模型

  • 提取特征数据和标签也在这个步骤一并完成了
# 估计模型参数,建立回归模型
lr = LinearRegression()  # 建立模型
x = data[['广告投入']]  # 特征数据
y = data[['销售额']]  # 结果数据
lr.fit(x, y)  # 训练模型  需要传入二维数据

 

6.检验模型

拟合优度是判断模型好坏的一个指标

代码:

# 对回归模型进行检验
result = lr.predict(x)
score = lr.score(x, y)  # 判断拟合优度 R方 [0,1] 越高越拟合
# print(result)
print(score)

输出:

0.8225092881166945

 

7.获取线性回归模型方程

代码:

# 获取线性回归模型方程
b = round(lr.intercept_[0], 2)  # 查看截距 round()四舍五入至小数点后两位
k = round(lr.coef_[0][0], 2)  # 查看斜率
print(f"线性回归模型为: y = {k}x + {b}")

输出:

线性回归模型为: y = 3.74x + -36.36

 

8.利用模型进行预测

  • 给定x值,预测y值

代码:

predict = lr.predict([[21], [23], [99]])  # 使用新数据进行预测
print(predict)

输出:

[[ 42.13436123]
 [ 49.61013216]
 [333.68942731]]

 

总结

        其实具体的步骤与之前的KNN算法差不多,这里多了一步求相关系数

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

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

相关文章

Element-06.案例

一.目标 实现下面这个页面,表格中的数据使用axois异步加载数据 二.实现步骤 首先在vue项目的views文件夹中新建一个tlias文件夹,用来存储该案例的相关组件。员工页面组件(EmpView.vue)和部门页面组件(DeptView.vue&…

[数据集][目标检测]电力场景轭式悬架锈蚀分类数据集6351张2类别

数据集格式:仅仅包含jpg图片,每个类别文件夹下面存放着对应图片 图片数量(jpg文件个数):6351 分类类别数:2 类别名称[corrosion,good] 每个类别图片数: corrosion 图片数:310 good 图片数:6041 …

ChatGLM-6B 主要代码分析 RotaryEmbedding

ChatGLM-6B 主要代码分析 RotaryEmbedding flyfish 图片链接地址 传统的 Transformer 位置编码(Positional Encoding)被称为绝对位置编码 ,而 Rotary Embedding 被称为相对位置编码 ,主要是因为它们编码位置信息的方式不同&am…

python创建项目环境及项目打包

目录 创建项目环境conda创建环境常用命令创建项目虚拟环境创建虚拟环境激活虚拟环境安装第三方库 pyinstaller 打包常用参数组合 嵌入式打包下载嵌入式版本的python配置环境无参调用可完善 nuitka打包 创建项目环境 conda创建环境常用命令 conda create -n py310 python3.10.…

《学会 SpringBoot · 依赖管理机制》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

IntelliJ IDEA 集成 ShardingSphere-JDBC 访问分库分表

背景 众所周知,IntelliJ IDEA 是 Java 领域常用的开发工具之一,IDEA Ultimate(旗舰版)或其他例如 DataGrip 等 Intellij 平台的工具都集成了对数据库的访问能力。 但是,对于做了分库分表的项目,直接使用 …

微信支付代理商-自助提交资料源码之结算信息页面—微信支付商机版

一、支付代理上自助提交资料 一般在都在小程序完成提交 在网页中异常提示alert 但是很多小程序禁用了这个函数 并且不好看 那么久自定义一个组件每次直接调用 二、提示技术代码 function 未来之窗_VOS_通用提醒(msg){var 未来之窗内容message<cyberdiv style"font…

选择排序(直接选择排序与堆排序的比较)

选择排序 选择排序时间复杂度 1. 直接选择排序思考⾮常好理解&#xff0c;但是效率不是很好。实际中很少使用&#xff0c;思路是先进行遍历找到元最小的元素&#xff0c;然后与第一个进行交换 2. 时间复杂度&#xff1a;O&#xff08;&#xff09; 3. 空间复杂度&#…

gmapping算法核心部分

processScan函数 参考&#xff1a;https://blog.csdn.net/CV_Autobot/article/details/131058981 drawFromMotion:根据运动模型更新粒子位姿 scanMatch:进行扫描匹配 resample:重采样 逐步分解并详细解释代码 1. 获取当前扫描的相对位姿 OrientedPoint relPose reading.…

舜宇光学科技社招校招入职测评:商业推理测验真题汇总、答题要求、高分技巧

舜宇光学科技&#xff08;集团&#xff09;有限公司&#xff0c;成立于1984年&#xff0c;是全球领先的综合光学零件及产品制造商。2007年在香港联交所主板上市&#xff0c;股票代码2382.HK。公司专注于光学产品的设计、研发、生产及销售&#xff0c;产品广泛应用于手机、汽车、…

BEM架构

视频 总结&#xff1a; BEM架构&#xff1a;一个命名类的规范而已&#xff0c;说白了就是如何给类起名字使用sass的目的&#xff1a;在<style>中模块化的使用类名&#xff0c;同时减少代码数量 1、 BEM架构 &#xff08;通义灵码查询结果&#xff09; BEM (Block Ele…

【hot100篇-python刷题记录】【和为 K 的子数组】

R5-子串篇 目录 思路&#xff1a; 优化&#xff1a; tip: 代码&#xff1a; 结果&#xff1a; ps: 思路&#xff1a; 滑动&#xff0c;应该可以使用滑动窗口来解题。 貌似前缀和也可以&#xff0c;left&#xff0c;right两个指针&#xff0c;right的前缀和-left的前缀…

【学习笔记】printf中%m的含义

【学习笔记】printf中%m的含义 在有些代码中会看到如下的写法&#xff1a; printf("%m\n");printf中使用了%m来打印输出&#xff0c;那么%m又是什么意思呢&#xff1f; 其实%m 并不是在所有的 printf 实现中都通用或标准化的选项&#xff0c;而是在某些特定的编程语…

vue的markdown编辑器插件比对

vue的markdown编辑器插件比对 文章说明md-editor-v3的使用及效果展示vditor的使用及效果展示 文章说明 文章比对 md-editor-v3、vditor 这两个插件的使用及效果体验 md-editor-v3的使用及效果展示 安装 npm install md-editor-v3使用 <script setup> import {reactive} f…

图神经网络(Graph Neural Networks)是什么?

图神经网络&#xff08;Graph Neural Networks&#xff09;是什么&#xff1f; 引言 在数据科学和机器学习的广阔领域中&#xff0c;图结构数据以其独特的复杂性和丰富性成为了一个重要的研究方向。从社交网络中的用户关系&#xff0c;到生物信息学中的蛋白质交互网络&#x…

跨进程通信使用 Zenoh中间件 进行高效数据传输的测试和分析

文章目录 1. 引言2. Zenoh C 使用指南2.1 安装 Zenoh C 库2.2 编写基本的 Zenoh C 程序订阅示例发布示例 2.3 编译和运行程序 3. Zenoh 与 ROS2 集成3.1 安装 Zenoh3.2 安装 ROS2 的 Zenoh RMW 实现3.3 设置 RMW 实现为 Zenoh3.4 验证配置 4. 编写基于 Zenoh 的 ROS2 应用程序4…

Linux系统编程 --- 多线程

线程&#xff1a;是进程内的一个执行分支&#xff0c;线程的执行粒度&#xff0c;要比进程要细。 一、线程的概念 1、Linux中线程该如何理解 地址空间就是进程的资源窗口。 在一个程序里的一个执行路线就叫做线程&#xff08;thread&#xff09;。更准确的定义是&#xff1…

浏览器遇到的问题

下载的时候遇到&#xff0c;需要授权&#xff0c;无法下下载 将隐私里面的全部关掉

虚幻5|AI巡逻宠物伴随及定点巡逻—初步篇

一.建立AI基本三件套 1.建立AI基本三件套 二.使用AI的基本设置 1.打开我们想要用的AI宠物的蓝图&#xff0c;选中自我Actor,右侧细节处找到AI&#xff0c;选中对应的AI控制器 三.打开AI控制器 写如下 四&#xff0c;AI行为树 1.新建一个任务&#xff0c;命名含巡逻二字即可…

BigInteger与BigDecimal

BigInteger BigInteger构造方法 public BigInteger(int num, Random rnd) 获取随机大整数&#xff0c;范围&#xff1a;[0 ~ 2的num次方-1] public BigInteger(String val) 获取指定的大整数 public BigInteger(String val, int radix) 获取指定进制的大整数 构造方法小结…