Декодирование мультиклассовых классификаций Keras

#keras #classification #multiclass-classification

#keras #классификация #мультиклассовая классификация

Вопрос:

Я готовлю входные данные для ввода в нейронную сеть Keras для многоклассовой задачи как:

 encoder = LabelEncoder()
encoder.fit(y)
encoded_Y = encoder.transform(y)

# convert integers to dummy variables (i.e. one hot encoded)
dummy_y = np_utils.to_categorical(encoded_Y)

X_train, X_test, y_train, y_test = train_test_split(X, dummy_y, test_size=0.2, random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.06, random_state=42)
 

После обучения модели я пытаюсь выполнить следующие строки, чтобы получить прогноз, отражающий исходные имена классов:

 y_pred = model.predict_classes(X_test)
y_pred = encoder.inverse_transform(y_pred)

y_test = np.argmax(y_test, axis = 1)
y_test = encoder.inverse_transform(y_test)
 

Обучающий график

Тем не менее, я получаю удивительно низкие уровни точности (0,36), в отличие от обучения и проверок, которые достигают 0,98. Это правильный способ преобразования классов обратно в исходные метки?

Я вычисляю точность как:

 # For training
history.history['acc']

# For testing
accuracy_score(y_test, y_pred)
 

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

1. Как именно вы вычисляете точность для этих прогнозов?

2. пожалуйста, проверьте редактирование

3. Что, если вы вычисляете точность в индексах классов (без обратного преобразования)?

4. он возвращает 0.31, то же самое, как если бы я выполнял преобразование.