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

机器学习之线性回归算法预测数据

机器学习之线性回归算法预测数据

目录

  • 机器学习之线性回归算法预测数据
    • 线性回归算法
      • 概念
      • 理解
      • 算法导入
      • 线性回归模型
      • 参数理解
      • 误差项分析
    • LinearRegression理解
      • 参数理解
      • 返回值
      • 方法
      • 基本格式
    • 预测一元线性回归数据
      • 问题及理解
      • 可视化数据理解
      • 数据预测
    • 预测二元线性回归数据
      • 问题及理解
      • 数据测试
    • 预测多元线性回归数据
      • 问题及理解
      • 数据测试

线性回归算法


概念

线性回归线性回归是利用数理统计中回归分析, 来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法。

理解

有n个特征数据与数据结果有关,根据历史数据训练出线性回归模型,给定数据,预测结果。自变量为特征数据,因变量为数据结构。

算法导入

from sklearn.linear_model import LinearRegression

线性回归模型

  • 一元线性回归
    公式:
    在这里插入图片描述

  • 多元线性回归
    公式:
    在这里插入图片描述

参数理解

在这里插入图片描述

x可以理解为特征数据,y为要求的结果数据,线性回归只能求回归值,只能是数字结果。

误差项分析

  • 误差项可以省略吗?
    误差项不可省略,误差是必然产生的。并且由于产生了误差项,我们便可以基于误差的特点来进行对线性回归的参数估计的。
  • 误差项有什么特点?
    独立同分布。
    每个样本点都是独立的,在同一个分布函数下。
    例:贷款,每个人与每个间是没有联系的,贷多少钱完全基于你的工资和其他情况是独立的,同分布就是我的这套估计体系是我人民银行的估机体系,也就是说每个样本点是在同一个分布函数下。

LinearRegression理解

查看LinearRegression参数定义


    def __init__(
        self,
        *,
        fit_intercept=True,
        normalize="deprecated",
        copy_X=True,
        n_jobs=None,
        positive=False,
    )

参数理解

  • fit_intercept:是否有截距(是否过原点)
  • normalize:是否归一化(归一化就是每个数据特征占比相同)
  • copy_X:是否复制x数据
  • n_jobs:任务个数占比CPU(-1代表所有)

一般不用设置,默认就可。

返回值

  • intercept:截距(β0)

(l.intercept_[0],2)

  • coef:系数(也就是β)

(l.coef_[0][0],2),如果有多个系数,更改第二个[0],为相应顺序,索引从0开始,第二个为(l.coef_[0][1],2),。

方法

  • fit(x,y):训练模型,x为特征数据,y为结果
    score(x,y):拟合度,x,y为已知的数据及结果,计算fit()模型与数据的拟合度在[0,1]间,趋于1优,趋于0劣
  • predict([[]数据]):预测数据结果,括号内为二维数组
  • corr():数据相关系数判断,若特征数据与数据结果的相关系数的绝对值为r,则
    • r>=0.8,高度相关
    • 0.5<=r<0.8,中度相关
    • 0.3<=r<0.5,低度相关
    • r<0.3,相关度极弱,可以视为不相关

基本格式

**
l = LinearRegression()
x=特征数据
y=数据结果
l.fit(x,y)
result = l.predict(x1)**
先引用LinearRegression函数,根据历史特征数据和数据结果,训练fit()模型,然后预测x1的回归结果result

预测一元线性回归数据


问题及理解

问题:给广告投入和销售额数据,预测其他广告投入的销售额

特征数据:广告投入
类别标签:销售额
给定的数据:
在这里插入图片描述

可视化数据理解

代码展示:

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

data = pd.read_csv('data.csv')
co = data.corr()

plt.scatter(data.广告投入,data.销售额)
plt.show()

运行结果:
在这里插入图片描述

数据预测

代码展示:

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

data = pd.read_csv('data.csv')
co = data.corr()

plt.scatter(data.广告投入,data.销售额)
plt.show()

l = LinearRegression()
# 特征标签
x = data[['广告投入']]
# 回归结果
y = data[['销售额']]
# # 训练模型
l.fit(x,y)
# 拟合度
corr = data.corr()
re = l.predict(x)
sc = l.score(x,y)
# 截距
inte = round(l.intercept_[0],2)
# 系数
coef = round(l.coef_[0][0],2)
res = l.predict([[34]])
print(inte,coef)
print(f'一元线性回归:y={inte}+{coef}*x')
print(f'工资:34,预测:{res}')

运行结果:
相关系数调试查看:在这里插入图片描述
在这里插入图片描述

预测二元线性回归数据

问题及理解

问题:给体重、年龄和血压数据,预测其他体重、年龄的血压

特征数据:体重、年龄
类别标签:血压
给定的数据:

在这里插入图片描述

数据测试

代码展示:

import pandas as pd
from sklearn.linear_model import LinearRegression
data_2 = pd.read_csv('data2.csv', encoding='gbk')
# print(data_2)
co_2 = data_2.corr()
x_2 = data_2[['体重','年龄']]
y_2 = data_2[['血压收缩']]
ll = LinearRegression()
ll.fit(x_2,y_2)
# 预测结果
re_2 = ll.predict(x_2)
# 拟合度
sc_2 = ll.score(x_2,y_2)
# 截距
in_2 = round(ll.intercept_[0],2)
# 系数
coef_2 = round(ll.coef_[0][0],2)
coef_2_2 = round(ll.coef_[0][1],2)
print(in_2,coef_2,coef_2_2)
print(f'二元线性回归:y={in_2}+{coef_2}*x+{coef_2_2}*x2')
# 测试
result = ll.predict([[76,50]])
print(f'体重:70,年龄:50,血压预测:{result}')

运行结果:
在这里插入图片描述

预测多元线性回归数据

问题及理解

问题:给age,sex,bmi,bp,s1,s2,s3,s4,s5,s6和target数据,预测其他age,sex,bmi,bp,s1,s2,s3,s4,s5,s6的target

特征数据:age,sex,bmi,bp,s1,s2,s3,s4,s5,s6
类别标签:target
给定的数据:
在这里插入图片描述

数据测试

代码展示:

import pandas as pd
from sklearn.linear_model import LinearRegression
tdata = pd.read_csv('tnb.csv')
# age,sex,bmi,bp,s1,s2,s3,s4,s5,s6,target
# 拟合度
corr = tdata.corr()
l = LinearRegression()

# 特征数据
x = tdata[["age","sex","bmi","bp","s1","s2","s3","s4","s5","s6"]]
y = tdata[['target']]
l.fit(x,y)
sc = l.score(x,y) #0.51,0.49
print(sc)
inte = round(l.intercept_[0],2)
# 系数
coef1 = round(l.coef_[0][0],2)
coef2 = round(l.coef_[0][1],2)
coef3 = round(l.coef_[0][2],2)
coef4 = round(l.coef_[0][3],2)
coef5 = round(l.coef_[0][4],2)
coef6 = round(l.coef_[0][5],2)
coef7 = round(l.coef_[0][6],2)
coef8 = round(l.coef_[0][7],2)
coef9 = round(l.coef_[0][8],2)
coef10 = round(l.coef_[0][9],2)
#0.0380759064334241,0.0506801187398187,0.0616962065186885,0.0218723549949558,-0.0442234984244464,-0.0348207628376986,-0.0434008456520269,-0.00259226199818282,0.0199084208763183,-0.0176461251598052
re = l.predict([[0.0380759064334241,0.0506801187398187,0.0616962065186885,0.0218723549949558,-0.0442234984244464,-0.0348207628376986,-0.0434008456520269,-0.00259226199818282,0.0199084208763183,-0.0176461251598052]])
print(f'预测:{re}')
print(f'线性回归:y={inte}+{coef1}*x1+{coef2}*x2+{coef3}*x3+{coef4}*x4+{coef5}*x5+{coef6}*x6+{coef7}*x7+{coef8}*x8+{coef9}*x9+{coef10}+*x10')

运行结果:

在这里插入图片描述


http://www.kler.cn/a/463972.html

相关文章:

  • AngularJS 指令:深入解析与高级应用
  • git 创建tag, 并推送到远程仓库,启动actions构建release自动发布
  • 运维人员的Go语言学习路线
  • 46. Three.js案例-创建颜色不断变化的立方体模型
  • Tailwind CSS 实战:表单设计与验证实现
  • 15. 接雨水
  • [简单指南] 轻松将联系人从 Sony Xperia 转移到 Android
  • 无人机踏勘:革新传统勘探方式的优势与前景
  • 如何在 Ubuntu 22.04 上部署 Nginx 并优化以应对高流量网站教程
  • Qt自定义步骤引导按钮
  • Vue3入门(9)
  • macos git上传通过全局设置不上传.DS_Store
  • C++之模板进阶
  • 详细讲一讲webpack部分的配置(入口和输出配置,模块处理配置(Loader),插件配置(Plugins),优化配置, 开发服务器配置,解析配置,性能配置
  • 《计算机网络A》单选题-复习题库解析-2
  • 电力系统优化分析/系统机组组合/水电优化运行/鲁棒优化/多能源互补优化/分布鲁棒优化
  • 智能工厂的设计软件 应用场景的一个例子:为AI聊天工具添加一个知识系统 之10 方案再探之1:特定于领域的模板 之1 随想交流
  • 如何在没有 iCloud 的情况下将数据从 iPhone 传输到 iPhone
  • 闻泰科技涨停-操盘训练营实战-选股和操作技术解密
  • 【每日学点鸿蒙知识】gbk2313传到native、NAPI打印日志问题、table表格控件、Web 触发新窗口卡住、修饰列表
  • 云计算与服务是什么
  • 模电面试——设计题及综合分析题0x01(含答案)
  • 深入剖析Android SoundPool及其JNI实现
  • python爬虫——爬取全年天气数据并做可视化分析
  • 【机器学习】工业 4.0 下机器学习如何驱动智能制造升级
  • 【C#设计模式(22)——策略模式(Stratege Pattern)】