彻底学会系列:一、机器学习之线性回归

news2024/9/8 22:09:23

1.基本概念

线性回归: 有监督学习的一种算法。主要关注多个因变量和一个目标变量之间的关系。
因变量: 影响目标变量的因素: X 1 , X 2 . . . X_1, X_2... X1,X2... ,连续值或离散值。
目标变量: 需要预测的值: target,y
目标变量和自变量之间的关系: 即模型,model

1.1连续值

连续值是可以在一个区间范围内取任意值的变量。例如,身高、体重、温度、时间等都是连续值
在这里插入图片描述

1.2离散值

离散值是只能取有限个数值或者可数值的变量。例如,学生人数、家庭成员数、考试分数等都是离散值
在这里插入图片描述

1.3简单线性回归

简单线性回归对应的公式: y = w x + b y = wx + b y=wx+b
y 是目标变量即未来要预测的值
x 是影响 y 的因素
w,b 是公式上的参数即要求的模型,w就是斜率,b就是截距
一元一次方程:
在这里插入图片描述
一元二次方程:
在这里插入图片描述

1.4最优解

y: 真实值(actual value)
y ^ \hat y y^: 预测值(predicted value), 根据因变量 X 1 , X 2 . . . X_1,X_2... X1,X2...和计算出来的参数w,b得到
error: 误差,预测值和真实值的差距( ε \varepsilon ε
最优解: 尽可能的找到一个模型使得整体的误差最小,通常叫做损失 Loss,通过损失函数Loss Function计算得到。

from sklearn.linear_model import LinearRegression

X = np.linspace(0, 10, num=30).reshape(-1, 1)
w = np.random.randint(1, 5, size=1)
b = np.random.randint(1, 10, size=1)

y = X * w + b + np.random.randn(30, 1)
plt.scatter(X, y)

model = LinearRegression()
model.fit(X, y)
w_ = model.coef_
b_ = model.intercept_

print('一元一次方程真实的斜率和截距是:\n', w, b)
print('通过scikit-learn求解的斜率和截距是:\n', w_, b_)

plt.plot(X, X.dot(w_) + b_, color='green')
plt.show()

在这里插入图片描述

1.5多元线性回归

现实生活中,往往影响结果 y 的因素不止一个,有可能是 n 个, X 1 , X 2 , X n . . . X_1,X_2,X_n... X1,X2,Xn...
多元线性回归公式:
在这里插入图片描述
b是截距,也可以表示成:
在这里插入图片描述
使用向量来表示:
在这里插入图片描述

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

# 转化矩阵
x1 = np.random.randint(-150, 150, size=(300, 1))
x2 = np.random.randint(0, 300, size=(300, 1))

# 斜率和截距,随机生成
w = np.random.randint(1, 5, size=2)
b = np.random.randint(1, 10, size=1)

# 根据二元一次方程计算目标值y,并加上"噪声"
y = x1 * w[0] + x2 * w[1] + b + np.random.randn(300, 1)
fig = plt.figure(figsize=(9, 6))
ax = plt.subplot(111, projection='3d')
ax.scatter(x1, x2, y)  # 三维散点图
ax.view_init(elev=10, azim=-20)  # 调整视角
#
X = np.concatenate([x1, x2], axis=1)
model = LinearRegression()
model.fit(X, y)
w_ = model.coef_.reshape(-1)
b_ = model.intercept_

print('一元一次方程真实的斜率和截距是:\n', w, b)
print('通过scikit-learn求解的斜率和截距是:\n', w_, b_)

x = np.linspace(-150, 150, 100)
y = np.linspace(0, 300, 100)
z = x * w_[0] + y * w_[1] + b_
ax.plot(x, y, z, color='green')

plt.show()

在这里插入图片描述

2.正归方程

2.1最小二乘法矩阵

最小二乘法(Least Squares Method): 将误差方程转化为有确定解的代数方程组(其方程式数目正好等于未知数的个数),从而可求解出这些未知参数。
在这里插入图片描述
在这里插入图片描述

正规方程: 是解决最小二乘问题的一种方法,特别适用于线性回归问题。
在这里插入图片描述

2.2多元一次方程

在这里插入图片描述

import numpy as np

X = np.array([[1, 1], [2, -1]])
y = np.array([14, 10])

# linalg 线性代数,solve计算线性回归问题
r = np.linalg.solve(X, y)
print('方程的解: \n ', r)
print('f(x, y) = 8*x + 6*y')

# W = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
W = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
print('正规方程求解二元一次: \n ', W)

X = np.array([[1, -1, 1], [2, 1, -1], [3, -2, 6]])
y = np.array([100, 80, 256])

W = np.linalg.inv(X.T.dot(X)).dot(X.T).dot(y)
print('正规方程求解三元一次: \n ', W)

在这里插入图片描述

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

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

相关文章

智慧未来已至:人工智能与数字孪生共筑城市新纪元

随着科技的飞速发展,人工智能与数字孪生技术正逐步成为智慧城市建设的核心驱动力。 这两项技术的结合,不仅将彻底改变城市的传统面貌,更将引领我们走向一个更加高效、便捷、绿色的未来。 一、智慧城市的新内涵 智慧城市,是指在城…

DDoS攻击:分布式拒绝服务攻击的威胁与对策

DDoS攻击:分布式拒绝服务攻击的威胁与对策 随着互联网的快速发展,网络安全威胁也在不断增加。其中,分布式拒绝服务攻击(DDoS)是一种常见且具有破坏性的攻击方式,给个人用户、企业和组织的网络基础设施带来了…

爬虫工作量由小到大的思维转变---<第四十五章 Scrapyd 关于gerapy遇到问题>

前言: 本章主要是解决一些gerapy遇到的问题,会持续更新这篇! 正文: 问题1: 1400 - build.py - gerapy.server.core.build - 78 - build - error occurred (1, [E:\\项目文件名\\venv\\Scripts\\python.exe, setup.py, clean, -a, bdist_uberegg, -d, C:\\Users\\Administrat…

React进阶 - 15(React 中 ref 的使用)

本章内容 目录 一、e.target 获取事件对应“元素”的DOM节点二、ref三、ref 和 setState 合用 上一节我们了解了 React中的”虚拟DOM“中的”Diff算法““ ,本节我们来说一说 React中 ref的使用 一、e.target 获取事件对应“元素”的DOM节点 打开之前工程中的 To…

elasticsearch重置密码操作

安装es的时候需要测试这个url:http://127.0.0.1:9200/ 出现弹窗让我输入账号和密码。我第一次登录,没有设置过账号和密码, 解决方法是:在es的bin目录下打开cmd窗口,敲命令:.\elasticsearch-reset-password…

给mysql设置时区

每次重启MySQL服务器后,使用IDEA的database navigator连接都会出现这种情况 解决方式就是 命令行登录后 set global time_zone 8:00;嘿嘿把之前自家简书文章 给mysql设置时区 搬运过来了,方便查阅

Zookeeper相关面试准备问题

Zookeeper介绍 Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生了变化,Zookeeper就负责通知已经在Zoo…

【lesson37】自己设计用户级缓冲区

文章目录 自己设计用户级缓冲区简易MyFILE_的结构fopen_的实现fputs_的实现fclose_的实现fflush_的实现 完整版代码 自己设计用户级缓冲区 因为用户缓冲区在FILE中,所以我们直接模仿C语言提供的文件操作接口,顺便实现缓冲区。 使用文件系统的框架&#…

C++ 图(三十八)【第四篇】

接下来,我们先学习一个概念,带有权值的图,其实就是每条边上有一个自己独立的值了,接下来我们来进行一个深入的了解吧。 1.带权值得的图的概念 在前面的课程中,图中的边都只是用来表示两个点之间是否存在关系&#xff…

SQL注入其他方法

此次实验因为环境问题很多无法复现,在此只讨论过程和方法 一、SQL注入之outfile注入 mysql的outfile的作用是导出文件,使用此方法的必要条件:(此方法成功率极低) 1、知道目标网站的物理路径; 2、%secur…

Python算法题集_螺旋矩阵

Python算法题集_螺旋矩阵 题目54:螺旋矩阵1. 示例说明2. 题目解析- 题意分解- 优化思路- 测量工具 3. 代码展开1) 标准求解【检测4个方向】2) 改进版一【检测2个方向】3) 改进版二【可读性改进】 4. 最优算法 题目54:螺旋矩阵 本文为Python算法题集之一…

《Pandas 简易速速上手小册》第9章:Pandas 数据可视化(2024 最新版)

文章目录 9.1 Pandas 内置可视化工具9.1.1 基础知识9.1.2 重点案例:销售数据分析9.1.3 拓展案例一:产品评价统计9.1.4 拓展案例二:员工满意度分布 9.2 与 Matplotlib 和 Seaborn 集成9.2.1 基础知识9.2.2 重点案例:销售趋势分析9.…

「递归算法」:验证二叉搜索树

一、题目 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 示例 1&#xff…

vulhub中Apache APISIX 默认密钥漏洞复现(CVE-2020-13945)

Apache APISIX是一个高性能API网关。在用户未指定管理员Token或使用了默认配置文件的情况下,Apache APISIX将使用默认的管理员Token edd1c9f034335f136f87ad84b625c8f1,攻击者利用这个Token可以访问到管理员接口,进而通过script参数来插入任意…

110.乐理基础-五线谱-五线谱的速度

内容参考于:三分钟音乐社 上一个内容:五线谱的附点、休止符、连线、延音线-CSDN博客 上一个内容里练习的答案: 五线谱里的情绪与速度也是跟简谱里一样,详情看:音乐的速度 专栏里的内容,根据创建时间&…

CNN应用Keras Tuner寻找最佳Hidden Layers层数和神经元数量

介绍: Keras Tuner是一种用于优化Keras模型超参数的开源Python库。它允许您通过自动化搜索算法来寻找最佳的超参数组合,以提高模型的性能。Keras Tuner提供了一系列内置的超参数搜索算法,如随机搜索、网格搜索、贝叶斯优化等。它还支持自定义…

《Python 网络爬虫简易速速上手小册》第2章:网络爬虫准备工作(2024 最新版)

文章目录 2.1 选择合适的爬虫工具和库2.1.1 重点基础知识讲解2.1.2 重点案例:使用 Scrapy 抓取电商网站2.1.3 拓展案例 1:使用 Requests 和 BeautifulSoup 抓取博客文章2.1.4 拓展案例 2:使用 Selenium 抓取动态内容 2.2 设置开发环境2.2.1 重…

计算机毕业设计 | vue+SpringBoot图书借阅管理系统(附源码)

1, 概述 1.1 课题背景 随着现在科学技术的进步,人类社会正逐渐走向信息化,图书馆拥有丰富的文献信息资源,是社会系统的重要组成部分,在信息社会中作用越来越重要,在我国图书馆计算机等 信息技术的应用起步…

【Linux】文件重定向与实现支持文件重定向的minishell

目录 0.前提 ​编辑 1.重定向 1.1重定向的本质 1.2dup2 1.3模拟实现输出重定向 > 1.4模拟实现追加重定向 >> 1.5模拟实现输入重定向 < 2.让minishell支持重定向 0.前提 文件描述符的分配规则&#xff1a; 在文件描述符表里面&#xff0c;从小到大按照顺…

linux中的mtime,ctime,atime

目录 结论 文件 touch新文件 调整文件内容 echo直接修改 vi修改 修改文件属性 调整归属 调整权限 读取文件 目录 增加文件 调整目录下文件属性 访问目录下文件 删除文件 结论 mtime&#xff1a;文件内容的修改时间&#xff08;不含权限、属组修改&#xff09; …