《机器学习》一元、多元线性回归的实现 No.4

news2024/11/18 3:19:00

一、一元线性回归实现

先直接看完整代码:

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

date = pd.read_csv('data.csv') #导入数据

plt.scatter(date['广告投入'],date['销售额'])  # 用散点图展示数据
plt.show()

corr = date.corr()   # 计算相关系数,判断数据和结果直接是否存在因果关系

lr = LinearRegression()   # 建立训练模型,全部使用默认参数
x = date[['广告投入']]  # 训练集
y = date[['销售额']]  # 标签项

lr.fit(x,y)  # 训练数据集

result = lr.predict(x)  # 对训练集进行测试
score = lr.score(x,y)   # 得到测试结果的评分,即正确率

a = round(lr.intercept_[0],2)  # 打印截距,四舍五入保留2为小数,intercept为ndarry(1,)的一维数组,只有一个元素
b = round(lr.coef_[0][0],2)  # 打印斜率,四舍五入保留两位小数,因为coef为ndarry(1,1)的二维数组类型,形状为一行一列

print("线性回归模型为:y = {}x + {}".format(b,a))

predict = lr.predict([[40],[45],[50]])  # 输入数据,进行预测
print(predict)

其运行结果为:

 date.csv文件内容为:

           

    

二、 线性回归模型类分析

        class sklearn.linear model.LinearRegression( fit_intercept = True,normalize = False,copy_X = True,n_jobs = None )

 

1、参

  • fit_intercept是否有截距,默认为True。如果为False则直线过原点
  • normalize是否将数据归一化,默认为False。如果为True,则在拟合之前将输入数据进行标准化,即将样本的每个特征减去其均值并除以其标准差,以确保每个特征具有零均值和单位方差
  • copy_X是否复制X,默认为True。如果为False,则直接对原数据进行覆盖,及经过中心化、标准化后,是否把新数据覆盖到原数据上
  • n_jobs计算式设置的任务个数,如果选择-1则代表使用所有的CPU,这一参数的对于目标个数>1且足够大规模的问题有加速作用 

 

2、返回值Attributes

调试模式下:

        coef_ : 对于线性回归问题计算得到的feature(特征)的系数,如果输入的是多目标问题,则返回一个二维数组,如果是单目标问题,返回一维数组,即如果对于一元线性回归y = β0 + β1x + ε,这里的corf_返回β1的值,如果是多元的,则返回多个β的值,二维数组类型返回

        intercept_ :代表线性回归模型的截距,即当所有特征的取值都为0时,模型预测的输出值。对于多维特征的线性回归模型,intercept_是一个标量。y = β0 + β1x + ε 中β0 的值

3、方法

        fit(x,y) :对训练集x和y进行训练

        predict(x):使用训练得到的估计器对输入为x的集合进行预测,得到预测值

        score(x,y):预测效果评分

4、相关系数

        又叫皮尔逊相关系数,指的是特征变量(自变量)与因变量之间的线性关系强度的度量。具体来说,相关系数衡量的是自变量与因变量之间的线性相关程度,即自变量的变化对因变量的影响程度。一般用r表示,计算方式如下所示:

Cov(X,Y)表示X与Y的协方差Var[X] 为X的方差,Var[Y] 为Y的方差

| r | >= 0.8时,表示高度相关,即存在高度因果关系

0.5<= | r | < 0.8 时,表示中度相关

0.3<= | r | < 0.5 时,表示低度相关

| r | < 0.3 时,表示不相关

此时可以通过调试模式看到上述代码中corr 所计算的相关系数

5、拟合优度:

其计算公式为:

SSR :回归平方和, SST:离差平方和

1、反应回归直线的拟合程度

2、取值范围为[0,1]

3、R方越接近1,说明拟合效果越好,越接近0,说明拟合效果越越差

4、R方的平方根是相关系数

三、多元线性回归实现

1、有下列一份文件 "多元线性回归.csv"

2、调整R方

在上述一元线性回归模型中,使用R方来判断数据与模型的拟合程度,那么在多元的线性回归中,就不能使用R方来判断了,需要使用调整R方来判断,

R方的公式为:

调整R方公式为:

n代表样本数据的观测数量,p代表模型中自变量的数量。

3、假设检验

步骤:

假设事件H0是真的,然后判别小概率事件是否发生,如果发生,就拒绝H0事件,接受H1事件,如果没有发生,就接收H0事件,即小概率事件不发生是极大概率事件,所以上述 假设合理,但是如果小概率事件发生了,此时拒绝了H0就相当于拒绝了真实情况,那么就犯了第一类错误,即拒真,拒真概率就是我们定的α,即显著性水平,一般为0.05,

第一类错误:P(拒绝H0|H0真) = α

第二类错误:P(接受H0|H0假) = β

1)F检验(线性关系检验)

检验自变量x与因变量y之间的线性关系是否显著,或者说,他们之间能否用一个线性模型来表示。(对整个方程显著性的检验)

2)T检验(回归系数检验)

通过对回归系数β与0的检验,看其是否有显著性差异,来判断回归系数是否显著。(检验系数是否显著)

4、数据标准化

1)0~1标准化

         将原始数据自变量的每一个值减去最小值再除以最大值减最小值

2)z标准化

        将原始数据自变量的每一个数值减去自变量平均值再除以标准差

5、实现代码

import pandas as pd
from sklearn.linear_model import LinearRegression

data = pd.read_csv("多元线性回归.csv",encoding='gbk',engine='python')  # 导入数据,编码方式为gbk模式,engine表示用Python去读取信息

corr = data[["体重",'年龄','血压收缩']].corr()  # 计算相关系数

lr = LinearRegression()  # 建立模型
x = data[["体重",'年龄']]  # 设置训练集
y = data[['血压收缩']]   # 设置标签

lr.fit(x,y)  # 训练数据

score = lr.score(x,y)  # 查看评分,正确率,计算方法叫 调整R方

predict_1 = lr.predict([[40,60]])  # 输入数据进行测试
predict_2 = lr.predict([[50,80],[90,50]])

a = lr.coef_  # 表示出B的值
b = lr.intercept_  # 表示截距的值
print("线性回归模型为:y = {:.2f}x1 + {:.2f}x2 + {:.2f}".format(a[0][0],a[0][1],b[0]))

其运行结果为:

其对应的截距和斜率的值为:

四、案例

有下列代码数据,存放在文件 案例.csv 中

对其进行训练,得到本年固定资产投资额

import pandas as pd
from sklearn.linear_model import LinearRegression

data = pd.read_excel("案例.xlsx")
# 计算相关系数
corr = data[["分行编号",'不良贷款','各项贷款余额','本年累计应收贷款','贷款项目个数','本年固定资产投资额']].corr()
# 建立模型
lr = LinearRegression()
x = data[['不良贷款','各项贷款余额','本年累计应收贷款','贷款项目个数']]
y = data[['本年固定资产投资额']]
# 训练数据
lr.fit(x,y)

score = lr.score(x,y)  # 查看评分,正确率,计算方法叫 调整R方
predict_1 = lr.predict([[1.5,52,12,15]])  # 输入数据进行测试
predict_2 = lr.predict([[10,80,8,9],[15,90,50,11]])

a = lr.coef_  # 表示出B的值
b = lr.intercept_  # 表示截距的值
print("线性回归模型为:y = {:.2f}x1 + {:.2f}x2 + {:.2f}x3+ {:.2f}x4 + {:.2f}".format(a[0][0],a[0][1],a[0][2],a[0][3],b[0]))

其打印结果为:

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

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

相关文章

【用Java学习数据结构系列】震惊,二叉树原来是要这么学习的(一)

前言 终于到了之前C语言没有讲过的数据结构了&#xff0c;那就是二叉树了&#xff0c;关于二叉树的学习难度确实比前面学习的数据结构都要难一点&#xff0c;所以我们这个关于二叉树的博客大概率是有好几篇的。如有哪里出现错误也欢迎指出唔。 二叉树的概念 Java 中的二叉树是…

【Oracle点滴积累】解决ORA-20000: ORA-12899: value too large for column错误的方法

广告位招租&#xff01; 知识无价&#xff0c;人有情&#xff0c;无偿分享知识&#xff0c;希望本条信息对你有用&#xff01; 今天和大家分享ORA-20000: ORA-12899: value too large for column错误的解决方法&#xff0c;本文仅供参考&#xff0c;谢谢&#xff01; A fatal…

【C语言】二叉树的深度理解

&#x1f36c;个人主页&#xff1a;Yanni.— &#x1f308;数据结构&#xff1a;Data Structure.​​​​​​ &#x1f382;C语言笔记&#xff1a;C Language Notes 前言 在之前学习了二叉树的基本概念&#xff0c;但二叉树有着更深入知识理解&#xff0c;这篇文章可以帮助大…

2 种方式申请免费 SSL 证书,阿里云 Certbot

如何使用免费的 SSL 证书&#xff0c;有时在项目中需要使用免费的 SSL 证书&#xff0c;Aliyun 提供免费证书&#xff0c;三个月有效期&#xff0c;可以直接在aliyun 申请&#xff0c;搜索 SSL 证书&#xff0c;选择测试证书。 Aliyun 证书需要每三月来来换一次&#xff0c;页…

ubuntu中python 改为默认使用python3,pip改为默认使用pip3

一、安装pip和python&#xff08;有的话可跳过&#xff09; 更新软件源 sudo apt update !!!apt和apt-get apt apt-get、apt-cache 和 apt-config 中最常用命令选项的集合。 部分截图为apt-get&#xff0c;建议直接用apt 安装pip和python ubuntu 18.04和更高版本默认安…

申请中的专利可以用来申报高企吗

申请中的专利可以用来申报高企吗&#xff1f; 申请中的专利是否可以用于高新技术企业&#xff08;简称“高企”&#xff09;申报时&#xff0c;我们需要深入了解高企认定的具体条件和要求&#xff0c;以及专利在其中的角色和地位。 高新技术企业认定的基本条件 高新技术企业认定…

图像分类数据集|新冠肺炎|3类

新冠肺炎图像分类数据集&#xff0c;总共三类&#xff0c;获取地址在最后&#xff1a; 训练集&#xff1a; 251 测试集&#xff1a; 66 类别名&#xff1a; [‘Covid’, ‘Normal’, ‘Viral Pneumonia’] 数据集整理不易&#xff0c;获取地址如下&#xff1a; https://ite…

VM虚拟机-Ubuntu莫名其妙断网及解决

问题解决 由于Ubuntu下访问GitHub总是很慢&#xff0c;所以在鼓捣解决方法时不知怎么的直接给干的没法访问互联网了&#xff0c;虽然之前保存了快照&#xff0c;但恢复了几个快照都是没网&#xff08;ping不通&#xff09;&#xff0c;后续的解决方法如下。 在命令行中输入 …

EchoMimic—语音驱动图像

简介 EchoMimic是阿里巴巴达摩院推出的一个AI驱动的口型同步技术项目。通过一段音频和一张人物的面部照片&#xff0c;生成一个看起来像是在说话的视频&#xff0c;其中的人物口型动作与音频中的语音完美匹配。   EchoMimic优点&#xff1a; 1.口型同步生成&#xff1a;能根据…

WebRTC音视频开发读书笔记(六)

数据通道不仅可以发送文本消息, 还可以发送图片、二进制文件,将其类型binaryType属性设置成arraybuffer类型即可. 九\、文件传输 1、文件传输流程 &#xff08;1&#xff09;使用表单file打开本地文件 &#xff08;2&#xff09;使用FileReader读取文件的二进制数据 &#…

【PyCharm】配置“清华镜像”地址

文章目录 前言一、清华镜像是什么&#xff1f;二、pip是什么&#xff1f;三、具体步骤1.复制镜像地址2.打开PyCharm&#xff0c;然后点击下图红框的选项3.在弹出的新窗口点击下图红框的选项进行添加4.在URL输入框中粘贴第一步复制的地址&#xff0c;名字可以不更改&#xff0c;…

电力调度控制台作为智能电网的中枢大脑,引领能源高效调度新时代

在当今这个能源需求日益增长、电力网络日益复杂的时代&#xff0c;电力调度控制台作为智能电网的核心组成部分&#xff0c;正扮演着至关重要的角色。它不仅是电力系统中信息汇聚与决策输出的中枢大脑&#xff0c;更是实现电力资源优化配置、保障电网安全稳定运行的关键所在。 智…

MYSQL查询规范:索引

前言 工作有段时间了&#xff0c;现在看以前写的代码、sql之类的&#xff0c;实属辣眼睛。 这里将给出一些目前遇到的MYSQL查询规范&#xff08;索引&#xff09;&#xff0c;并长期更新 索引 众所周知&#xff0c;索引能提高数据查询效率&#xff08;前提是该字段被用在WHERE、…

Springboot邮件发送:如何配置SMTP服务器?

Springboot邮件发送集成方法&#xff1f;如何提升邮件发送性能&#xff1f; 对于使用Springboot的开发者来说&#xff0c;配置SMTP服务器来实现邮件发送并不是一件复杂的事情。AokSend将详细介绍如何通过配置SMTP服务器来实现Springboot邮件发送。 Springboot邮件发送&#x…

【SpringBoot】SpringBoot中的异常处理和异常跳转页面

目录 1.异常跳转页面 1.1 概念 1.2 使用 2.异常处理 2.1 概念 2.2 通过ExceptionHandler 注解处理异常&#xff08;局部处理&#xff09; 2.3 通过ControllerAdvice 注解处理异常&#xff08;全局处理&#xff09; 2.4 通过 SimpleMappingExceptionResolver 对象处理…

AI大模型达人秘籍:豆瓣9.2分推荐必读!

有很多程序员正在AIGC赛道中默默发财&#xff0c;有通过短视频做内容爆火&#xff0c;接广告的&#xff1b;有卖AI解决方案的&#xff1b;有卖AI课程的&#xff1b;也有卖AI产品&#xff0c;慢慢做大做强的…更不必说&#xff0c;那些拿下“人均年薪100万”大模型相关岗位的“赢…

多模态 AI 是零售业的未来吗?使用 GPT-4 Vision 和 MongoDB 矢量搜索探索智能产品发现

生成式人工智能如何重新定义零售盈利能力 欢迎来到雲闪世界。想象一下这样的购物体验&#xff1a;您上传了一张心仪服装或商品的照片。片刻之后&#xff0c;您便会收到来自您喜爱的商店的个性化、AI 驱动的类似商品推荐。这是一种革命性的零售体验&#xff0c;由一款创新应用实…

从零到一,数据恢复不求人!2024年四款全免费神器,轻松搞定

活在这个电脑手机满天飞的时代&#xff0c;我们天天跟数据打交道。工作文件、家庭照片、视频&#xff0c;这些都是我们的宝贝&#xff0c;一旦没了或者出问题&#xff0c;那可真够呛。好在我们有高科技帮忙&#xff0c;数据恢复现在也不是啥大问题。今儿个&#xff0c;我要给你…

数说故事 | 2024巴黎奥运会,“谷子文化”出圈了

全红婵金牌&#xff0c;全网沸腾。 摘金之后全妹的痛包&#xff08;itabag&#xff0c;是指挂满人物徽章和玩偶等周边的包包&#xff0c;因为这样的包会让人感觉“奇怪和夸张&#xff0c;日语的“痛”有此含义&#xff0c;所以被称为“痛包”&#xff09;&#xff0c;也让二次…

多模态大模型(MLLM):架构篇

**【导读】**多模态大模型主要是以LLM作为核心决策模块&#xff0c;主流架构有两种&#xff1a;LLM as Discrete Scheduler/Controller和LLM as joint part of system&#xff0c;第一种LLM充当任务调度的作用&#xff0c;第二种LLM通过Encoder-LLM-Decoder结构作为系统的关键连…