#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), затем прогнозируйте. окончательный прогноз будет предсказывать 12. Без кода сказать особо нечего, классы переходят с индекса 0 на индекс num_classes — 1
3. @Pygirl Я изначально думал об этом, чтобы изменить метку с 0-4 вместо 1-5. Но это что-то вроде хакатона, где точность / F1 вычисляется на основе отправленного y_test . Так что здесь это не поможет.
4. На самом деле именно так вы это и делаете. Даже если вы используете кодировщик меток, вы будете делать обратное этому при отправке окончательного прогноза. Если вы преобразуете все метки в 0-4, то ваш прогноз также будет равен 0-4. При отправке окончательного прогноза вы увеличите их на 1.