首页 > 其他分享 >《机器学习》——线性回归模型

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

时间:2024-12-29 21:59:49浏览次数:8  
标签:机器 模型 2f lr 线性 data 回归

文章目录

线性回归模型简介

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

一元线性回归模型

在这里插入图片描述

多元线性回归模型

在这里插入图片描述

误差项分析

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

一元线性模型实例

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

  • 实例步骤

    • 导入数据

    • 绘制数据的散点图

    • 求特征之间的相关系数

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

    • 训练模型

    • 测试模型

    • 求出线性回归模型

      • 导入数据

      通过导入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 LinearRegression


data = 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 LinearRegression


data = 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]))
  • 结果
    在这里插入图片描述

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

标签:机器,模型,2f,lr,线性,data,回归
From: https://blog.csdn.net/lou0720/article/details/144809949

相关文章

  • 盒子模型(外边距的设置)
    用于页面中元素的合理布局所有的元素都可以有宽高所有元素都是一个矩形所有元素都可以看成一个盒子盒子包括外边距+边框+内边距+元素内容外边距设置外边距的要素:top、bottom、left、right外边距的尺寸:合法的尺寸单位外边距语法:marign-方向:外边距的尺寸使用百分比作为尺......
  • 异或线性基学习笔记
    更好的阅读体验。前言本文的线性基指异或线性基。由于作者太菜了本文的语言不会特别规范。简介线性基简称基,它是一个数的集合,并且每个序列都拥有至少一个线性基。线性基有三个性质:线性基中的几个数异或后不能得到\(0\)。线性基中的数在异或后能得到原序列中的所有数。......
  • C# OpenCV机器视觉:漫水填充
    在一个阳光灿烂得简直要闪瞎人眼的下午,阿强正在实验室里和他的那些宝贝仪器们“谈情说爱”,捣鼓他的最新宝贝项目——一个智能得仿佛能看穿一切的图像处理系统。突然,“砰”的一声,门被撞开了,他的好朋友小李像个没头苍蝇似的冲了进来,脸上的焦虑都快溢出来了,仿佛下一秒就要原地......
  • DRT-o1:腾讯推出专注于文学翻译的 AI 模型,擅长理解比喻和隐喻等修辞手法,在翻译时保留原
    ❤️如果你也关注AI的发展现状,且对AI应用开发非常感兴趣,我会每日跟你分享最新的AI资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!......
  • 手把手教你学simulink(42.4)--储能系统场景示例:基于Simulink开发一个储能系统模型,模拟其
    目录基于Simulink的储能系统在电网调峰场景下的项目实例详细介绍1.项目背景2.系统架构2.1储能系统组成2.2电网调峰场景3.模型设计3.1储能单元建模3.2功率转换系统(PCS)建模3.3控制系统设计3.4电网模型3.5仿真环境搭建4.仿真与优化4.1运行仿真4.2参数......
  • DeepSeek V3:DeepSeek 开源的最新多模态 AI 模型,编程能力超越Claude,生成速度提升至 60
    ❤️如果你也关注AI的发展现状,且对AI应用开发非常感兴趣,我会每日跟你分享最新的AI资讯和开源应用,也会不定期分享自己的想法和开源实例,欢迎关注我哦!......
  • 【机器学习超详细版】用K-近邻算法精准分类鸢尾花并实现数据可视化,全网最完整详细
    使用K-近邻算法(KNN)进行鸢尾花数据集分类及可视化分析在本篇博客中,我们将深入探讨如何使用K-近邻算法(K-NearestNeighbors,KNN)对经典的鸢尾花数据集(IrisDataset)进行分类,并通过多种可视化手段来理解数据和模型的表现。通过这些步骤,你将不仅能够实现一个高效的分类模型,......
  • SD模型微调之Textual Inversion和Embedding fine-tuning
    SD模型微调方法TextualInversion详细介绍,包括数据集准备,模型微调过程,推理过程,优缺点等。......
  • Odoo17 4模型计算字段:compute_sudo=True:在更高权限下执行计算
    在Odoo开发中,compute字段是一种强大的工具,用于动态计算字段的值。然而,有时你可能会遇到这样的情况:计算需要访问一些普通用户无法访问的数据,或者需要跨越访问控制。这时,compute_sudo=True标志就派上了用场。本文将详细介绍compute_sudo=True的含义、作用、应用场景......
  • 空间曲线的线性参数插值
    空间曲线的线性参数插值​在断层曲面拟合的过程中,发现当解释的空间数据点过于稀疏的化,其断层面拟合的效果较差,我们采用空间曲线线性插值加密的算法,增加插值控制点的数量,改善插值的效果。1.1问题描述即算法描述已知空间三维离散折线\(l=(p_1,p_2,...,p_i,...,p_n)\)......