当前位置: 首页 > news >正文

线性回归的应用

一·介绍

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

(用于线性回归任务,通过拟合数据找到最优线性模型,实现对连续目标值的预测 )

1. 参数

  • fit_intercept
    (控制模型是否拟合截距项,若为False,回归直线过原点 )
  • normalize
    (决定是否对输入数据做归一化处理 )
  • copy_X
    (设置是否复制输入特征矩阵XFalse时会直接覆盖原数据 )
  • n_jobs
    (指定并行计算的任务数,-1表示利用所有 CPU 加速,适用于多目标大规模场景 )

2. Attributes(属性,模型训练后可获取 )

  • coef_
    (存储线性回归的特征系数,多目标任务返回二维数组,单目标返回一维数组 )
  • intercept_
    (线性模型的截距项,即独立于特征的偏移值 )

3. 方法

  • fit(X, y[, n_jobs])
    (用训练集X和标签y训练模型,学习特征与标签的线性关系 )
  • predict(X)
    (用训练好的模型,对输入X(测试集或新数据)做预测 )
  • score(X, y[, sample_weight])
    (评估模型在数据集X和标签y上的预测效果,可带样本权重 )

二·代码部分

1·一元线性回归

csv数据

广告投入,销售额
29,77
28,62
34,93
31,84
25,59
29,64
32,80
31,75
24,58
33,91
25,51
31,73
26,65
30,84
#x  y

2·代码

import pandas as pd#pandas基于numpy封装的  #列名 LinearRegression: <class 'sklearn.lin.^A1 ^16
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression"""
相关关系:包含因果关系和平行关系
因果关系:回归分析【原因引起结果,需要明确自变量和因变量】
平行关系:相关分析【无因果关系,不区分自变量和因变量】
"""data = pd.read_csv("data.csv")
a = data.广告投入
#绘制散点图
plt.scatter(data.广告投入, data.销售额)
plt.show()corr = data.corr()#求x和y的相关系数
#估计模型参数,建立回归模型
lr = LinearRegression()
x = data[['广告投入']]
y = data[['销售额']]lr.fit(x,y)#第四步、对回归模型进行检验
"""此处的score指R方"""
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))#第五步、利用回归模型进行预测
predict = lr.predict([[40], [45], [50]])
print(predict)

data = pd.read_csv("data.csv")
a = data.广告投入

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

 

corr = data.corr()#求x和y的相关系数
#估计模型参数,建立回归模型
lr = LinearRegression()
x = data[['广告投入']]
y = data[['销售额']]

相关系数

又称皮尔逊相关系数,是研究变量之间相关关系的度量,一般用字母 r 表示。
计算方式:

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

 相关系数

相关系数解释:

1. |r| \geq 0.8时,可视为两个变量之间高度相关

2. 0.5 \leq |r| < 0.8时,可视为中度相关

3. 0.3 \leq|r| < 0.5$时,视为低度相关

4. |r| < 0.3时,说明两个变量之间的相关程度极弱,可视为不相关

DataFrame数据列表

 

 

y=coef x+intercept y=3.7379x+-36.36123

测试的结果

#第四步、对回归模型进行检验
"""此处的score指R方"""
result = lr.predict(x)
score = lr.score(x, y)

 

真实的结果就是y

 

 对比观察

 回归:得到 1 个具体的连续性的值

如何判断?

拟合优度
即判定系数 R 方,计算公式如下:

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

1. 反映了回归直线的拟合程度。
2. 取值范围在 [0,1] 之间。
3.R 方越接近 1,说明拟合效果越好;R 方越接近 0,说明拟合效果越差。
4.R 方的平方根是相关系数。

 返回值说明

a = round(lr.intercept_[0],2)#查看截距
b = round(lr.coef_[0][0], 2)#查看斜率
print("线性回归模型为: y = {}x + {}.".format(b, a))

 

 2·多线线性回归

import pandas as pd
from sklearn.linear_model import LinearRegression# 导入数据
data = pd.read_csv("多元线性回归.csv", encoding='gbk', engine='python')# 打印相关系数矩阵
corr = data[["体重", "年龄", "血压收缩"]].corr()# 第二步,估计模型参数,建立回归模型
lr_model = LinearRegression()
x = data[['体重', '年龄']]
y = data[['血压收缩']]lr_model.fit(x, y)  # 训练模型# 第四步,对回归模型进行检验
score = lr_model.score(x, y)  # sklearn statsmodes(数理统计这个专业)# 第五步,利用回归模型进行预测
print(lr_model.predict([[80, 60]]))
print(lr_model.predict([[70, 30], [70, 20]]))# 获取自变量系数和截距
a = lr_model.coef_
b = lr_model.intercept_
print("线性回归模型为: y = {:.2f}x1 + {:.2f}x2 + {:.2f}.".format(a[0][0], a[0][1], b[0]))

http://www.xdnf.cn/news/1213957.html

相关文章:

  • 明智运用C++异常规范(Exception Specifications)
  • 爬虫验证码处理:ddddocr 的详细使用(通用验证码识别OCR pypi版)
  • 架构实战——架构重构内功心法第一式(有的放矢)
  • 地图可视化实践录:显示高德地图和百度地图
  • Linux 进程管理与计划任务详解
  • 关于神经网络CNN的搭建过程以及图像卷积的实现过程学习
  • Mac下的Homebrew
  • 如何不让android studio自动换行
  • cpp c++面试常考算法题汇总
  • 高防CDN与高防IP的选择
  • 【ip】IP地址能否直接填写255?
  • SpringBoot升级2.5.3 2.6.8
  • gtest框架的安装与使用
  • 基于成像空间转录组技术的肿瘤亚克隆CNV原位推断方法
  • android-PMS-创建新用户流程
  • VUE -- 基础知识讲解(三)
  • 记录Linux下ping外网失败的问题
  • 时序数据库厂商 TDengine 发布 AI 原生的工业数据管理平台 IDMP,“无问智推”改变数据消费范式
  • 问题1:uniapp在pages样式穿刺没有问题,在components组件中样式穿刺小程序不起效果
  • Django常见模型字段
  • 一篇文章读懂麦科信CP3008系列高频交直流电流探头
  • 基于数字信息化的全面研发项目管理︱裕太微电子股份有限公司研发项目管理部负责人唐超
  • 新手向:DeepSeek 部署中的常见问题及解决方案
  • Jupyter Notebook 中显示图片、音频、视频的方法汇总
  • RabbitMQ 发送方确认的两大工具 (With Spring Boot)
  • 开源 Arkts 鸿蒙应用 开发(十三)音频--MP3播放
  • 在线教育场景下AI应用,课程视频智能生成大纲演示
  • 大厂主力双塔模型实践与线上服务
  • 【swoole Windows 开发(swoole-cli 开发 hyperf)】
  • 算法训练营day36 动态规划④ 1049. 最后一块石头的重量 II、494. 目标和、474.一和零