第L2周:机器学习|线性回归模型 LinearRegression:1. 简单线性回归模型
- 本文为🔗365天深度学习训练营 中的学习记录博客
- 原作者:K同学啊
任务:
●1. 通过本文学习LinearRegression简单线形回归模型。
●2. 模仿本文代码,通过鸢尾花花瓣长度预测花瓣宽度。
一、概念
- 什么是回归
回归的目的是为了预测,比如在通过鸢尾花花瓣长度预测花瓣宽度。
回归之所以能预测,是因为它通过大量的花瓣长度与宽度数据,“弄懂了”花瓣长度与宽度之间的线性关系,在这个基础之上就可以通过花瓣长度预测花瓣宽度了。
- 什么是线性
线性就是关系可以用线性方程来表示,通过一个或多个变量来表示另外一个变量。
通俗的说符合“越…,越…”这种说法的可能就是线性关系,比如
●“房子”越大,“租金”就越高。
●“汉堡”买的越多,花的“钱”就越多。
●杯子里的“水”越多,“重量”就越大。
但是也并非所有“越…,越…”都是线性的,比如“弹簧的弹力与位移的关系”。
- 什么是线性回归
通过两个或多个变量之间的线性关系来预测结果。
通过鸢尾花的花瓣长度与宽度的线性关系来预测花瓣宽度,通过杯子里水的体积就可以知道(预测)水的重量。
二、代码实现
我的环境:
●语言环境:Python3.9
●编译器:Jupyter Lab
这里我们采用“学习时长-成绩”数据集,采用LinearRegression简单线形回归模型,通过学习时长去预测学生成绩。
第1步:数据预处理
import pandas as pd
import numpy as np
import matplotlib.pyplot as pltdataset = pd.read_csv('./L2/studentscores.csv')
X = dataset.iloc[ : , :1].values
Y = dataset.iloc[ : ,1].valuesfrom sklearn.model_selection import train_test_split
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=1/4, random_state=0)
dataset
代码输出:
Hours | Scores | |
---|---|---|
0 | 2.5 | 21 |
1 | 5.1 | 47 |
2 | 3.2 | 27 |
3 | 8.5 | 75 |
4 | 3.5 | 30 |
5 | 1.5 | 20 |
6 | 9.2 | 88 |
7 | 5.5 | 60 |
8 | 8.3 | 81 |
9 | 2.7 | 25 |
10 | 7.7 | 85 |
11 | 5.9 | 62 |
12 | 4.5 | 41 |
13 | 3.3 | 42 |
14 | 1.1 | 17 |
15 | 8.9 | 95 |
16 | 2.5 | 30 |
17 | 1.9 | 24 |
18 | 6.1 | 67 |
19 | 7.4 | 69 |
20 | 2.7 | 30 |
21 | 4.8 | 54 |
22 | 3.8 | 35 |
23 | 6.9 | 76 |
24 | 7.8 | 86 |
25 | 9.1 | 93 |
26 | 9.2 | 93 |
27 | 9.5 | 93 |
train_test_split()函数详解:
train_test_split():将数据集划分为测试集与训练集。
●X:所要划分的整体数据的特征集;
●Y:所要划分的整体数据的结果;
●test_size:测试集数据量在整体数据量中的占比(可以理解为X_test与X的比值);
●random_state:
○①若不填或者填0,每次生成的数据都是随机,可能不一样。
○②若为整数,每次生成的数据都相同。
第2步:简单线性回归模型
sklearn.linear_model包实现了广义线性模型,包括线性回归、Ridge回归、Bayesian回归等。LinearRegression是其中较为简单的线性回归模型。
from sklearn.linear_model import LinearRegressionregressor = LinearRegression()
regressor = regressor.fit(X_train, Y_train)
第3步:预测结果
Y_pred = regressor.predict(X_test)
Y_pred
代码输出:
array([33.40062313, 39.26803909, 12.86466728, 20.68788856, 16.77627792,59.80399493, 78.38414546])
第4步:可视化
- 训练集可视化
plt.scatter(X_train, Y_train, color='red')
plt.plot(X_train, regressor.predict(X_train), color='blue')plt.show()
代码输出:
- 测试集预测结果可视化
plt.scatter(X_test, Y_test, color='red')
plt.plot(X_test, regressor.predict(X_test), color='blue')
plt.show()
代码输出:
三、鸢尾花数据集导入
这里的任务需要使用到的数据集,你可以这样导入:
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
names = ['花萼-length', '花萼-width', '花瓣-length', '花瓣-width', 'class'] dataset = pd.read_csv(url, names=names)
dataset
代码输出:
花萼-length | 花萼-width | 花瓣-length | 花瓣-width | class | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | Iris-setosa |
1 | 4.9 | 3.0 | 1.4 | 0.2 | Iris-setosa |
2 | 4.7 | 3.2 | 1.3 | 0.2 | Iris-setosa |
3 | 4.6 | 3.1 | 1.5 | 0.2 | Iris-setosa |
4 | 5.0 | 3.6 | 1.4 | 0.2 | Iris-setosa |
... | ... | ... | ... | ... | ... |
145 | 6.7 | 3.0 | 5.2 | 2.3 | Iris-virginica |
146 | 6.3 | 2.5 | 5.0 | 1.9 | Iris-virginica |
147 | 6.5 | 3.0 | 5.2 | 2.0 | Iris-virginica |
148 | 6.2 | 3.4 | 5.4 | 2.3 | Iris-virginica |
149 | 5.9 | 3.0 | 5.1 | 1.8 | Iris-virginica |
150 rows × 5 columns
相关文章:

第L2周:机器学习|线性回归模型 LinearRegression:1. 简单线性回归模型
本文为🔗365天深度学习训练营 中的学习记录博客原作者:K同学啊 任务: ●1. 通过本文学习LinearRegression简单线形回归模型。 ●2. 模仿本文代码,通过鸢尾花花瓣长度预测花瓣宽度。 一、概念 什么是回归 回归的目的是为了预测&…...

1.5 测试用例
欢迎大家订阅【软件测试】 专栏,开启你的软件测试学习之旅! 文章目录 前言1 测试用例介绍2 测试用例编写3 案例分析 前言 测试用例的设计和编制是软件活动中最重要的工作。本文详细讲解了测试用例的基本概念以及如何编写测试用例。 本篇文章参考黑马程序…...

P1101 单词方阵
1. 题目链接P1101 单词方阵 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) #include <bits/stdc.h> using namespace std; #define endl \n #define int long long int int xx[] {1,1,1,0,0,-1,-1,-1}; int yy[] {1,0,-1,1,-1,1,0,-1}; int vis[110][110]; char a[11…...

通过 OBD Demo 体验 OceanBase 4.3 社区版
本文作者:马顺华 引言 OceanBase 4.3 是一个专为实时分析 AP 业务设计的重大更新版本。它基于LSM-Tree架构,引入了列存引擎,实现了行存与列存数据存储的无缝整合。这一版本不仅显著提升了AP场景的查询性能,同时也确保了TP业务场景…...

浅拷贝和深拷贝(Java 与 JavaScript)
一、Java 浅拷贝和深拷贝 在Java中,浅拷贝和深拷贝的主要区别在于对对象的引用和内容的复制方式。 浅拷贝 Java 的类型有基本数据类型和引用类型,基本数据类型是可以由 CPU 直接操作的类型,无论是深拷贝还是浅拷贝,都是会复制出…...

力扣每日一题 2306.公司命名
做题过程中使用到的java语法: 1.从一个字符串中取出一部分字符串: String str "Hello, World!"; String part str.substring(7); // 从索引7开始到字符串末尾 System.out.println(part); // 输出: World! class Solution { public lo…...

HTML-DOM模型
1.DOM模型 window对象下的document对象就是DOM模型。 DOM描绘了一个层次化的节点树,每一个节点就是一个html标签,而且每一个节点也是一个DOM对象。 2.操作DOM 2.1.获取DOM对象常用方法 获取DOM对象的常用方法有如下几种: getElementById(…...

vue项目报错: At least one is required in a single file component.的主要原因及解决办法
本篇文章主要讲解 vue项目报错: At least one is required in a single file component.的主要原因及解决办法 作者:任聪聪 日期:2024年9月25日 报文信息: Compiled with problems: ERROR in ./src/xxxx.vue Module Error (from …...

03DSP学习-利用syscfg配置IO
上一篇博客介绍了syscfg,对syscfg有了初步的了解,但是在真正使用上它之前,还不能理解他是一个神器。 (在写博客的时候,我是在从头到尾重新完成这个步骤,希望对初学者有点帮助) 找到Board Component 打开syscfg文件&…...

web - RequestResponse
##Request&Response 1,Request和Response的概述 Request是请求对象,Response是响应对象。这两个对象在我们使用Servlet的时候有看到: 此时,我们就需要思考一个问题request和response这两个参数的作用是什么? request:获取请…...

个人文章汇总
文章模块文章汇总心得&资料 真正优秀的人,更懂得尊重别人 如何用沟通解决80%的工作问题 一个IT青年北漂四年的感悟 史上最污技术解读 操作系统相关 操作系统基础 操作系统:从工厂的角度来理解进程线程操作系统:详述对进程和线程的认识操作…...

Java | Leetcode Java题解之第436题寻找右区间
题目: 题解: class Solution {public int[] findRightInterval(int[][] intervals) {int n intervals.length;int[][] startIntervals new int[n][2];int[][] endIntervals new int[n][2];for (int i 0; i < n; i) {startIntervals[i][0] inter…...

大模型智能体在金融公告理解领域的应用 | OPENAIGC开发者大赛高校组AI创新之星奖
在第二届拯救者杯OPENAIGC开发者大赛中,涌现出一批技术突出、创意卓越的作品。为了让这些优秀项目被更多人看到,我们特意开设了优秀作品报道专栏,旨在展示其独特之处和开发者的精彩故事。 无论您是技术专家还是爱好者,希望能带给…...

链表入门(LeetCode题目)
来源:左程云算法 链表的题目我们经常是有思路但是实现起来总有些小问题,所以是准备笔试应多加练习的一类题 206. 反转链表 这道题我们可以新开链表来存,但是如果面试中有这道题,面试官让你优化又该如何呢?所以我们采…...

kibana开启访问登录认证
编辑es配置文件,添加以下内容开启es认证 vim /etc/elasticsearch/elasticsearch.yml http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-headers: Authorization xpack.security.enabled: true xpack.security.transport.ssl.enable…...

Java 14Java 15新特性概述
一、Java 14 发布于2020年3月17日。Java 14主要新特性如下: JEP 305:Pattern Matching for instanceof (Preview)instanceof 的模式匹配(预览) JEP 358:Helpful NullPointerExceptions 有用的 NullPointerExceptions…...

流量特征随机ua修改
作为一个蓝队吗喽,总是能看见因为ua头特征而直接被拦截的ip,当然了还有些是通过X-Forwarded-For被拦截的(X-Forwarded-For:fofa.info,不拦你才怪), 主要是通过python的mitmproxy和fake_useragent两个模块进行实现,代码量极低 fr…...

CSP-S 2024 提高级 第一轮(初赛) 阅读程序(3)
【题目】 CSP-S 2024 提高级 第一轮(初赛) 阅读程序(3) 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4 using namespace std; 5 6 const int maxn 1000000 5; 7 const int P1 998…...

如何在 Rust 中通过 Rumqttc 实现 MQTT 通信
Rust 简介 Rust 是一门系统级编程语言,以其卓越的性能、并发能力以及内存安全特性著称。Rust 由 Mozilla 推出,目标是在现代软件开发中提供一种安全高效的编程语言。其设计旨在提供安全、并发和高效的编程体验,同时保持开发效率和代码质量不…...

广东高校建设AIGC实验室时需要注意哪几个关键点?
随着人工智能技术的飞速发展,特别是生成式人工智能(AIGC)在各行各业中的广泛应用,它已经成为推动新一轮科技革命和产业变革的关键力量。教育部等相关部门近年来也高度重视人工智能领域的人才培养工作,强调要加快推动高…...

设计模式-PIMPL 模式
PIMPL(Pointer to IMPLementation),又称Opaque Pointer模式或编译防火墙,是一种在C中广泛应用的编程技术。其核心思想是将类的实现细节从公共接口中分离出来,通过指向实现类的指针来访问类的具体功能。这种模式在提高代…...

Docker部署MongoDB教程
嘿,大家好!今天我在三丰云免费服务器上进行了一次激动人心的MongoDB部署测试。这款免费云服务器1核CPU、1G内存、10G硬盘、5M带宽,是不错的免费服务器选择。 首先,让我们简要介绍一下使用到的Docker和MongoDB软件。Docker是一个开…...

堆排序易错点
1.建堆和调整堆(插入和删除) 建堆和调整堆的过程是不一样的: 建堆 从非终端节点编号的结点开始依次建立大根堆,例如: 拿第2个图说,首先比较-1,7,从中选一个小的,即“-1”…...

安卓13长按电源按键直接关机 andriod13不显示关机对话框直接关机
总纲 android13 rom 开发总纲说明 文章目录 1.前言2.问题分析3.代码分析4.代码修改5.编译6.彩蛋1.前言 有些设备需要在长按电源键的时候,直接关机。不需要弹出对话框进行询问。 2.问题分析 过滤电源按键,需要在系统里面处理的话,那么我们需要熟悉android的事件分发,然后再…...

React学习笔记(四)——React 组件生命周期
目录 1. 生命周期-概览 2. 生命周期-挂载阶段 3. 生命周期-更新阶段 4. 生命周期-卸载阶段 5. setState扩展-发现问题 6. setState扩展-更多用法 7. setState扩展-异步 1. 生命周期-概览 了解react类组件生命周期整体情况 大致步骤: 什么是生命周期React类组…...

PHP的guzzlehttp/guzzle库在碰到各种异常时的场景
PHP的guzzlehttp/guzzle库在碰到各种异常时的场景 结论: 经过测试得知 在http状态码为1xx, 2xx, 3xx时, 会在111处输出返回 在http状态码为4xx, 5xx时, 会在222处被捕获 在目标服务不可达或其他异常时会在333处被捕获 测试过程: 用其他程序写个接口, 实现输入什么状态码就返…...

多机部署,负载均衡-LoadBalance
文章目录 多机部署,负载均衡-LoadBalance1. 开启多个服务2. 什么是负载均衡负载均衡的实现客户端负载均衡 3. Spring Cloud LoadBalance快速上手使用Spring Cloud LoadBalance实现负载均衡修改IP,端口号为服务名称启动多个服务 负载均衡策略自定义负载均衡策略 LoadBalance原理…...

Hadoop安装与配置
一、Hadoop安装与配置 1、解压Hadoop安装包 找到hadoop-2.6.0.tar.gz,将其复到master0节点的”/home/csu”目录内,解压hadoop [csumaster0 ~]$ tar -zxvf ~/hadoop-2.6.0.tar.gz 解压成成功后自动在csu目录下创建hadoop-2.6.0子目录,可以用cd hadoo…...

一个自制的比较low的刷题软件
一个自制的比较low的刷题软件 一、背景 工作中往往涉及一些考试,比如阿里云ACP认证,华为GAUSS认证、软考等,应对这些考试的时候,我们往往是先看书后刷题(当然也有直接刷题的大神,毕竟考试,懂的…...

【Java 集合】List接口 —— ArrayList 与 LinkedList 详解
List接口继承自Collection接口,是单列集合的一个重要分支。 在List集合中允许出现重复的元素,所有的元素是以一种线性方式进行存储的,在程序中可以通过索引(类似于数组中的元素角标)来访问集合中的指定元素。另外&…...