пройти / не сдать бинарную классификацию школьных оценок в weka - PullRequest
0 голосов
/ 31 марта 2020

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

1 Ответ

1 голос
/ 01 апреля 2020

Будет работать фильтр 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:

enter image description here

После того, как вы применили, 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, если хотите, чтобы переменная класса была номинальной, а не числовой c.

...