jupyter notebook练手项目:线性回归——学习时间与成绩的关系

news2025/3/13 13:38:46

线性回归——学习时间与学习成绩的关系

第1步:导入工具库

pandas——数据分析库,提供了数据结构(如DataFrame和Series)和数据操作方法,方便对数据集进行读取、清洗、转换等操作。

matplotlib——绘图库,pyplot提供了一系列简单易用的绘图函数,用于创建各种类型的图表,如折线图、散点图、柱状图等。

%matplotlib inline——使matplotlib绘制的图像嵌入在 Jupyter Notebook 的单元格里,这样在运行代码后可以直接在 Notebook 中看到绘制的图形,而不是弹出一个新的图形窗口。

import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline

第2步:导入并查看数据集

dataset = pd.read_csv(‘./studentscores.csv’)——使用pandas的read_csv函数读取当前目录下名为studentscores.csv的 CSV 文件,并将数据存储在dataset变量中。

dataset是一个DataFrame类型的对象,它类似于一个二维表格,每行代表一条数据记录,每列代表一个特征或变量。

Series 是简单的一列数据,而 DataFrame 是由多个 Series 组成的更复杂的表格结构

dataset=pd.read_csv('./studentscores.csv')
type(dataset)
pandas.core.frame.DataFrame
dataset.head()
HoursScores
02.521
15.147
23.227
38.575
43.530
head()——默认显示前5行数据,用于快速查看数据的大致结构和内容
shape——数据集的形状,(25行,2列)
columns——列名集合
info()——详细信息
describe()——各种描述性统计分析
dataset.shape
(25, 2)
dataset.columns
Index(['Hours', 'Scores'], dtype='object')
dataset.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 25 entries, 0 to 24
Data columns (total 2 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   Hours   25 non-null     float64
 1   Scores  25 non-null     int64  
dtypes: float64(1), int64(1)
memory usage: 528.0 bytes
dataset.describe()
HoursScores
count25.00000025.000000
mean5.01200051.480000
std2.52509425.286887
min1.10000017.000000
25%2.70000030.000000
50%4.80000047.000000
75%7.40000075.000000
max9.20000095.000000

第3步:提取特征和标签

定义了两个列表feature_columns和label_column,分别用于指定数据集的特征列和标签列。
这里将Hours列作为特征列(x),将Scores列作为标签列(y),即要预测的目标变量。

feature_columns=['Hours']
label_column=['Scores']

features = dataset[feature_columns]:从dataset中提取feature_columns指定的列数据,存储在features变量中,features也是一个DataFrame对象。

label = dataset[label_column]:从dataset中提取label_column指定的列数据,存储在label变量中,label是一个DataFrame对象,但只有一列数据。

features=dataset[feature_columns]
label=dataset[label_column]
type(features)
pandas.core.frame.DataFrame
features.head()
Hours
02.5
15.1
23.2
38.5
43.5

在机器学习模型中,通常需要使用 numpy 数组格式的数据来进行训练和预测。sklearn 等机器学习库中的大多数函数和模型都期望输入数据为 numpy 数组形式。通过使用 .values 属性,我们可以将 pandas 数据结构中的数据提取为 numpy 数组,以便与这些机器学习模型兼容。

X=features.values
Y=label.values

第4步:划分数据集

四分之一作为训练集

从sklearn.model_selection模块中导入train_test_split函数,该函数用于将数据集拆分为训练集和测试集。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42):X:特征矩阵,y:目标向量,test_size:测试集的比例,random_state:随机数种子

关于随机数种子:

作用?设置此参数可以保证每次运行代码时,数据的划分结果是相同的,有助于代码的可重复性。
可重复性?指我们可以在相同的训练集和测试集上测试不同的模型或模型参数,公平地比较它们的效果,而不用担心是因为数据集划分不同导致的结果差异。

参数取值?该参数的取值没有特定的限制,通常可以是任意整数;但是不建议用默认值NULL,这样每次调用 train_test_split 函数会使用不同的随机数种子,导致每次数据集的划分结果不同。

from 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)

第5步:建立模型

训练模型

从sklearn.linear_model模块中导入LinearRegression线性回归模型类。

regressor = LinearRegression():创建一个LinearRegression类的实例regressor,即初始化一个线性回归模型。

regressor = regressor.fit(X_train, Y_train):调用regressor的fit方法,使用训练集数据X_train和Y_train对线性回归模型进行训练,拟合出模型的参数(如斜率和截距)。

from sklearn.linear_model import LinearRegression
regressor=LinearRegression()
regressor=regressor.fit(X_train,Y_train)

测试模型

调用predict方法:使用训练好的线性回归模型regressor对测试集特征X_test进行预测,得到预测结果Y_pred。

Y_pred=regressor.predict(X_test)

可视化

#散点图:红色点表示原始测试集的点,蓝色表示预测点
plt.scatter(X_test,Y_test,color='red')
plt.scatter(X_test,Y_pred,color='blue',marker='*')
#线图:蓝色线表示训练出来的回归线
plt.plot(X_test,Y_pred,color='blue')
plt.show()

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

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

相关文章

车载音频开发(二):对音频数据作音量调节

通过前一个章节打下的基础车载音频开发&#xff08;一&#xff09;&#xff1a;从看懂wav开始https://blog.csdn.net/Hellomino_/article/details/140873133?fromshareblogdetail&sharetypeblogdetail&sharerId140873133&sharereferPC&sharesourceHellomino_&…

项目开发实践——基于SpringBoot+Vue3实现的在线考试系统(五)

文章目录 一、学生管理模块功能实现1、添加学生功能实现1.1 页面设计1.2 前端功能实现1.3 后端功能实现1.4 效果展示2、学生管理功能实现2.1 页面设计2.2 前端功能实现2.3 后端功能实现2.3.1 后端查询接口实现2.3.2 后端编辑接口实现2.3.3 后端删除接口实现2.4 效果展示二、代码…

【Rust】数据类型

目录 思维导图 1. 数据类型概述 1.1 标量类型 1.1.1 整数类型 1.1.2 浮点数类型 1.1.3 布尔类型 1.1.4 字符类型 1.2 复合类型 1.2.1 元组类型 1.2.2 数组类型 2. 类型注解与类型推断 3. 整数溢出处理 4. 数字运算 5. 示例 思维导图 1. 数据类型概述 Rust是一种静…

Matlab一些使用技巧

代码分段 两个百分号就可以实现代码的分段&#xff0c;不同段之间会以不同的背景色显示&#xff0c;方便调试 如下&#xff1a; %% 腐蚀 stlen TimeWidth*Fs/50; %线性算子的长度&#xff0c;1/100的脉宽&#xff0c;对应0.5us&#xff0c;15个采样点 stlen 100; SE strel…

【Linux系统】权限位(mode bits)

这张图是使用结构体 struct stat 中的 st_mode 字段时画的&#xff0c;获取表示文件的类型和权限&#xff0c;它是典型的 POSIX 系统调用&#xff08;如 stat() 和 fstat()&#xff09;返回的 struct stat 结构的一部分&#xff0c;用于描述文件的元数据。 在 Linux 和 Unix 系…

快速上手 INFINI Console 的 TopN 指标功能

背景 在分布式搜索引擎系统&#xff08;如 Easysearch、Elasticsearch 和 OpenSearch&#xff09;中&#xff0c;性能监控至关重要。为了确保系统的高效运行和资源的合理分配&#xff0c;我们通常需要关注一段时间内关键资源的使用情况&#xff0c;特别是索引、节点和分片的内…

LIEF:用于解析和修改 ELF, PE 和MachO 格式的跨平台库

主要功能 1. 解析&#xff1a;LIEF能够解析ELF、PE和MachO格式&#xff0c;并给用户提供了友好的API来访问文件格式内部数据。 2. 修改&#xff1a;LIEF能够修改上述格式的部分数据。 3. 抽象&#xff1a;这些格式拥有一些常见特征&#xff0c;例如数据段、符号和入口…

验证码的设置

一、准备环境 首先&#xff0c;进入下载地址&#xff1a;Central Repository: cn/hutool/hutool-all/5.8.16下载jar包 二、配置环境 将下载好的jar包放到eclipse的lib目录 (这里是eclipse软件中存放jar包的目录)&#xff1a; 【WebContent-->WEB-INF-->lib】 三、基础…

FreeCAD集成gmsh源码分析

目录 gmsh模块界面获取gmsh的版本执行gmsh网格划分gmsh模块界面 这个界面是用PySide来写的,Pyside是QT的python绑定,具体代码在task_mesh_gmsh.py文件中。目前这个界面非常的捡漏,没有对接gmsh稍微高级一点的功能。界面对应的事件处理是在gmshtools.py中。这里只分析“gmsh …

忘记了PDF文件的密码,怎么办?

PDF文件可以加密&#xff0c;大家都不陌生&#xff0c;并且大家应该也都知道PDF文件有两种密码&#xff0c;一个打开密码、一个限制编辑密码&#xff0c;因为PDF文件设置了密码&#xff0c;那么打开、编辑PDF文件就会受到限制。忘记了PDF密码该如何解密&#xff1f; PDF和offi…

怎么开通电信跨国网络专线服务?

随着全球化的发展&#xff0c;企业对高效稳定的跨国网络连接需求不断增长。电信跨国网络专线服务凭借其灵活性、安全性和高效性&#xff0c;成为许多企业跨国通信的优选方案。本文将为您详细介绍如何开通这一服务&#xff0c;并分享关键的注意事项&#xff0c;帮助企业更好地利…

MarkDown常用方法

标题 #空格 一级标题 ##空格 二级标题 依次类推 有序列表 操作&#xff1a;数字英文小数点(.)空格示例&#xff1a;1. list12. list2无序列表 操作&#xff1a;- 空格 或 * 空格示例&#xff1a; - list1- list2嵌套有序列表 操作&#xff1a;tab 数字 空格 示例&#xff1a; …

使用gtsam添加OrientedPlane3Factor平面约束因子

在基于地面约束的SLAM优化中&#xff0c;已知的地面信息&#xff08;如 plan.pcd 文件中的地面模型&#xff09;可以用作一个先验约束&#xff0c;以帮助优化位姿估计。具体而言&#xff0c;这个过程涉及将地面模型和每个帧的位姿结合&#xff0c;以创建一个因子模型&#xff0…

二分查找算法——搜索插入位置

一.题目描述 35. 搜索插入位置 - 力扣&#xff08;LeetCode&#xff09; 二.题目解析 如果只看题目的前半句&#xff0c;直接就用简单二分秒了。但是题目还有后半句&#xff0c;如果找不到目标值&#xff0c;则返回它应该插入的位置。 因为数组是排序的&#xff0c;所以应该…

啥!GitHub Copilot也免费使用了

文章目录 前言免费版直接修复代码多文件上下文Agent模式总结 前言 最近&#xff0c;GitHub 给开发者们带来了一个好消息&#xff1a;他们的 AI 编程助手 GitHub Copilot 现在可以免费使用了&#xff01;以前&#xff0c;每个月要花 10 美元才能享受的服务&#xff0c;现在对所…

【计算机网络】窥探计网全貌:说说计算机网络体系结构?

标签难度考察频率综合题⭐⭐⭐60% 这个问题在计算机网络知识体系中是一个比较重要的问题&#xff0c;只有完整地了解计算机网络的体系结构才能清晰地认识网络的运行原理。 在回答这个问题时&#xff0c;笔者认为有几个比较重要的点&#xff1a; 首先一定要分清楚前置条件&am…

Web开发中页面出现乱码的解决(Java Web学习笔记:需在编译时用 -encoding utf-8)

目录 1 引言2 乱码表现、原因分析及解决2.1 乱码表现2.2 原因分析2.3 解决 3 总结 1 引言 Web开发的页面出现了乱码&#xff0c;一直不愿写出来&#xff0c;因为网上的解决方案太多了。但本文的所说的页面乱码问题&#xff0c;则是与网上的大多数解决方案不一样&#xff0c;使…

Cesium小知识:pointPrimitive collection 详解

Cesium.PointPrimitiveCollection 是 Cesium 中用于高效管理和渲染大量点(points)的一个类。它允许你创建和管理大量的 PointPrimitive 实例,这些实例可以用来表示地理空间中的点数据,如传感器位置、车辆位置、兴趣点等。与直接使用 Cesium.Entity 相比,PointPrimitiveCol…

说一说mongodb组合索引的匹配规则

一、背景 有一张1000多万条记录的大表&#xff0c;需要做归档至历史表&#xff0c;出现了大量慢查询。 查询条件是 "classroomId": {$in: ["xxx", "xxx", ..... "xxx","xxx", "xxx" ] }耗时近5秒&#xff0c;且…

【论文笔记】多个大规模数据集上的SOTA绝对位姿回归方法:Reloc3r

abstract 视觉定位旨在确定查询图像相对于姿势图像数据库的相机姿势。 近年来&#xff0c;直接回归相机姿势的深度神经网络由于其快速推理能力而受到欢迎。 然而&#xff0c;现有方法很难很好地推广到新场景或提供准确的相机姿态估计。 为了解决这些问题&#xff0c;我们提出了…