第二章.线性回归以及非线性回归—多元线性回归

news2025/4/28 14:59:54

第二章.线性回归以及非线性回归

2.6 多元线性回归

1.特征:

1).单特征:

在这里插入图片描述

2).多特征:

在这里插入图片描述

  • 有多少个特征就有多少个未知数x

2.多元线性回归模型的使用场景:

当Y值的影响因素不是唯一时,采用多元线性回归。
在这里插入图片描述

3.梯度下降法求解多元线性回归

1).公式:

在这里插入图片描述

①.求导之后的公式:
在这里插入图片描述

4.实战1: 梯度下降法—多元线性回归:

1).CSV中的数据:

以一家快递公司送货为例:X1-运货里程 X2-运货次数 Y:总运输时间
在这里插入图片描述

2).代码

import numpy as np
import matplotlib.pyplot as plt

# 加载数据
data = np.loadtxt('D:\\data\\Delivery.csv', delimiter=',')
# 切分数据
x_data = data[:, :-1]
y_data = data[:, -1]

# 学习率learning rate
lr = 0.0001

# 参数
theta0 = 0
theta1 = 0
theta2 = 0

# 最大迭代次数
epochs = 1000


# 代价函数:最小二乘法
def computer_error(x_data, y_data, theta0, theta1, theta2):
    totalerror = 0
    for i in range(0, len(x_data)):
        totalerror += ((theta1 * x_data[i, 0] + theta2 * x_data[i, 1] + theta0) - y_data[i]) ** 2
    return totalerror / float(len(x_data)) / 2


# 梯度下降法
def gradient_descent(x_data, y_data, theta0, theta1, theta2, lr, epochs):
    # 数据集的总数量
    m = float(len(x_data))

    # 循环epochs次
    for i in range(epochs):
        grad_theta0 = 0
        grad_theta1 = 0
        grad_theta2 = 0

        for j in range(0, len(x_data)):
            # 梯度的计算
            grad_theta0 += (1 / m) * ((theta1 * x_data[j, 0] + theta2 * x_data[j, 1] + theta0) - y_data[j])
            grad_theta1 += (1 / m) * x_data[j, 0] * (
                    (theta1 * x_data[j, 0] + theta2 * x_data[j, 1] + theta0) - y_data[j])
            grad_theta2 += (1 / m) * x_data[j, 1] * (
                    (theta1 * x_data[j, 0] + theta2 * x_data[j, 1] + theta0) - y_data[j])
        # 更新grad_theta0,grad_theta1,grad_theta2
        theta0 = theta0 - lr * grad_theta0
        theta1 = theta1 - lr * grad_theta1
        theta2 = theta2 - lr * grad_theta2

    return theta0, theta1, theta2


print('初始参数:theta0={0},theta1={1},theta2={2},error={3}'.format(theta0, theta1, theta2,
                                                               computer_error(x_data, y_data, theta0, theta1, theta2)))

theta0, theta1, theta2 = gradient_descent(x_data, y_data, theta0, theta1, theta2, lr, epochs)

print('结果参数:theta0={0},theta1={1},theta2={2},error={3}'.format(theta0, theta1, theta2,
                                                               computer_error(x_data, y_data, theta0, theta1, theta2)))

ax = plt.figure().add_subplot(111, projection='3d')
x0 = x_data[:, 0]
x1 = x_data[:, 1]
ax.scatter(x0, x1, y_data, c='r', marker='o', s=30)

# 生成网格矩阵
x0, x1 = np.meshgrid(x0, x1)
z = theta0 + theta1 * x0 + theta2 * x1

# 画3D图像
ax.plot_surface(x0, x1, z)

# 设置坐标轴
ax.set_xlabel('Miles')
ax.set_ylabel('Num of Delivery')
ax.set_zlabel('Time')

# 显示图像
plt.show()

3).结果展示:

①.数据

在这里插入图片描述

②.图像
请添加图片描述

5.实战2: sklearn—多元线性回归:

1).CSV中的数据:

以一家快递公司送货为例:X1-运货里程 X2-运货次数 Y:总运输时间
在这里插入图片描述

2).代码

import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model

# 加载数据
data = np.loadtxt('D:\\data\\Delivery.csv', delimiter=',')
x_data = data[:, :-1]
y_data = data[:, -1]

# 创建模型
model = linear_model.LinearRegression()
# 拟合模型
model.fit(x_data, y_data)

# 回归系数
coeff = model.coef_
print('回归系数:', coeff)

# 截距
intercept = model.intercept_
print('截距:', intercept)

# 预测数据
x_test = [[102, 4]]
predict = model.predict(x_test)
print('预测数据', predict)

# 创建画布
ax = plt.figure().add_subplot(111, projection='3d')

# 切分数据
x0 = x_data[:, 0]
x1 = x_data[:, 1]

# 画散点图
ax.scatter(x0, x1, y_data, c='r', marker='o', s=50)

# 生成网格矩阵
x0, x1 = np.meshgrid(x0, x1)

z = coeff[0] * x0 + coeff[1] * x1 + intercept

# 画3D图
ax.plot_surface(x0, x1, z)

# 设置坐标轴
ax.set_xlabel('Miles')
ax.set_ylabel('Num of Delivery')
ax.set_zlabel('Time')

# 显示图像
plt.show()

3).结果展示:

①.数据

在这里插入图片描述

②.图像
请添加图片描述

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

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

相关文章

【自然语言处理】【chatGPT系列】大语言模型可以自我改进

大语言模型可以自我改进《Large Language Models Can Self-Improve》论文地址:https://arxiv.org/pdf/2210.11610.pdf 相关博客 【自然语言处理】【chatGPT系列】大语言模型可以自我改进 【自然语言处理】【ChatGPT系列】WebGPT:基于人类反馈的浏览器辅助…

python 波士顿房价预测

数据集地址:Index of /ml/machine-learning-databases/housing (uci.edu) 数据集中共有506条样本数据,每条样本包含了13个影响房价的特征。 数据集格式 0.00632 18.00 2.310 0 0.5380 6.5750 65.20 4.0900 1 296.0 15.30 396.90 4.98 2…

openlayers浅入(了解框架逻辑以及简单使用)

openlayers浅入(了解框架逻辑以及简单使用) 项目需求,使用openlayers替换天地图api开发,记录openlayer的使用 简介 OpenLayers是一个用于开发WebGIS客户端的JavaScript包,最初基于BSD许可发行。OpenLayers是一个开源的…

1575_AURIX_TC275_MTU简介以及部分寄存器

全部学习汇总: GitHub - GreyZhang/g_TC275: happy hacking for TC275! 从今天开始看一个全新的模块介绍MTU,存储测试单元。 TC275中所有的ECC、内置测试以及存储冗余等都有一个统一的接口规范。MTU负责管理所有的存储测试功能。MTU主要有两套寄存器&am…

【iOS】系统框架

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言熟悉系统框架多用块枚举,少用for循环for循环使用Objective-C 1.0的NSEnumerator遍历快速遍历基于块的遍历方式对自定义其内存管理语义的collection使…

Wechaty API 方法 文档整理

背景:刚使用wechaty的时候,对一个不熟悉初学者来说,看官方文档比较费时间,所以把方法和描述集合在一张表上,再使用的时候找对应的方法会比较直观。 中文文档: 介绍 - Wechatyhttps://wechaty.gitbook.io/…

【docker15】docker网络

1.docker网络是什么 docker不启动,默认网络情况 ens33lovirbr0 在CentOS7安装过程中,如果有选择相关虚拟化的服务安装系统后,启动网卡时会发现有一个网桥连接的私网地址的virbr0网卡(virbr0网卡:它还有一个固定的默认…

【蓝桥杯】历届真题 魔方旋转问题(高职组) Java

问题描述 魔方可以对它的6个面自由旋转。   我们来操作一个2阶魔方,如图: 为了描述方便,我们为它建立了坐标系。   各个面的初始状态如下:   x轴正向:绿   x轴反向:蓝   y轴正向:红  …

Hudi系列8:Hudi集成Flink

文章目录一. 相关配置1.1 拷贝编译好的jar包到Flink的lib目录1.2 拷贝guava包,解决依赖冲突1.3 配置环境变量二. YARN Session模式下启动Flink SQL2.1 解决依赖问题2.2 启动yarn-session2.3 在yarn session模式下启动flink sql三. 测试四. 异常问题汇总一. 相关配置…

荣誉+1,龙蜥社区荣登 CSDN 2022 中国开发者影响力年度榜单

近日,CSDN 在北京成功举行 “2022 中国开发者影响力盛典暨 CSDN 企业生态汇”活动,同时正式发布 2022 中国开发者影响力年度榜单。凭借本年度在开源领域的卓越贡献和技术实力,龙蜥社区荣登 CSDN 2022 “年度开发者社区” 榜单。(图…

python基础篇之文件操作

大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页:lqj_本人的博客_CSDN博客-微信小程序,前端,vue领域博主lqj_本人擅长微信小程序,前端,vue,等方面的知识https://blog.csdn.net/lbcyllqj?spm1000.2115.3001.5343 哔哩哔哩欢迎关注&…

Why Can GPT Learn In-Context?

Why Can GPT Learn In-Context? Language Models Secretly Perform Gradient Descent as Meta-Optimizers 为什么GPT能够在In-context的环境中进行学习呢?Language Models能够像Meta-Optimizer一样秘密地执行梯度下降。 这篇文章的作者来自清华、北大,代…

Silane-PEG-COOH,硅烷-聚乙二醇-羧基结构式及相关应用介绍

英文名称:Silane-PEG-acid;Silane-PEG-COOH 中文名称:硅烷-聚乙二醇-羧基 分子量:1k,2k,3.4k,5k,10k,20k。。。 存储条件:-20C,避光&#xff0…

AI入门| 机器学习和深度学习傻傻分不清?

(本文阅读时间:5分钟)目前,人工智能主流的支持技术是机器学习和深度学习。二者有什么异同呢?文末为你揭晓!在了解机器是怎么学习之前,我们先来回顾一下人类自己的学习过程。人类是如何学习的&am…

二叉树的基本操作

目录 一、二叉树遍历 1、前序遍历: 动态图解析: 2、中序遍历: 3、后序遍历: 4、层序遍历 (利用队列) 动态图解析: 二、统计二叉树的节点个数: 1、二叉树总节点…

【OpenAI】基于 Gym-CarRacing 的自动驾驶项目 | 车道检测功能的实现 | 边缘检测与分配 | 样条拟合

限时开放,猛戳订阅! 👉 《一起玩蛇》🐍 💭 写在前面: 本篇是关于多伦多大学自动驾驶专业项目的博客。GYM-Box2D CarRacing 是一种在 OpenAI Gym 平台上开发和比较强化学习算法的模拟环境。它是流行的 Box2D…

【High 翻天】Higer-order Networks with Battiston Federico (7)

目录传播与社会动力学(1)传播simplicial complexeshypergraphs传播与社会动力学(1) 模拟人类行为的动态过程一直是许多研究的焦点,其中社会关系和交互通常被认为是一种潜在结构,是高阶方法的天然试验场。 …

广告业务系统 之 框架沉淀 —— “数据消费型服务框架”

文章目录广告业务系统 之 框架沉淀 —— “数据消费型服务框架”数据消费型服务统一框架主流程Plugin 构建广告业务系统 之 框架沉淀 —— “数据消费型服务框架” 数据消费型服务统一框架 由于 ADX 系统中,大量数据以流式涌动,整个链路中出现了 “多处…

MMCME4_ADV与PLL4_ADV原语

MMCM与PLL ​ UltraScale器件中时钟管理模块(CMT)包含mixed-mode clock manager (MMCM) 和phase-locked loops (PLLs) 。PLL主要用来生成I/O时钟,也包含一部分MMCM的功能。 ​ 其中MMCM输出时钟相位调整语VCO频率相关。 MMCME4_ADV原语 ​ MMCM原语包含MMCME3_B…

2023年最新版Java入门教程,一套很哇塞的Java基础课

所谓天道好轮回,鬼畜饶过谁。最近B站学习区也沦陷了,由此诞生出了一种让人闻所未闻的冷概念:鬼畜教学法!这种奇怪的组合让人匪夷所思,但架不住网友们的推荐!!!爱嘤嘤嘤斯坦:早看到这些视频,妈妈就再也不用担…