这是在github中查看的代码,示例输出也在我所能看到的范围内可见(对我有用)这是github上的jupyter笔记本。https://github.com/late347/cognitive-systems-health-applications/blob/master/NeuralNetworks_case1_v1.ipynb
我正在用python和keras制作一个用于二进制分类的神经网络,scikit学习
我的神经网络似乎能很好地编译、训练和验证。
问题是在我的代码末尾,那里有混乱矩阵打印输出。。。对于混淆矩阵,这些结果看起来不合理问题可能就在附近
# 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%,y-pred怎么可能全为零。
我记得在输出层上也使用sigmoid,但我有一种恼人的感觉,你仍然需要对从sigmoid得到的结果进行四舍五入。(即,如果您的S形结果高于或等于0.5=>转换为1.0)
y_pred = argmax(val_predicts, axis = 1)
这会导致您的预测输出全零,因为您只有一个单元素数组,并且最大值显然是第零个索引处的项。相反,你应该做如下
y_pred = [1 * (x[0]>=0.5) for x in val_predicts]