Я использую Weka для интеллектуального анализа данных. Мои данные учитывают школьные оценки (числовой вывод от 0 до 20). Я хочу, чтобы оценки моделировались бинарной классификацией (т.е. «пройдено», если оценки> = 10, иначе «не пройдено»). Но когда я использую дискретизацию в Weka и выполняю биннинг (путем определения 2 бинов), значения = 10 переходят в нижний бин (группа неудач). Я хочу, чтобы значения = 10 были частью верхней корзины (группы проходов). Как я могу решить эту проблему?
Бинарная классификация оценок «сдал/не сдал» в Weka
Ответы (1)
Фильтр MathExpression будет работать.
Пример файла arff, в котором y и y2 просто продублированы, поэтому я могу преобразовать y2 и x как еще один атрибут:
@relation so_2020-04-01
@attribute x numeric
@attribute y numeric
@attribute y2 numeric
@data
0.32789,12,12
0.932754,8,8
0.750824,20,20
0.601161,17,17
0.867985,2,2
0.469246,19,19
0.570984,10,10
0.82686,18,18
0.536315,6,6
0.878526,15,15
0.318298,7,7
0.278011,5,5
0.78302,4,4
0.557255,1,1
0.510926,3,3
0.429421,13,13
0.642457,9,9
0.227804,11,11
0.655531,16,16
0.41444,14,14
Настройте MathExpression:
После того, как вы подали заявку, y2 теперь имеет 1 для прохождения и 0 для отказа, с 10 в качестве точки отсечения.
@relation 'so_2020-04-01-weka.filters.unsupervised.attribute.MathExpression-Eifelse(A>10,1,0)-Rfirst,2-unset-class-temporarily'
@attribute x numeric
@attribute y numeric
@attribute y2 numeric
@data
0.32789,12,1
0.932754,8,0
0.750824,20,1
0.601161,17,1
0.867985,2,0
0.469246,19,1
0.570984,10,0
0.82686,18,1
0.536315,6,0
0.878526,15,1
0.318298,7,0
0.278011,5,0
0.78302,4,0
0.557255,1,0
0.510926,3,0
0.429421,13,1
0.642457,9,0
0.227804,11,1
0.655531,16,1
0.41444,14,1
Затем вы можете использовать фильтр NumericToNominal, если хотите, чтобы переменная класса была номинальной, а не числовой.
person
zbicyclist
schedule
01.04.2020