L2线性回归模型

  • 🍨 本文为🔗365天深度学习训练营 中的学习记录博客
  • 🍖 原作者:K同学啊

鸢尾花数据集的单变量与多变量预测

在这周学习如何使用 机器学习 模型对鸢尾花(Iris)数据集进行单变量与多变量预测。我们将使用鸢尾花数据集中不同的特征进行预测,分别使用单变量和多变量的回归模型。

0.学习时长与学习成绩
import pandas as pd
import numpy as np
import matplotlib.pyplot as pltdataset = pd.read_csv('data/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)
from sklearn.linear_model import LinearRegressionregressor = LinearRegression()
regressor = regressor.fit(X_train, Y_train)   
Y_pred = regressor.predict(X_test)
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()                                          

在这里插入图片描述
在这里插入图片描述

1. 鸢尾花数据集简介

鸢尾花数据集是一个经典的机器学习数据集,包含150条记录,每条记录有四个特征以及一个类别标签。这四个特征分别是:

  • 花萼长度 (sepal length)
  • 花萼宽度 (sepal width)
  • 花瓣长度 (petal length)
  • 花瓣宽度 (petal width)

我们可以使用这些特征来构建预测模型。在单变量预测中,我们将使用单一特征来预测目标变量,而在多变量预测中,将使用多个特征来提高预测准确性。

2. 数据准备

首先,我们加载鸢尾花数据集并做简单的数据清理和预处理。这里我们选择了三个特征来预测花瓣长度。

import pandas as pd# 数据集URL
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)# 查看前5行数据
print(dataset.head())
3. 单变量预测:基于花萼宽度预测花瓣长度
3.1 数据可视化

在开始模型训练之前,我们首先对数据进行可视化,观察特征之间的关系。

import matplotlib.pyplot as plt
import seaborn as sns# 选择特征
x = dataset[['花萼-width']]
y = dataset['花瓣-length']# 绘制散点图
sns.scatterplot(x=x['花萼-width'], y=y)
plt.xlabel('花萼宽度')
plt.ylabel('花瓣长度')
plt.title('花萼宽度与花瓣长度的关系')
plt.show()
3.2 构建线性回归模型

接下来,我们使用 sklearn 中的 线性回归 模型,基于单一变量(花萼宽度)来预测花瓣长度。

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score# 划分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)# 构建线性回归模型
model = LinearRegression()
model.fit(x_train, y_train)# 预测
y_pred = model.predict(x_test)# 评估模型
print(f"均方误差: {mean_squared_error(y_test, y_pred)}")
print(f"R²得分: {r2_score(y_test, y_pred)}")
3.3 结果可视化
# 绘制预测值与真实值的对比
plt.figure(figsize=(6, 4))
plt.plot(range(len(y_test)), y_test, label='真实值')
plt.plot(range(len(y_pred)), y_pred, label='预测值')
plt.title('单变量线性回归预测')
plt.legend()
plt.show()

在这里插入图片描述

4. 多变量预测:使用多个特征预测花瓣长度

在多变量预测中,我们将选择多个特征来提高模型的预测效果。这里我们选择了 花萼宽度花瓣宽度花瓣长度 三个特征来预测 花瓣长度

4.1 数据可视化
# 选择特征
x = dataset[['花萼-width', '花瓣-width', '花萼-length']]
y = dataset['花瓣-length']# 绘制相关关系图
sns.pairplot(dataset, x_vars=['花萼-width', '花瓣-width', '花萼-length'], y_vars='花瓣-length', kind='reg')
plt.show()

在这里插入图片描述

4.2 构建多变量线性回归模型
# 划分训练集和测试集
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2, random_state=42)# 构建线性回归模型
model = LinearRegression()
model.fit(x_train, y_train)# 预测
y_pred = model.predict(x_test)# 评估模型
print(f"均方误差: {mean_squared_error(y_test, y_pred)}")
print(f"R²得分: {r2_score(y_test, y_pred)}")
4.3 结果可视化
# 绘制预测值与真实值的对比
plt.figure(figsize=(6, 4))
plt.plot(range(len(y_test)), y_test, label='真实值')
plt.plot(range(len(y_pred)), y_pred, label='预测值')
plt.title('多变量线性回归预测')
plt.legend()
plt.show()

6. 总结

这周学习了如何使用机器学习模型对鸢尾花数据集进行单变量和多变量预测。通过特征的选择和模型的构建,可以看到多变量模型可以更好地捕捉数据特征间的关系,从而提高预测的准确性。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习pyqt5相关知识回顾

1. 模块 1.1 import导入 1) 模块:是一系列功能的集合体,模块名.功能名,就可以使用模块的功能 2) 首次导入模块,就会立即执行模块里面的内容 3) 当前名称空间会产生一个名字module,指向module.py产生的名称空间.我们可以使用module.name/函数名,来调用module.py里面的内容. …

RQ-RAG:提升检索增强生成模型的查询精炼能力

人工智能咨询培训老师叶梓 转载标明出处 大模型在面对未见场景时,往往会产生不准确或虚构的回答,这限制了它们的实用性。为了解决这一问题,香港科技大学、香港理工大学和麻省理工学院的研究团队提出了一种名为RQ-RAG(Retrieval-A…

被低估的SQL

SQL是现代数据库管理系统中不可或缺的一部分。尽管它的使用已十分普遍,但在数据处理领域,SQL的某些功能和潜力仍然被许多人低估。接下来,小编将与您一起,探讨SQL的一些被忽视的特性,揭示它在数据管理中的真正实力。 1.…

模拟实现string类: clear函数、流提取(<<)和流插入(>>)运算符重载、>、<、==、<=、>=、!=的运算符重载、赋值运算符(=)重载等的介绍

文章目录 前言一、 clear函数二、流提取(<<)和流插入(>>)运算符重载三、 >、<、、<、>、!的运算符重载四、赋值运算符&#xff08;&#xff09;重载总结 前言 模拟实现string类: clear函数、流提取(<<)和流插入(>>)运算符重载、>、<…

记一次导入dbf文件后数据为空问题的解决方法

前言 省流&#xff1a;这篇文章最终采用的是更换导出文件格式的方法&#xff0c;看到这里觉得方法不适用的小伙伴可以不用浪费几秒钟看完这篇文章哦。 问题描述 作者使用的是Navicat数据库管理工具&#xff0c;然后在将源数据库的数据表导出为dbf格式文件后&#xff0c;再将…

Linux进阶命令-echodatealias

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 经过上一章Linux日志的讲解&#xff0c;我们对Linux系统自带的日志服务已经有了一些了解。我们接下来将讲解一些进阶命令&am…

JAVA中获取类的超类(父类)或接口的class类型

一、前言 这里所说的超类&#xff08;父类&#xff09;或接口&#xff0c;指的就是某个类继承了一个类或实现了N个接口。 比如ArrayList&#xff0c;它继承了一个类&#xff08; java. util. AbstractList<E> &#xff09;&#xff0c;这时候AbstractList就称为ArrayLi…

如何让人工智能训练更快

影响人工智能训练时间的因素 在深度学习训练中&#xff0c;训练时间的计算涉及到多个因素&#xff0c;包括 epoch 数、全局 batch size、微 batch size、计算设备数量等。下面是一个基本的公式来说明这些参数之间的关系&#xff08;注意&#xff0c;这只是一个基本的说明公式&…

ctfshow-文件包含

web78 <?phpif(isset($_GET[file])){$file $_GET[file];include($file); }else{highlight_file(__FILE__); } 判断是否存在file参数 如果存在 将包含这个参数值 文件 php://filter可以获取指定文件源码。当它与包含函数结合时&#xff0c;php://filter流会被当作php文件执…

Jmeter终极线程组“Ultimate Thread Group“如何使用?

1、安装,点击"选项"&#xff0c;再点击"Plugins Manager"&#xff0c;下载"Custom Thread Groups" 2、添加"jpgc - Ultimate Thread Group" 3、"jpgc - Ultimate Thread Group"使用

DC 板 boot 测 nor 兼容性记录(qspi )

DC 板 boot 测 nor 兼容性记录&#xff08;qspi &#xff09; 软件问题&#xff1a; 1、DC板在跑 qspi时&#xff0c;在跑ddr 初始化部分需要修改以下参数&#xff0c;否则会在fsbl stage1 或者 stage 3 出错。 Board配置选 ad101_v10&#xff1b; 2、由于socket与DC板接触可能…

【springboot】父子工程项目搭建

父工程创建 1.新建一个spring项目 2.选择合适的springboot版本&#xff0c;点击【完成】&#xff0c;即创建父工程完毕 3.删除父工程中无用文件&#xff1a;src 创建子工程模块 1.右键项目名->新建&#xff08;news&#xff09;->模块&#xff08;Module&#xff09;…

【linux-Day2】linux下的基本指令

【linux-Day2】linux下的基本指令 一键查看操作系统的重要地位linux下的基本指令&#x1f4e2;ls&#xff1a;显示当前目录下所有的子目录和文件&#x1f4e2;pwd&#xff1a;显示用户当前所在的目录&#xff0c;在windows中&#xff0c;相当于显示当前目录的绝对路径。&#x…

Oracle绑定变量窥视与自适应游标共享

一.Oracle的绑定变量窥视与自适应游标共享 创建test表&#xff0c;列status存在2个值&#xff0c;有数据倾斜&#xff0c;在列status create table test as select rownum id,DBMS_RANDOM.STRING(A,12) name,DECODE(MOD(ROWNUM,500),0,Inactive,Active) status from all_obj…

2024最新精选文章!分享5款论文ai生成软件

在2024年&#xff0c;AI论文生成软件的出现极大地提升了学术写作的效率和质量。这些工具不仅能够帮助研究人员快速生成论文草稿&#xff0c;还能进行内容优化、查重和排版等操作。以下是五款值得推荐的AI论文生成软件&#xff0c;其中特别推荐千笔-AIPassPaper。 ### 千笔-AIPa…

【Jupyter Notebook】汉化

1.打开:Anaconda Prompt 2.输入:"activate Zhui01"(注意&#xff1a;Zhui01是刚创建的环境名字) activate Zhui01 3.输入:"pip install jupyterlab-language-pack-zh-CN" pip install jupyterlab-language-pack-zh-CN 4.打开:Jupyter Notebook 5.点击&q…

【稀疏矩阵】使用torch.sparse模块

文章目录 稀疏矩阵的格式coocsrcsc Construction of Sparse COO tensorsConstruction of CSR tensorsLinear Algebra operations&#xff08;稀疏与稠密之间混合运算&#xff09;Tensor methods and sparse&#xff08;与稀疏有关的tensor成员函数&#xff09;coo张量可用的ten…

E32.【C语言 】练习:蓝桥杯题 懒羊羊字符串

1.题目 【问题描述】 “懒羊羊”字符串是一种特定类型的字符串&#xff0c;它由三个字符组成&#xff0c;具有以下特点: 1.字符串长度为 3. 2.包含两种不同的字母。 3.第二个字符和第三个字符相同 换句话说&#xff0c;“懒羊羊”字符串的形式应为 ABB&#xff0c;其中A和B是不…

Python去中心化身份验证指南

随着区块链技术的发展,去中心化身份验证系统成为了保护个人数据安全和确保数字身份不被篡改的重要工具。本文将介绍如何利用Python和区块链技术构建一个简单的去中心化身份验证系统,包括基本概念、实现步骤和代码示例。 什么是去中心化身份验证系统? 去中心化身份验证系统…

SpringBoot学习(8)RabbitMQ详解

RabbitMQ 即一个消息队列&#xff0c;主要是用来实现应用程序的异步和解耦&#xff0c;同时也能起到消息缓冲&#xff0c;消息分发的作用。 消息中间件最主要的作用是解耦&#xff0c;中间件最标准的用法是生产者生产消息传送到队列&#xff0c;消费者从队列中拿取消息并处理&…