基于机器学习的学生成绩预测
创作时间:
作者:
@小白创作中心
基于机器学习的学生成绩预测
引用
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通过机器学习来预测学生成绩的完整过程。
热门推荐
关于人体的“三魂七魄”
西南财经大学:2025年中国人口现状及未来发展趋势,人口预测与政策
王羲之小楷字帖:端秀清新的书法艺术典范
通用显示屏过滤:净化公共信息展示空间
黑豆:小身体大内涵,你了解多少?
脑白质高信号Fazekas一级是什么意思
吃蛋白质可以长高吗
高血压糖尿病患者可以适量食用香瓜子
复读有必要吗?复读的好处和坏处
书法三大古风:晋韵、唐风、宋意
孩子在服用药物后出现心跳加速是怎么回事
在家自制猪油有风险?专家提醒:这些健康隐患需警惕
秋分与淮南“鸟代”——灰喜鹊
老外选出“9大中国美食”,都是中餐厅里的热门菜,品味还挺不错
世界上最后消失的5个国家,南斯拉夫连美苏都得忌惮三分!
长洲洪圣庙 | 香港历史文化圣地与必游景点 🌟
考研词汇和六级词汇的区别
江南人的夏天,从这碗乌米饭开始,入口清香,软糯香甜,营养健康寓意好
《荒野大镖客:救赎2》:登峰造极的沉浸式体验
辛辣食物有哪些?如何健康享用?
中国爆震发动机进步显著,什么是爆震发动机?它是怎么工作的?
浴室镜的时间怎么调整,提升生活品质的秘诀
黄土高原的绿色生态典范:甘肃定西安定区水土保持综合治理实践
点痣后是否可以用碘伏进行消毒?
如何推动经济的结构转型?结构转型过程中可能遇到哪些困难?
幽门螺杆菌感染怎样才能治好?四联疗法了解一下
空调铝管和铜管的区别是什么
李德仁:满腔热血浇铸遥感强国梦
锐捷网关路由配置教程(详解锐捷网关路由配置的步骤和技巧)
探索威士忌的柔和之道:搭配与特调技巧揭秘