基于机器学习的学生成绩预测
创作时间:
作者:
@小白创作中心
基于机器学习的学生成绩预测
引用
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通过机器学习来预测学生成绩的完整过程。
热门推荐
上海交通大学医学院精神与临床心理学院今日揭牌成立
智能产品消费指南:智能家居设备的安全性与隐私保护
混动车的P1、P2、P3、P4架构,是什么意思?
怎样拆分Word文档?
珀西·比西·雪莱
黑曜石容易碎吗?保养秘诀与注意事项完整教学
丹东旅游攻略自由行最佳路线:解锁边境小城的宝藏玩法
3D建筑模型的 LOD 规范
Android手机触摸屏无法工作?15种实用解决方案帮你轻松解锁
Nature子刊:暨南大学张力团队揭示焦虑障碍发生的肝-脑轴机制
如何解决Win10系统中Print Spooler服务自动停止的问题?
映泰主板硬盘兼容指南(解答疑惑,您的映泰主板能否识别硬盘?)
买到凶宅并已过户怎么办?法律专家详解维权途径
强制执行会影响法人吗?企业破产时债务人和抵押物如何处理?
公司经营目标与计划制定
柳州消防首席宣传员:用镜头记录感动,用故事传递温暖
个体工商户登记的数字化转型:互联网时代下的网上办理流程探析
买到凶宅怎么办,如何索赔
湿地保护助力美丽中国建设
广州楼市最新成绩单出炉!一手住宅成交量同比增53.2%
悬疑逐渐成为外壳 罪案推理剧如何洞察人性与社会?
如何挑选优质的板材并判断其环保性能?挑选板材时需要关注哪些方面?
八字神煞中的"丧门吊客":起源、影响与应对
高科技赋能传统中医全新“智慧”!
苏州房地产市场2024年回顾与展望
重磅上市!汉译名著·政治学经典10种
从维权热点看 提高物业服务质量仍在路上丨“3·15”观察
商标使用期限到期要怎么做
装修公司团队如何选择
文化遗产:古老羊皮筏子 黄河旅游新时尚