WEKA 预处理和预测学生成绩

WEKA Preprocess and Predicting student grade

我正在开发一个应用程序,它根据学生的成绩对每年的成绩进行预测。学生的成绩范围从 70 到 97。我的数据集包含从 1 年级到 5 年级的学生成绩: GWA1 - 第一年综合加权平均值 GWA2 - 第二年综合加权平均值 依此类推,直到 GWA5

我打算使用 J48 进行预测。

我有不同的问题,

  1. 我的数据集包含不同的学生年级。如果学生目前是第 4 年,则 GWA4 和 GWA5 为零。是不是应该只收研究生? (拥有GWA1-GWA5的学生)。
  2. 有些课程最多只提供 4 年。他们数据集中的 GWA5 是 0.
  3. 程序还需要预测他当年的成绩。例如,对于二年级学生,程序预测 GWA2。对于四年级学生,该程序预测 GWA4。
  4. 如何预处理数据?我应该将成绩分类为优秀、一般、差等等级标签吗?

示例数据集:

GWA1     GWA2     GWA3     GWA4     GWA5
83.6     87.5     90.2     89.1     91.2
76.4     78.2     77.6     80.9     79.4
93.6     91.5     92.7     91.1     92.7

最重要的是,您的数据集不是 tidy。列需要转换为行,例如进入这个 table 布局:

student year gpa passed s1 1 83.6 yes s1 2 76.4 no ...

我编了 "passed" 列。但这种设计在默认配置下更易于 J48 使用。也就是说,要对分类变量或二进制变量进行分类 - J4​​8 无法处理 "class" 属性(= 待预测属性)中的数值属性。

我不确定您是否也可以使用 J48 预测数值。我认为 weka 和数据集需要做很多调整。

检查自定义对话框,阅读文档,然后 google "classification by regression"。或者更好的是,使用 LinearRegression 分类器而不是 J48。

无论如何,在 "Filter" 面板中,您需要添加 "AddClassification" supervised-instance-filter,然后将其 "Output Classifications" 选项设置为 True。