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

一、一元线性回归实现

先直接看完整代码:

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegressiondate = 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 LinearRegressiondata = 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 LinearRegressiondata = 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.mzph.cn/web/51029.shtml

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

相关文章

这对二婚夫妻结婚半年,一起生活才一个月,就走到了婚姻尽头!

这对二婚夫妻结婚半年&#xff0c;一起生活才一个月&#xff0c;就走到了婚姻尽头&#xff01; 这是一篇涉离婚纠纷的民事起诉状 &#xff08;范文点评&#xff09; 离 婚 起 诉 状 原告&#xff1a;韩某斌&#xff0c;男&#xff0c;现年37岁&#xff0c;汉族&#xff0c;打…

记录一个变量溢出的bug

文章目录 如题 如题 count2变量溢出了&#xff08;超过了255&#xff09;&#xff0c;结果导致busOff_16bitRecordHILTime变量莫名其妙被清0

「C++系列」vector 容器

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站&#xff1a;人工智能教程 文章目录 一、vector 容器1. 基本特性2. 基本操作3. 注意事项 二、应用场景1. 应用场景2. 案例案例一&#xff1…

DRF——请求的封装与版本管理

文章目录 django restframework1. 快速上手2. 请求数据的封装3. 版本管理3.1 URL的GET参数传递&#xff08;*&#xff09;3.2 URL路径传递&#xff08;*&#xff09;3.3 请求头传递3.4 二级域名传递3.5 路由的namespace传递 小结 django restframework 快速上手请求的封装版本…

公司的全称可以申请注册商标吗,还有什么注意!

近日有个网友找到普推知产商标老杨&#xff0c;发来公司全称&#xff0c;问这个可以申请注册商标不&#xff0c;看发来是“贵州**酒业有限公司”&#xff0c;应该是做茅台镇酒的&#xff0c;以前以分析过《公司全称能不能注册商标》&#xff0c;这次帮网友分析完做下补充。 公…

基于springboot的招聘系统的设计与实现

TOC springboot614基于springboot的招聘系统的设计与实现--论文 研究背景 近年来&#xff0c;由于计算机技术和互联网技术的快速发展&#xff0c;使得所有企事业单位内部都是数字化、信息化、无纸化的发展趋势&#xff0c;随着趋势的发展&#xff0c;各种决策系统、辅助系统…

编码器精度

系列文章目录 1.元件基础 2.电路设计 3.PCB设计 4.元件焊接 5.板子调试 6.程序设计 7.算法学习 8.编写exe 9.检测标准 10.项目举例 11.职业规划 文章目录 前言一、影响因素二、编码器精度三、位置因素四、环境因素五、磁编码器 前言 送给大学毕业后找不到奋斗方向的你&…

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

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

中秋节月饼销售利用106短信群发平台业绩翻倍案例分析

在中秋节这一传统佳节&#xff0c;月饼作为节日的标志性食品&#xff0c;其销售市场竞争尤为激烈。为了在众多品牌中脱颖而出&#xff0c;不少月饼销售企业开始探索创新的营销方式。其中&#xff0c;利用106短信群发平台进行精准营销&#xff0c;成为众多企业实现业绩翻倍的有效…

TCP端口范围

ip_local_port_range sysctl -a | grep ip_local_port_range | head 默认情况下&#xff0c;net.ipv4.ip_local_port_range的默认值为32768-60999。这意味着本地应用程序可以使用的端口号范围为32768到60999。 sysctl -a | grep net.ipv4.ip_local_reserved_ports |head …

C++ 特殊类设计以及单例模式

目录 1 不能被拷贝 2 只能在堆上创建对象 3 只能在栈上创建对象 4 禁止在堆上创建对象 5 不能被继承的类 6 单例类 特殊类就是一些有特殊需求的类。 1 不能被拷贝 要设计一个防拷贝的类&#xff0c;C98之前我们只需要将拷贝构造以及拷贝赋值设为私有&#xff0c;同时只声明…

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

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

【学习笔记】8、脉冲波形的变换与产生

本章简略记录。 8.1 单稳态触发器&#xff08;脉冲触发&#xff09; 单稳态触发器 应用于 &#xff1a;&#xff08;1&#xff09;脉冲整型&#xff08;2&#xff09;脉冲延时 &#xff08;3&#xff09;定时 单稳态触发器的工作特性&#xff1a; 没有触发脉冲作用时&#xf…

Vue项目-三级联动的路由跳转与传参

三级联动组件的路由的跳转与传参 三级联动&#xff0c;用户可以点击的&#xff1a;一级分类、二级分类和三级分类 以商城项目为例&#xff0c;Home模块跳转到Search模块&#xff0c;以及会把用户选中的产品&#xff08;产品名字、产品ID&#xff09;在路由跳转的时候&#xff…

《黑神话.悟空》:一场跨越神话与现实的深度探索

《黑神话.悟空》&#xff1a;一场跨越神话与现实的深度探索 在国产游戏日益崛起的今天&#xff0c;《黑神话.悟空》以其独特的剧情、丰富的人物设定和深刻的主题&#xff0c;成为了无数玩家翘首以盼的国产3A大作。这款游戏不仅是一次对传统故事的创新演绎&#xff0c;更是一场对…

操作系统:内存管理策略

外部碎片 当应用程序启动时&#xff0c;由操作系统负责给该应用程序分配其内存空间&#xff0c;假设此时启动了三个应用程序&#xff0c;操作系统分别给其分配了100m&#xff0c;10m和50m的内存&#xff0c;内存情况如下图 此时如果程序B下线&#xff0c;程序A和程序C之间便会…

【css】伪元素实现图片个悬停文字聚焦效果

实现重点&#xff1a; 文字覆盖在图片上&#xff1a; 通过使用 position: absolute 将 .box 文字盒子定位在图片上方。父容器 .img-wrap 使用了 position: relative 确保子元素的绝对定位在父容器的边界内生效。 创建悬停效果&#xff1a; 通过使用 &::before 和 &::…

国富基金入股的关联性与奇瑞依赖症,大昌科技业务独立性引关注

《港湾商业观察》廖紫雯 日前&#xff0c;安徽大昌科技有限公司&#xff08;以下简称&#xff1a;大昌科技&#xff09;更新招股书并完成三轮问询&#xff0c;公司冲刺深交所创业板得到进一步进展。此前&#xff0c;2023年6月&#xff0c;大昌科技IPO获深交所受理&#xff0c;…

【微信小程序】自定义组件 - 数据、方法和属性

1. data 数据 2. methods 方法 在小程序组件中&#xff0c;事件处理函数和自定义方法需要定义到 methods 节点中&#xff0c;示例代码如下&#xff1a; 3. properties 属性 在小程序组件中&#xff0c;properties 是组件的对外属性&#xff0c;用来接收外界传递到组件中的数…

杰发科技AC7840——CAN通信简介(8)_通过波特率和时钟计算SEG_1/SEG_2/SJW/PRESC

通过公式计算 * 波特率和采样点计算公式&#xff1a;* tSeg1 (S_SEG_1 2); tSeg2 (S_SEG_2 1).* BandRate (SCR_CLK / (S_PRESC 1) / ((S_SEG_1 2) (S_SEG_2 1))), SCR_CLK 为CAN 模块源时钟* SamplePoint (tSeg1 / (tSeg1 tSeg2)). {0x0D, 0x04, 0x04, 0x3B},…