keras:predict_proba(),predict()和predict_classes()问题

kua*_*oka 6 probability prediction deep-learning keras tensorflow

在我的keras模型的预测阶段,当我打印出预测值和类时,我在predict_proba()和predict()中给出了不同的概率.此外,predict_classes()的输出与概率不对应.以下代码示例和打印输出示例:

码:

p = pd.read_csv("test.csv", header=None)
p = np.reshape(p.values, (50, seq_length))
for i in range(len(p)):
    p[i] = scaler.fit_transform(p[i])

p = np.reshape(p, (50, seq_length, 1))
model.predict(p, batch_size=50)
model.predict_classes(p, batch_size=50)
model.predict_on_batch(p)
model.predict_proba(p, batch_size=50)
for i in zip(model.predict_proba(p, batch_size=50), model.predict_classes(p, batch_size=50), model.predict(p, batch_size=50)):
    print("model.predict_proba", "--", i[0], "model.predict","--", i[2], "predict_clases", "--", i[1])
Run Code Online (Sandbox Code Playgroud)

输出样本与不同predict_proba()predict()

model.predict_proba -- [ 0.18768159  0.81231844] model.predict -- [ 0.18982948  0.81017047] predict_classes -- 1
model.predict_proba -- [ 0.55918539  0.4408147 ] model.predict -- [ 0.78916383  0.2108362 ] predict_classes -- 1
Run Code Online (Sandbox Code Playgroud)

最后一个也是最高概率对应于index = 0但预测类为1的情况

另一个例子.索引= 0的概率最高,但预测类为1

model.predict_proba -- [ 0.55918539  0.4408147 ] model.predict -- [ 0.78916383  0.2108362 ] predict_classes -- 1  
Run Code Online (Sandbox Code Playgroud)

但大多数情况如下所示,其中predict_proba()和predict()显示相同的值,预测类正确对应于概率最高的索引

model.predict_proba -- [ 0.39802018  0.60197979] model.predict -- [ 0.39802018  0.60197979] predict_classes -- 1 
Run Code Online (Sandbox Code Playgroud)

也许我不明白怎么读它?谢谢