基于机器学习的学生成绩预测
创作时间:
作者:
@小白创作中心
基于机器学习的学生成绩预测
引用
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通过机器学习来预测学生成绩的完整过程。
热门推荐
车厘子VS樱桃:从营养角度看,哪种更值得你放进嘴里?
让每个来过动物园的人都心存善意和美好
婴儿胃食管反流病怎么治疗好
如何用人工智能做期货
斯坦福监狱实验:一场揭示人性黑暗面的心理学实验
碳板马拉松跑鞋成中小学生“新宠”?骨科医生提醒不可盲目跟风
办公室走廊效果图设计——塑造企业文化与品牌形象
自动贩卖机经营合规指南:营业执照办理与劳动争议处理
图解JVM - 6.堆
牛黄消炎丸的作用与功效是什么
如今才懂,很多父母一生勤劳、节俭,为啥会沦为底层人,4个原因
大学英语六级考试流程
【深度解析】自我意识的本质:科学、佛学与哲学的多重解读
毛发管理有哪些项目
菠萝蜜最快的催熟办法一晚上
如何获取好的书籍数据库
清肺化痰,止咳平喘——清肺消炎丸
悦己丨指尖上的美丽与健康:美甲热潮背后的隐忧与守护
《矛盾论》与《实践论》导读课件
揭秘古代货币之谜:银子的真实用途与误解
昭和100年,日本仍无法翻过历史认识这一页
期货趋势如何准确了解?了解期货趋势的依据是什么?
放映员是干什么的
黄芪巧搭一味药,气顺了、痰湿没了,肝或越来越好!
内容同质化、文化内涵挖掘不足...文旅融合需进入“软开发”阶段
劳动合同应该包括哪些方面的内容呢
如何利用AI技术提升体检中心的服务效率
分户的理由与实践探讨
【集成电路演进揭秘】:半导体器件发展历史与前沿技术
夺门之变:明朝宫廷政变始末