Бинарная классификация оценок «сдал/не сдал» в Weka

Я использую Weka для интеллектуального анализа данных. Мои данные учитывают школьные оценки (числовой вывод от 0 до 20). Я хочу, чтобы оценки моделировались бинарной классификацией (т.е. «пройдено», если оценки> = 10, иначе «не пройдено»). Но когда я использую дискретизацию в Weka и выполняю биннинг (путем определения 2 бинов), значения = 10 переходят в нижний бин (группа неудач). Я хочу, чтобы значения = 10 были частью верхней корзины (группы проходов). Как я могу решить эту проблему?


person mohammadreza    schedule 31.03.2020    source источник


Ответы (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