基于机器学习的学生成绩预测
创作时间:
作者:
@小白创作中心
基于机器学习的学生成绩预测
引用
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通过机器学习来预测学生成绩的完整过程。
热门推荐
谷丙转氨酶偏高,这几点危害你知道吗?
重庆自驾游厦门:6天5夜行程规划与实用攻略
魏忠贤的军事冒险:明朝末年的权力与战争
魏忠贤:从街头混混到“九千岁”的传奇人生
《大明风华》里的魏忠贤,真有这么厉害?
来安非遗大揭秘:7项省级、市级非遗展现独特文化魅力
韩国江原道羊驼世界:亲子游玩的萌宠天堂
量化健康:走进数字化时代的健康管理新模式
为什么大多数国人相信中医,看病却不首选中医?
尿路感染狂喝水,真的有用吗?
上海湖南街道物业费调整秘籍揭秘
藏在大山深处的"小九寨沟",佛光常现随人动,最适合女性朋友去
物业费构成全解析:你每月的钱都花在了哪里?
物业管理费审查,业主维权新姿势
物品运输途中被损坏,凭什么赔那么少?记者调查
当准备旅行时,如何挑选合适自己的行李箱
防止尿路感染复发的五大措施
夏季细菌容易在尿路扩散,做好3件事,挡住尿路感染~
云南铁皮石斛栽培秘籍大揭秘
乐清铁皮石斛:一株“救命仙草”的古今传奇
湖南居然还有人住在洞里!
南京市妇幼保健院专家教你春季养肝
情绪管理:远离肝火旺的金钥匙
夏枯草桑叶茶:平息肝火的秘密武器
冬季养生必备:茼蒿清肝火
BMS电池管理系统:高效节能的秘密武器
新能源车电池管理,你真的懂吗?
人体工学椅:颈椎健康的守护者
低头族必看!拯救颈椎健康秘籍
瑜伽拯救颈椎,告别酸痛不再是梦