基于机器学习的学生成绩预测
创作时间:
作者:
@小白创作中心
基于机器学习的学生成绩预测
引用
CSDN
1.
https://blog.csdn.net/qq_42034590/article/details/132921635
学生成绩预测是一个经典的机器学习案例,通过分析学生的学习时间和选课数量等特征,可以预测其考试成绩。本文将使用Python中的机器学习库,基于线性回归算法,详细讲解如何完成这一预测任务。
数据集介绍
我们将使用一个包含学生学习数据的数据集,其中包含以下信息:
- 学生选择的课程数目
- 学生每天平均学习时间
- 学生成绩
你可以从这里下载数据集。
数据预处理
首先,导入必要的Python库并加载数据集:
import numpy as np
import pandas as pd
import plotly.express as px
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
data = pd.read_csv("Student_Marks.csv")
print(data.head(10))
输出结果如下:
number_courses time_study Marks
0 3 4.508 19.202
1 4 0.096 7.734
2 4 3.133 13.811
3 6 7.909 53.018
4 8 7.811 55.299
5 6 3.211 17.822
6 3 6.063 29.889
7 5 3.413 17.264
8 4 4.410 20.348
9 3 6.173 30.862
数据集中只有三列。其中,Marks列是目标列,我们需要预测学生的分数。
检查数据集是否包含任何null值:
print(data.isnull().sum())
输出结果:
number_courses 0
time_study 0
Marks 0
dtype: int64
由于数据中没有空值,数据集可以直接使用,不需要其他预处理。
数据探索
让我们分析一下数据中各列的分布情况:
查看学生选择的课程数量分布:
data["number_courses"].value_counts()
输出结果:
3 22
4 21
6 16
8 16
7 15
5 10
Name: number_courses, dtype: int64
从上可知,学生选择的课程最少三门,最多八门。让我们来绘制一个散点图,看看课程的数量是否会影响学生的分数:
figure = px.scatter(data_frame=data, x="number_courses",
y="Marks", size="time_study",
title="Number of Courses and Marks Scored")
figure.show()
从图中可以看出,课程数量与分数之间没有明显的线性关系。让我们再看看每天学习的时间和学生得分之间的关系:
figure = px.scatter(data_frame=data, x="time_study",
y="Marks", size="number_courses",
title="Time Spent and Marks Scored", trendline="ols")
figure.show()
从图中可以看出,学习时间和分数之间存在明显的线性关系。这意味着学生花在学习上的时间越多,他们的成绩就越好。
最后,让我们计算各特征与分数之间的相关性:
correlation = data.corr()
print(correlation["Marks"].sort_values(ascending=False))
输出结果:
Marks 1.000000
time_study 0.942254
number_courses 0.417335
Name: Marks, dtype: float64
可以看出,time_study列与Marks的相关性要高于number_courses列。
模型训练与预测
现在,让我们转向训练机器学习模型来预测学生的分数的任务。
首先将数据分为训练集和测试集:
x = np.array(data[["time_study", "number_courses"]])
y = np.array(data["Marks"])
xtrain, xtest, ytrain, ytest = train_test_split(x, y,
test_size=0.2,
random_state=42)
这里将使用最简单的线性回归算法训练机器学习模型:
model = LinearRegression()
model.fit(xtrain, ytrain)
model.score(xtest, ytest)
输出结果:
0.9459936100591212
模型的R²分数为0.946,说明模型的预测效果非常好。
模型预测
现在,让我们测试这个机器学习模型的性能,根据我们用来训练模型和预测学生成绩的特征提供输入:
# Features = [["time_study", "number_courses"]]
features = np.array([[4.508, 3]])
model.predict(features)
输出结果:
array([22.30738483])
以上,这就是如何使用Python通过机器学习来预测学生成绩的完整过程。
热门推荐
250克以下的无人机不用实名登记?大疆说不会发力这类机型
汽车零部件车间布局的SLP与生产线平衡优化研究
满屋子都是猫毛怎么办?预防与清理猫毛的方法
养好水榕,水榕种植
重庆交通职业学院进入中国高职院校增值评价前五
如何改善执行力:七个方面的实用建议
NBA选秀解析:各队策略与选择揭秘
黄金回落之后市场趋势如何发展?这种发展受到哪些因素制约?
2025年高考体检时间查询表:项目有哪些?都检查什么?
如何降低高胆固醇:饮食、运动和药物的最佳策略
杜兰特23+6布克10+6 兰德尔25+8森林狼击败太阳
襄阳:历史文化名城的前世今生
报告单显示「腔隙性脑梗死」,需要治疗吗?2 种情况需注意!
中国地质大学教授徐锡伟:缅甸地震能量与汶川地震相当 不会引发海啸
西班牙语中的斜体字到底怎么用?原来我们之前都“写”错了!
管培生的培养内容和培养方式
樱花粉 桃花红
小米智能家居系统研究
蒲公英:毒性揭秘与安全食用指南
N5095 vs i3 1115G4,性价比之王花落谁家?
河南郑州不可错过的12道本地小吃,好吃到爆!
好想去!10分钟车程!到圣泉寻找“老江津”烟火气
考前如何宣泄压力
膳食纤维与个性化饮食的未来:基于肠道微生物的健康策略
如何判断雅居的居住体验?这种体验如何优化?
正时链条,你了解吗?
传统小吃酸嘢成广西舌尖名片,“网红”如何能“长红”?
去世后出现多份遗嘱,哪份是真?一文讲清如何立遗嘱
药师说药丨“药”“凝”健康——肿瘤抗凝知多少
9道最出名的香港菜,鲜香味美,每一道都是香港人的心头爱