keras, scikit-learn, python, матрица путаницы двоичной классификации (у меня может быть ошибка) - PullRequest
0 голосов
/ 02 февраля 2019

Вот код для просмотра в github с примером вывода, также видимым, насколько я вижу (работает для меня). Это блокнот jupyter на github.https://github.com/late347/cognitive-systems-health-applications/blob/master/NeuralNetworks_case1_v1.ipynb

Я создаю нейронную сеть для бинарной классификации с python и keras и scikit-learn

Моя нейронная сеть, казалось, довольно хорошо компилируется, обучается и проверяется.

Проблема в конце моего кода, где есть распечатки матрицы путаницы ... они не выглядят разумными результатами для матрицы путаницы Возможно, проблема где-то здесь

# Print total accuracy and confusion matrix
val_predicts = model.predict(df_norm)
y_pred = argmax(val_predicts, axis = 1)
cm = confusion_matrix(groundTruth, y_pred)
print(val_predicts)
print(y_pred)
print(cm)

Сграфик, и если вы выберете verbose = 1 на этапе проверки, вы увидите, что точность стремится к 80% при некотором переоснащении, видимом на графике.

Но в распечатках y-pred я имеювсе значения в виде нулей ...

Я не уверен, что является причиной этого ... как у-пред может быть все нули, если точность составляет около 80%.

Я вспомнилтакже использовать сигмоид на выходном слое, но у меня есть ноющее чувство, что вам все еще нужно округлить те результаты, которые вы получаете от сигмоида.(т.е. если ваши сигмовидные результаты выше или равны 0,5 => конвертировать в 1,0)

1 Ответ

0 голосов
/ 02 февраля 2019

y_pred = argmax(val_predicts, axis = 1) это приводит к тому, что ваш прогноз выводит все нули, поскольку у вас есть только один массив из одного элемента, и максимум, очевидно, равен элементу с нулевым индексом.Вместо этого вы должны сделать что-то вроде следующего

y_pred = [1 * (x[0]>=0.5) for x in val_predicts]
...