《机器学习》——线性回归模型

文章目录

  • 线性回归模型简介
  • 一元线性回归模型
  • 多元线性回归模型
  • 误差项分析
  • 一元线性模型实例
    • 完整代码
  • 多元线性模型实例
    • 完整代码

线性回归模型简介

  • 线性回归是利用数理统计中回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。
    • 相关关系:包含因果关系和平行关系
    • 因果关系:回归分析【原因引起结果,需要明确自变量和因变量】
    • 平行关系:相关关系【无因果关系,不区分自变量和因变量】

一元线性回归模型

在这里插入图片描述

多元线性回归模型

在这里插入图片描述

误差项分析

  • 误差项满足高斯分布:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 求解
    在这里插入图片描述
  • 一元线性回归模型与多元线性回归模型的区别
    • 自变量数量:一元线性回归只涉及一个自变量,而多元线性回归涉及两个或更多自变量。
    • 模型复杂度:由于包含更多的自变量,多元线性回归模型能够捕捉更复杂的数据关系,但也面临过拟合和变量选择等挑战。
    • 解释性:在多元线性回归中,每个自变量的回归系数表示在保持其他自变量不变的情况下,该自变量每增加一个单位对因变量的平均影响。而在一元线性回归中,这个解释更为直接和简单。
    • 应用场景:当数据集中只有一个自变量时,使用一元线性回归;当数据集包含多个可能相关的自变量时,使用多元线性回归。

一元线性模型实例

  • 安装scikit-learn
    python中执行线性回归的一个非常流行和强大的库是scikit-learn。scikit-learn提供了丰富的工具来进行数据挖掘和数据分析,包括简单和复杂的线性回归模型。
pip install scikit-learn
  • 准备数据集
    在这里插入图片描述

    • 数据集文件:通过网盘分享的文件:data.csv
      链接: https://pan.baidu.com/s/119pHKJu0ZPGYUfQA6_hYfg 提取码: i3vf
  • 实例步骤

    • 导入数据

    • 绘制数据的散点图

    • 求特征之间的相关系数

    • 估计模型参数,建立回归模型

    • 训练模型

    • 测试模型

    • 求出线性回归模型

      • 导入数据

      通过导入pandas模块,使用pandas的读取csv文件的方法进行导入数据集。

      data = pd.read_csv('data.csv')
      
      • 绘制散点图
      plt.scatter(data.广告投入,data.销售额)
      plt.show()
      

      在这里插入图片描述

      • 求特征之间的相关系数

      在Python中,特别是在使用pandas库处理数据时,corr()函数是一个非常有用的方法,它用于计算DataFrame中列与列之间的相关系数。
      相关系数越接近1,说明它们之间受相互的影响越大。

      corr = data.corr()
      

      在这里插入图片描述

      • 估计模型参数,建立回归模型

      分别用变量接收数据中的值,后面传入模型中训练
      这里直接调用 scikit-learn 库中的 LinearRegression() 模型

      lr = LinearRegression()
      x = data[["广告投入"]]
      y = data[["销售额"]]
      
      • 训练模型

      使用sklearn模块中的fit()方法进行训练

      lr.fit(x,y)
      
      • 测试模型

      这里取两个例子进行测试预测,score()方法用于评估模型对给定数据(x, y)的拟合优度,其中x是自变量数据,y是真实的因变量数据。对于线性回归模型,score 方法默认计算的是决定系数(R2 score),它表示模型预测值与实际值之间的拟合程度。R2 score的值越接近1,说明模型的拟合效果越好;如果为0,则表示模型的表现和简单预测平均值一样;如果小于0,则表示模型的表现甚至不如简单预测平均值。

      score = lr.score(x,y)
      #
      print(lr.predict([[50]]))
      print(lr.predict([[70]]))
      
      • 求出线性回归模型

      分别求出回归的模型的截距和斜率,.coef_方法用来求斜率而.intercept_方法用来求截距

      b = lr.coef_
      c = lr.intercept_
      print("一元线性回归模型为:y={:.2f}x1 + {:.2f}.".format(b[0][0],c[0]))
      
      • 结果
        在这里插入图片描述

完整代码

import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegressiondata = pd.read_csv('data.csv')
a = data.广告投入
# 绘制散点图
plt.scatter(data.广告投入,data.销售额)
plt.show()corr = data.corr()# 求x和y的相关系数
print(corr)
# 估计模型参数,建立回归模型
lr = LinearRegression()
x = data[["广告投入"]]
y = data[["销售额"]]lr.fit(x,y)# 训练模型score = lr.score(x,y)
#
print(lr.predict([[50]]))
print(lr.predict([[70]]))
b = lr.coef_
c = lr.intercept_
print("一元线性回归模型为:y={:.2f}x1 + {:.2f}.".format(b[0][0],c[0]))

多元线性模型实例

多元线性模型与一元线性模型结构差不多相同,有些许差别。

  • 导入数据
    在这里插入图片描述

本次使用的数据为糖尿病的数据,共有10个特征变量的自变量和最后一列的因变量。
通过网盘分享的文件:糖尿病数据.csv
链接: https://pan.baidu.com/s/1lO8IshYhgmkGlNYMBMIK4w 提取码: mh94

完整代码

import pandas as pd
from sklearn.linear_model import LinearRegressiondata = pd.read_csv("糖尿病数据.csv")corr = data[['age','sex','bmi','bp','s1','s2','s3','s4','s5','s6','target']].corr()lr_model = LinearRegression()
x = data[['age','sex','bmi','bp','s1','s2','s3','s4','s5','s6']]
y = data[['target']]lr_model.fit(x,y)score = lr_model.score(x,y)print(lr_model.predict([[-0.0926954778032799,-0.044641636506989,-0.0406959404999971,-0.0194420933298793,-0.0689906498720667,-0.0792878444118122,0.0412768238419757,-0.076394503750001,-0.0411803851880079,-0.0963461565416647]]))
print(lr_model.predict([[-0.0963280162542995,-0.044641636506989,-0.0838084234552331,0.0081008722200108,-0.103389471327095,-0.0905611890362353,-0.0139477432193303,-0.076394503750001,-0.0629129499162512,-0.0342145528191441]]))a = lr_model.coef_
b = lr_model.intercept_print("糖尿病线性回归模型为:y ={:.2f}x1 + {:.2f}x2 + {:.2f}x3 + {:.2f}x4 + {:.2f}x5 + {:.2f}x6 + {:.2f}x7 + {:.2f}x8 + {:.2f}x9 + {:.2f}x10 + {:.2f}.".format(a[0][0],a[0][1],a[0][2],a[0][3],a[0][4],a[0][5],a[0][6],a[0][7],a[0][8],a[0][9],b[0]))
  • 结果
    在这里插入图片描述

可以看到一元线性回归模型和多元线性回归模型的结果只是多元线性回归模型有多个自变量,来控制因变量,且多元线性回归模型要导入多个特征数据,数据处理阶段并无太大区别。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GeoTrust True BusinessID Wildcard

GeoTrust由DigiCert 提供支持,是最受信任和尊重的品牌之一,以提供高保证的网站安全而闻名。 GeoTrust True BusinessID通配符证书 – 以低成本保护多个主机名。即使将其用于您的公司主页或电子邮件服务器主机名,保护所有敏感信息也是您的目标…

华为配置 之 链路聚合

简介: 链路聚合(Link Aggregation)是一种计算机网络技术,通过将多个物理端口汇聚在一起,形成一个逻辑端口,以实现出/入流量吞吐量在各成员端口的负荷分担。当交换机检测到其中一个成员端口的链路发生故障时…

Angular Firebase CRUD 项目推荐

Angular Firebase CRUD 项目推荐 angular-firebase-crud Angular CRUD with Firebase using cloud firestore as a database, angular material and Bootstrap 4. Step by Step tutorial and working angular 7 example app. 项目地址: https://gitcode.com/gh_mirrors/an/an…

SqlSession的线程安全问题源码分析

🎮 作者主页:点击 🎁 完整专栏和代码:点击 🏡 博客主页:点击 文章目录 SqlSession 是线程安全的吗?为什么说是线程不安全的?事务管理问题 数据库连接的共享问题 一级缓存线程安全问题…

gitlab的搭建及使用

1、环境准备 服务器准备 CentOS Linux release 7.9.2009 (Core)&#xff0c;内存至少4G。 修改主机名和配置ip地址 hostnamectl set-hostname <hostname> 关闭主机的防火墙 # 关闭防火墙 systemctl stop firewalld #临时关闭防火墙 systemctl disable firewalld …

【面试系列】深入浅出 Spring Boot

熟悉SpringBoot&#xff0c;对常用注解、自动装配原理、Jar启动流程、自定义Starter有一定的理解&#xff1b; 面试题 Spring Boot 的核心注解是哪个&#xff1f;它主要由哪几个注解组成的&#xff1f;Spring Boot的自动配置原理是什么&#xff1f;你如何理解 Spring Boot 配置…

2024国城杯 Web

这四道题目Jasper大佬都做了镜像可以直接拉取进行复现 https://jaspersec.top/2024/12/16/0x12%20%E5%9B%BD%E5%9F%8E%E6%9D%AF2024%20writeup%20with%20docker/ n0ob_un4er 这道题没有复现成功, 不知道为啥上传了文件, 也在 /tmp目录下生成了sess_PHPSESSID的文件, 但是就是…

SpringBoot教程(十四) SpringBoot之集成Redis

SpringBoot教程&#xff08;十四&#xff09; | SpringBoot之集成Redis 一、Redis集成简介二、集成步骤 2.1 添加依赖2.2 添加配置2.3 项目中使用之简单使用 &#xff08;举例讲解&#xff09;2.4 项目中使用之工具类封装 &#xff08;正式用这个&#xff09;2.5 序列化 &…

【开源免费】基于SpringBoot+Vue.JS校园社团信息管理系统(JAVA毕业设计)

本文项目编号 T 107 &#xff0c;文末自助获取源码 \color{red}{T107&#xff0c;文末自助获取源码} T107&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

FFmpeg 4.3 音视频-多路H265监控录放C++开发二十一.4,SDP协议分析

SDP在4566 中有详细描述。 SDP 全称是 Session Description Protocol&#xff0c; 翻译过来就是描述会话的协议。 主要用于两个会话实体之间的媒体协商。 什么叫会话呢&#xff0c;比如一次网络电话、一次电话会议、一次视频聊天&#xff0c;这些都可以称之为一次会话。 那为什…

git 中 工作目录 和 暂存区 的区别理解

比喻解释 可以把工作目录和暂存区想象成两个篮子&#xff1a; 工作目录是你把所有东西&#xff08;文件和更改&#xff09;扔进去的地方。你正在修改的东西都放在这里。暂存区则是你整理好的东西放进第二个篮子&#xff0c;准备提交给老板&#xff08;提交到仓库&#xff09;…

机器人C++开源库The Robotics Library (RL)使用手册(四)

建立自己的机器人3D模型和运动学模型 这里以国产机器人天机TR8为例,使用最普遍的DH运动学模型,结合RL所需的描述文件,进行生成。 最终,需要的有两个文件,一个是.wrl三维模型描述文件;一个是.xml运动学模型描述文件。 1、通过STEP/STP三维文件生成wrl三维文件 机器人的…

接口测试Day04-postman生成测试报告ihrm项目

测试报告-利用newman插件 安装node.js 安装 双击 .msi 文件&#xff0c;一路下一步安装即可。无需特殊设定。测试安装成功 npm -v 安装npm 安装newman 安装newman npm install -g newman试安装成功 newman -v安装newman插件 - 扩展版 npm install -g newman-reporter-htmlex…

使用Locust对Redis进行负载测试

1.安装环境 安装redis brew install redis 开启redis服务 brew services start redis 停止redis服务 brew services stop redis 安装Python库 pip install locust redis 2.编写脚本 loadTest.py # codingutf-8 import json import random import time import redis …

【Vim Masterclass 笔记01】Section 1:Course Overview + Section 2:Vim Quickstart

文章目录 Section 1&#xff1a;Course Introduction 课程概述S01L01 Course Overview 课程简介课程概要 S01L02 Course Download 课程资源下载S01L03 What Vim Is and Why You Should Learn It 何为 Vim&#xff1f;学来干啥&#xff1f;1 何为 Vim2 为何学 Vim Section 2&…

【服务器】上传文件到服务器并训练深度学习模型下载服务器文件到本地

前言&#xff1a;本文教程为&#xff0c;上传文件到服务器并训练深度学习模型&#xff0c;与下载服务器文件到本地。演示指令输入&#xff0c;完整的上传文件到服务器&#xff0c;并训练模型过程&#xff1b;并演示完整的下载服务器文件到本地的过程。 本文使用的服务器为云服…

高效使用AI完成编程项目任务的指南:从需求分析到功能实现

随着人工智能工具的普及&#xff0c;即便是零编程基础或基础薄弱的用户&#xff0c;也可以借助AI完成许多技术任务。然而&#xff0c;要高效地使用AI完成编程任务&#xff0c;关键在于如何清晰表达需求&#xff0c;并逐步引导AI实现目标。 在本文中&#xff0c;我们将通过开发…

vs2022编译opencv 4.10.0

参考&#xff1a;Windosw下Visual Studio2022编译OpenCV与参考区别在于&#xff0c;没有用cmake GUI&#xff0c;也没有创建build目录&#xff0c;直接用vs2022打开了C:\code\opencv目录&#xff0c;即CMakeLists.txt所在根目录。没有修改默认下载地址&#xff0c;采用手动下载…

centos7 免安装mysql5.7及配置(支持多个mysql)

一&#xff09; 下载免安装包&#xff1a; mysql下载地址: https://dev.mysql.com/downloads/mysql/下载时&#xff0c;选择以前5.7版本&#xff1a; image 下载第一个TAR压缩包&#xff1a; image 二&#xff09; 定义安装路径并解压安装包 1、假设需要把MySQL放到 /usr/local…

怎样在 Word 文档中插入附件(其他文件)?

在 Office &#xff08;比如 Word、Excel 等&#xff09;中是可以插入附件的&#xff0c;比如插入文本文档、视频文件、音乐文件等。本经验就来讲一讲&#xff0c;怎样在 Word 文档中插入附件或其他文件&#xff1f; 在打开的“对象”对话框中&#xff0c;单击【由文件创建】选…