Проблемы при использовании Keras np_utils.to_categorical

#python #keras #neural-network

#python #keras #нейронная сеть

Вопрос:

Я пытаюсь решить проблему классификации нескольких классов и хочу одним горячим способом закодировать целевую переменную. Проблема в том, что моя целевая переменная находится в диапазоне от (1-5), и, судя по документации Keras, целевая переменная должна находиться в диапазоне от 0 до num_classes.

Я пытался использовать что-то вроде этого

Y_test = np_utils.to_categorical(testY - 1, 5)

После использования этого, на этапе прогнозирования, в выходных данных для набора тестов отсутствует 5-я целевая переменная.В прогнозируемых данных всего 4 целевые переменные. Я думаю, возможно, вышеупомянутая операция полностью избавила от одной ячейки из всех строк, и именно поэтому отсутствует 5-я целевая переменная.

Существует ли другой подход к этой проблеме?

 reviews_df.overall.value_counts()
  

Целевая переменная и их количество

 4.0    10688 

3.0     9510

5.0     5975

2.0     3531

1.0      632

Name: overall, dtype: int64
  

После предсказания.

 array([[   1,   31],
       [   2, 2015],
       [   3, 3455],
       [   4,  567]])
  

Комментарии:

1. сделайте Y_test = Y_test - 1 , чтобы придать ему форму (0,4), затем прогнозируйте. окончательный прогноз будет предсказывать 1

2. Без кода сказать особо нечего, классы переходят с индекса 0 на индекс num_classes — 1

3. @Pygirl Я изначально думал об этом, чтобы изменить метку с 0-4 вместо 1-5. Но это что-то вроде хакатона, где точность / F1 вычисляется на основе отправленного y_test . Так что здесь это не поможет.

4. На самом деле именно так вы это и делаете. Даже если вы используете кодировщик меток, вы будете делать обратное этому при отправке окончательного прогноза. Если вы преобразуете все метки в 0-4, то ваш прогноз также будет равен 0-4. При отправке окончательного прогноза вы увеличите их на 1.