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

news/2025/1/21 7:36:49/

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

第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     float641   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()

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

相关文章

脚本化挂在物理盘、nfs、yum、pg数据库、nginx(已上传脚本)

文章目录 前言一、什么是脚本化安装二、使用步骤1.物理磁盘脚本挂载&#xff08;离线&#xff09;2.yum脚本化安装&#xff08;离线&#xff09;3.nfs脚本化安装&#xff08;离线&#xff09;4.pg数据库脚本化安装&#xff08;离线&#xff09;5.nginx脚本化安装&#xff08;离…

第六届土木建筑及灾害防控国际学术会议暨第三届智慧城市建筑与基础设施耐久性国际学术会议(CADPC DuraBI 2025)

第六届土木建筑及灾害防控国际学术会议暨第三届智慧城市建筑与基础设施耐久性国际学术会议&#xff08;CADPC & DuraBI 2025&#xff09;将于2025年2月28日-3月2日在青岛举办。会议将以“建筑技术”、“灾害预测”、“灾害防控”、“灾后重建”等主题展开学术研讨&#xff…

Java IDEA中Gutter Icons图标的含义

前些天发现了一个蛮有意思的人工智能学习网站,8个字形容一下"通俗易懂&#xff0c;风趣幽默"&#xff0c;感觉非常有意思,忍不住分享一下给大家。 &#x1f449;点击跳转到教程 前言&#xff1a; 很多人刚开始用IDEA来学习编程&#xff0c;会发现下面这些图标。 但是…

《视听导报》是什么类型的报纸?报纸上发文章要交版面费吗?

作为个人成果发表的重要场所&#xff0c;报纸目前正得到越来越多单位的认可。不过在投稿时&#xff0c;我们既要考虑投稿的报纸是否符合评审标准&#xff0c;也要考虑发表文章的成本是否在我们的承受范围之内。 下面就让我们以《视听导报》为例&#xff0c;了解下如何查看报纸的…

【LeetCode: 240. 搜索二维矩阵 II + 指针 + 遍历】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

大模型训练中如何找到内存泄漏

内存泄漏的常见原因 1.内存泄漏有可能是我们创建一个全局的list,每次iter都会往其中添加Tensor,会导致内存泄漏&#xff1b; 2.如果我们某个Tensor在计算图中的前向计算&#xff0c;但是没有参与反向更新参数&#xff0c;可能会导致内存泄漏&#xff0c;因为pytorch的内存管理…

【Unity-Animator】通过 StateMachineBehaviour 实现回调

StateMachineBehaviour 简介 StateMachineBehaviour是一个基类&#xff0c;所有状态脚本都派生自该类。它可以在状态机进入、退出或更新状态时执行代码&#xff0c;而无需编写自己的逻辑来测试和检测状态的变化。这使得开发者可以更方便地处理状态转换时的逻辑&#xff0c;例…

Wireshark 使用教程:网络分析从入门到精通

一、引言 在网络技术的广阔领域中&#xff0c;网络协议分析是一项至关重要的技能。Wireshark 作为一款开源且功能强大的网络协议分析工具&#xff0c;被广泛应用于网络故障排查、网络安全检测以及网络协议研究等诸多方面。本文将深入且详细地介绍 Wireshark 的使用方法&#x…