sto*_*ers 8 statistics machine-learning feature-extraction feature-selection supervised-learning
我正在研究是否可以根据编码风格自动计算学生代码的得分.这包括避免重复代码,注释掉代码,变量命名错误等等.
我们正在尝试根据过去学期的作文分数(从1-3开始)学习,这很好地导致了有监督的学习.基本思想是我们从学生的提交中提取特征,并创建feature_vector,然后使用scikit-learn通过逻辑回归运行它.我们还尝试了各种各样的事情,包括在特征向量上运行PCA以减少维数.
我们的分类器只是猜测最频繁的类,即2分.我相信这是因为我们的功能无论如何都不能预测.有监督的学习算法是否还有其他可能的原因来猜测优势类?有什么方法可以防止这种情况吗?
我认为这是因为这些功能不具备预测性,有没有办法确定"好"的功能是什么?(好的,我的意思是可辨别的或预测性的).
注意:作为一项辅助实验,我们通过对已经评分的读者成绩分配测试了过去成绩的一致性.只有55%的人给出了相同的项目成分(1-3).这可能意味着这个数据集根本无法归类,因为人类甚至无法进行一致评分.关于其他想法的任何提示?或者事实上是否真的如此?
功能包括:重复代码行数,平均函数长度,1个字符变量数,包含注释掉代码的行数,最大行长度,未使用导入计数,未使用变量,未使用参数.还有一些...我们将所有功能可视化,并发现虽然平均值与分数相关,但变化非常大(不太有希望).
编辑:我们项目的范围:我们只是试图从一个特定项目(给出骨架代码)中学习.我们还不需要概括.
只是一个想法 - Andrew Ng 在 Coursera 上教授机器学习课程 ( https://www.coursera.org/course/ml )。学生在整个课堂上提交了几项编程作业。我记得读过(尽管不幸的是我现在找不到这篇文章),有一些正在进行的研究试图对学生在课堂上提交的编程作业进行聚类,直觉表明学生在作业中会犯一些常见的错误。
不确定这是否对您有帮助,但也许将其视为无监督学习问题可能更有意义(例如,仅凭直觉寻找不同代码样本中的相似性,即相似的代码样本应该获得相似的分数)。