Вопрос об использовании Weka, инструмента машинного обучения
-
05-07-2019 - |
Вопрос
Я использую функцию проводника Weka для классификации.
Итак, у меня есть мой файл .arff с двумя функциями ЧИСЛОВОГО значения, а мой класс - двоичный 0 или 1 (например, {0,1}).
Образец:
@RELATION summary
@ATTRIBUTE feature1 NUMERIC
@ATTRIBUTE feature2 NUMERIC
@ATTRIBUTE class {1,0}
@DATA
23,11,0
20,100,1
2,36,0
98,8,1
.....
Я загружаю этот файл .arff, использую 10-кратную перекрестную проверку (без тестового файла) и выбираю NaiveBayes, затем классифицирую данные, и это дает мне:5 неправильно маркированных, 100 правильно маркированных.Пока все идет хорошо.
Теперь я существенно изменяю свой файл .arff (даю совершенно случайные значения для атрибутов моих функций).И повторите вышесказанное, и я получу ТОЧНО такую же статистику при классификации.
Я попробовал это с большим количеством изменений в моем файле .arff, с различными алгоритмами классификации.Тем не менее, ТОЧНО такая же статистика (в рамках одного и того же алгоритма) независимо от того, какие значения я даю своему файлу .arff.
Я делаю здесь что-то не так?
Решение
Трудно сказать без дополнительной информации, но у меня есть два предложения:
Каковы относительные пропорции этих двух классов?Это от 5 до 100?Многие алгоритмы плохо работают с сильно искаженными распределениями меток классов.
Просто догадка, но попробуйте изменить метки вашего класса с чисел на строки (например"класс 1" и "класс 2").Weka называет эти атрибуты "номинальными", поэтому, возможно, использование чисел запрещено.
Другие советы
Также:имейте в виду, что перекрестная проверка довольно ужасна в пользовательском интерфейсе, поскольку в любом случае они показывают вам только исходное дерево (прежде чем они добавят другие данные).Если вы хотите сгенерировать окончательные деревья, вам понадобится programmatic API.Я предлагаю использовать разделенный набор обучающих / тестовых данных.
Вы пытались измениться
@ATTRIBUTE class {1,0}
с
@ATTRIBUTE class {yes,no}