Python 需要使用Keras'的帮助;模型预测

Python 需要使用Keras'的帮助;模型预测,python,tensorflow,machine-learning,keras,predict,Python,Tensorflow,Machine Learning,Keras,Predict,我的目标是通过提供某个图形的2个垂直度和1个(如果有链接)或0(如果没有链接),使神经网络易于拟合 我适合我的模型,它得到约0.40损失,准确度约83%在拟合过程中。然后,我通过提供一批所有阳性样本和几批阴性样本(使用random.sample)来评估模型。我的模型对阳性样本的准确度分别为~0.35和~1.0,对阴性样本的准确度分别为~0.46和~0.68 我对神经网络的理解非常有限,但就我的理解而言,当没有链接时,当它输出0时,理论上总是正确的,但有时即使没有链接也可以输出1 现在来看我的实际

我的目标是通过提供某个图形的2个垂直度和1个(如果有链接)或0(如果没有链接),使神经网络易于拟合

我适合我的模型,它得到约0.40损失,准确度约83%在拟合过程中。然后,我通过提供一批所有阳性样本和几批阴性样本(使用random.sample)来评估模型。我的模型对阳性样本的准确度分别为~0.35和~1.0,对阴性样本的准确度分别为~0.46和~0.68

我对神经网络的理解非常有限,但就我的理解而言,当没有链接时,当它输出0时,理论上总是正确的,但有时即使没有链接也可以输出1

现在来看我的实际问题:我试图通过model.predict用我的神经网络“重建”原始图形。问题是我不理解预测输出的含义。起初,我假设值高于0.5意味着1,否则为0。但如果是这样的话,模型甚至无法重建原始模型

我知道它并不完美,但对于随机链接候选者,它只返回大于0.5的值


有人能给我解释一下model.predict是如何准确工作的,以及如何正确使用它来重建我的图形吗?

您训练的模型不是直接优化的,而是图形重建。在不丧失一般性的情况下,对于
N
-节点图,您需要预测
N选择2个链接。可以合理地假设这些链接中的大多数的真实值为0

当研究0级和1级模型的准确性时,很明显,假设训练数据是平衡的,那么你的模型倾向于预测1级。因此,重建的图形包含许多虚警链接。这就是重建图性能差的确切原因

如果有可能对模型进行再训练,我建议你这样做,并使用更多的负样本


如果不是,则需要考虑应用一些后处理。例如,使用原始预测的链接概率形成节点到节点的链接矩阵,并应用最小生成树之类的方法进一步确定适当的链接,而不是寻找阈值来确定哪两个节点具有链接

非常感谢你的回答!我不知道我是否正确理解了这一点,但你的意思是我应该重建我的模型,使其具有两个输出-isLinked和isNotLinked,因此我的预测输出在这两个方面都是预测的,我使用较高的一个进行重建?不。我不是说你需要重建模型以具有两个输出节点。我的意思是你的课程<代码>链接和<代码>没有链接< /代码>在大多数图表中是自然不平衡的,所以你可以考虑在你的训练数据中反映这个事实。我做到了。我的意思是,在我的测试图中,我有40个垂直,链接的总数是50。在完整的图表中,将有40*39=1560个链接。当我为每个vertice随机选取30个负样本,为正样本选取一次所有链接时,网络完全偏向负值。然后我试图平衡这一点,并用(40*30)/50=24倍的正常阳性样本数训练我的模型。在这之后,这两个方面的评估是相当平衡的,但我的重建仍然提供了绝对随机的输出。在我找到合适的比例之前,是否只是反复试验?