基于机器学习的学生成绩预测

news2024/11/24 11:56:51

学生成绩预测是一个基于回归问题的流行数据科学案例研究。对于数据科学初学者来说,这是一个很好的回归问题,因为它很容易解决和理解。本文中,将带你通过使用Python的机器学习来完成学生成绩预测的任务。

学生成绩预测(案例研究)

您将获得有关学生的一些信息,例如:

  1. 他们选择的课程数目
  2. 学生每天平均学习时间
  3. 学生成绩

通过使用这些信息,你需要预测其他学生的分数。您可以从这里下载数据集。

https://www.kaggle.com/datasets/yasserh/student-marks-dataset

基于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

现在,让我们测试这个机器学习模型的性能,根据我们用来训练模型和预测学生成绩的特征提供输入:

# Features = [["time_study", "number_courses"]]
features = np.array([[4.508, 3]])
model.predict(features)

输出

array([22.30738483])

以上,这就是如何使用Python通过机器学习来预测学生成绩的任务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1174089.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

本地idea远程调试服务器程序

本文主要介绍idea本地调试远程服务器程序的方式。相信很多同行跟我一样,在最初接触公司项目的时候,遇到测试提出的缺陷,往往会在本地进行调试、替换jar包远程调试等方式,本地调试往往会导致数据和环境不一致的问题使得问题无法复现…

机器学习领域经典书籍推荐

机器学习领域经典书籍 1. 数据挖掘概念与技术2. 机器学习3. 统计学习方法4. 深度学习5. 动手学深度学习(PyTorch版) 1. 数据挖掘概念与技术 原名: Data Mining:Concepts and Techniques,Third Edition 作者: (美&#…

Solidity入门第一步之数据类型

各种类型介绍 数值类型(Value Type):包括布尔型(bool),整数型(int、uint、uint256)等等,这类变量赋值时候直接传递数值。引用类型(Reference Type):包括数组和结构体,这类变量占空间大,赋值时候直接传递地…

Leetcode—707.设计链表【中等】

2023每日刷题(十七) Leetcode—707.设计链表 设计单链表实现代码 typedef struct Node {int val;struct Node* next; } MyLinkedList;MyLinkedList* myLinkedListCreate() {MyLinkedList* mList (MyLinkedList *)malloc(sizeof(MyLinkedList));mList-…

chroot

1.chroot技术 在Linux系统中,系统默认的目录结构都是以/,即根(root)开始的。而在使用chroot之后,进程的系统目录结构将以指定的位置作为根(/)位置。chroot实际作用就是将进程描述符中struct fs_struct中的root的值设置为选定的目录。 在经过…

深度学习之基于Yolov5人体姿态摔倒识别分析报警系统(GUI界面)

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 系统设计概述: 传感器采集:通过在场景中布置摄像头或红外传感器等设备,采集人体…

latex自定义缩写

Latex 写文章可能常用到一些缩写,如: .e.g.i.e.cf.etc.w.r.t.i.i.d.et al. 其中有些要斜体,如果每次都要用 \textit{...}、{\it ...} 弄斜,有点麻烦。CVPR 模板中有定义一些命令,可以更方便地输入这些缩写。这里记录…

openebs

1. 简介 OpenEBS是一款使用Go语言编写的基于容器的块存储开源软件。OpenEBS使得在容器中运行关键性任务和需要数据持久化的负载变得更可靠。 OpenEBS是一组存储引擎,允许您为有状态工作负载(StatefulSet)和Kubernetes平台类型选择正确的存储解决方案。 在高层次上…

CCF-CSP真题《202309-4 阴阳龙》思路+python,c++满分题解

想查看其他题的真题及题解的同学可以前往查看:CCF-CSP真题附题解大全 试题编号:202309-4试题名称:阴阳龙时间限制:2.0s内存限制:1.0GB问题描述: 问题描述 西西艾弗岛的下方是一个庞大的遗迹群,神…

项目实战:优化Servlet,把所有围绕Fruit操作的Servlet封装成一个Servlet

1、FruitServlet 这些Servlet都是围绕着Fruit进行的把所有对水果增删改查的Servlet放到一个Servlet里面,让tomcat实例化一个Servlet对象 package com.csdn.fruit.servlet; import com.csdn.fruit.dto.PageInfo; import com.csdn.fruit.dto.PageQueryParam; import c…

Go语言文本处理:正则表达式与字符串操作

大家好,我是[lincyang]。 今天,我们将一起探讨Go语言在文本处理方面的强大功能,特别是正则表达式和字符串操作。 Go语言以其简洁和高效而闻名,这些特性在文本处理上也得到了很好的体现。 接下来,我将通过丰富的案例…

FPGA的元素组件

注意:关于FPGA的元素这一块儿内容,稍有出入。例如:吉姆莱丁 著,陈会翔 译,由清华大学出版社出版的《构建高性能嵌入式系统》中提到:FPGA通常由查找表、触发器、块RAM、DSP切片、及其他功能元件等元素组成。…

C语言----每日五道选择题Day1

1.第一题 1、指出下列代码的缺陷&#xff08; &#xff09;【多选】 float f[10]; // 假设这里有对f进行初始化的代码 for(int i 0; i < 10;) {if(f[i] 0)break; } A: for(int i 0; i < 10;)这一行写错了 B: f是float型数据直接做相等判断有风险 C: f[i]应该是…

C++初阶--类与对象--const成员和日期类的实现

文章目录 const 成员对一个日期类的实现源码解析构造函数的验证运算符的重复利用前置与后置其他运算符的验证 const 成员 将const修饰的成员函数称之为const成员函数。 在一个成员函数里面&#xff0c;对于this指针指向的对象&#xff0c;是隐藏式的&#xff0c;没有办法用常规…

B-DS二叉树_输出所有目标路径

Description 给定二叉树和一个整数目标targetSum&#xff0c;输出所有从根结点到叶子结点的路径总和等于targetSun的路径。 Input 第一行输入t&#xff0c;表示有t个测试样例。 第二行起&#xff0c;每一行首先输入一个整数targetSum&#xff0c;接着输入n&#xff0c;接着输…

带你拿捏链表

本专栏内容为&#xff1a;数据结构学习专栏&#xff0c;分为初阶和进阶两部分。 通过本专栏的深入学习&#xff0c;你可以了解并掌握数据结构。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;数据结构 &#x1f69a;代码仓库&#xff1a;小小u…

Mega Sales购物季营销,掌握流量密码不是事

“Mega Sales”购物季是东南亚地区“双十一、双十二”的两个重要节点&#xff0c;在年末即将来临之际&#xff0c;全球电商市场都正进入激动人心的备货大卖时期。面对这样的重要节目&#xff0c;商家应该如何做好营销铺垫&#xff0c;全面备战大促的不同阶段&#xff1f; 作为…

C生万物 | 从浅入深理解指针【第三部分】(qsort的使用和模拟实现)

C生万物 | 从浅入深理解指针【第四部分】&#xff08;qsort的使用和模拟实现&#xff09; 文章目录 C生万物 | 从浅入深理解指针【第四部分】&#xff08;qsort的使用和模拟实现&#xff09;回调函数是什么&#xff1f;qsort使用举例qsort函数的模拟实现 回调函数是什么&#x…

网络层:控制平面

路由选择算法 路由选择算法就是为了在端到端的数据传输中&#xff0c;选择路径上路由器的最好的路径。通常&#xff0c;一条好的路径指具有最低开销的路径。最低开销路径是指源和目的地之间具有最低开销的一条路。 根据集中式还是分散式来划分 集中式路由选择算法&#xff1a…

从UEFI如何启动到系统

从UEFI如何启动到系统 文章目录 从UEFI如何启动到系统UEFI须知1. 进入UEFI setup界面2. Setup界面3. BootManager界面4. Shell下操作4.1. 显示启动设备4.2. 进入设备及查看文件4.3. UEFI下的其他操作4.4. UEFI下的一些Shell命令 5. UEFI下更新固件方法GRUBGRUB界面1. 编辑GRUB选…