Я изучаю, можно ли автоматизировать оценку кода ученика на основе стиля кодирования. Это включает в себя такие вещи, как избежание дублирования кода, прокомментированный код, плохое имя переменных и многое другое.Управленческое обучение по стилю кодирования - выбор функции (Scikit Learn)
Мы стараемся учиться на основе оценок состава прошлого семестра (от 1-3), что прекрасно ведет к контролируемому обучению. Основная идея заключается в том, что мы извлекаем функции из представлений учащегося и создаем feature_vector, а затем запускаем его через логистическую регрессию, используя scikit-learn. Мы также пробовали различные вещи, включая запуск PCA на векторах функций, чтобы уменьшить размерность.
Наш классификатор просто угадывает самый частый класс, который составляет 2 балла. Я считаю, что это потому, что наши функции просто НЕ прогностичны. Есть ли другая возможная причина для контролируемого алгоритма обучения, чтобы угадать только доминирующий класс? Есть ли способ предотвратить это?
Как я считаю, из-за особенностей, которые не являются прогностическими, есть ли способ определить, что такое «хорошая» функция? (И, кстати, я имею в виду дискриминационный или прогностический).
Примечание: в качестве побочного эксперимента мы проверили, насколько последовательными были оценки прошлых лет, с оценками, которые уже были оценены читателями. Только 55% из них дали тот же показатель состава (1-3) для проектов. Это может означать, что этот набор данных просто не классифицируется, потому что люди не могут даже оценивать последовательно. Любые советы по другим идеям? Или действительно ли это так?
Особенности включают в себя: Количество строк повторяющегося кода, средней длины функции, числа 1 переменных символов, число строк, которые включают в себя закомментированными код, максимальная длина строки, количество неиспользованных импорта, неиспользуемые переменные, неиспользуемые параметры. Еще несколько ... Мы визуализировали все наши функции и обнаружили, что, хотя среднее значение коррелирует со счетом, вариация действительно большая (не многообещающая).
Редактировать: Сфера применения нашего проекта: мы пытаемся учиться только в одном конкретном проекте (с учетом кода скелета) в одном классе. Нам пока не нужно обобщать.
+1. Вау! что вопрос/ – Yavar
Однако ответ будет больше обусловлен статистикой здесь, а не информатикой. – Yavar
Включена «статистика» в качестве тега. Благодаря! – stogers