python - 在神经网络 Keras 序列模型中获取 0 或 1 作为概率值

标签 python neural-network keras sequential

我正在 python 库 Keras 上运行 30k 的神经网络训练集(模型“顺序”)。

当我拟合模型并计算测试集(大小 = 13k)的概率时,我只能得到 0 或 1。而我应该得到一些小数值,如 0.62、0.42、0.31 等。

我尝试使用 class_weight 并将其设置为“自动”或“平衡”,但无法解决此问题。

输出不是整数类型,只是浮点类型。

下面是代码

from keras.models import Sequential
from keras.layers import Dense
import numpy as np
seed = 8 
np.random.seed(seed)

model = Sequential()
model.add(Dense(9, input_dim=8, init='uniform', activation='relu'))
model.add(Dense(5, init='uniform', activation='relu'))
model.add(Dense(1, init='uniform', activation='sigmoid'))

from keras.optimizers import SGD
model.compile(loss='binary_crossentropy', optimizer=SGD(lr=0.01, momentum=0.9, nesterov=True), metrics=['accuracy'])

trainx = X_train.as_matrix()
trainy = y_train.as_matrix()

import time as time
start = time.time()
model.fit(trainx, trainy, nb_epoch=10, batch_size=10, verbose = 2,    class_weight ='auto')
print (time.time() - start)

X_test = X_test.as_matrix()
y_test = y_test.as_matrix()

proba = model.predict_proba(X_test, batch_size=10)

并且proba的值都是0。 数据中只有 2% 的违约案例,因此属于不平衡类别。

最佳答案

听起来很像您可能会得到一个整数返回值,它只能是 1 或 0,而不是浮点返回值。因此,您可以尝试查看代码中是否存在 int ,将其转换为整数,或者您可能需要在某处将其转换为 float 。没有更多背景就无法判断...

关于python - 在神经网络 Keras 序列模型中获取 0 或 1 作为概率值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41699037/

相关文章:

tensorflow - Keras 重置层数

keras - 从 flow_from_directory 提供数据时如何调整超参数

Python:如何在不同时间训练同一模型?

python - 如何在 Keras 中使用 Hausdorff 度量?

python - Killer-web-development.com 的 selenium 和 web2py 不起作用

python - 有没有一种单行的方式来表达这个?

Python:操作字典和 JSON 时出错(字符串索引必须是整数,而不是 unicode)

python - 包模块应该如何相互导入?

Matlab 神经网络模拟直至隐藏层

opencv - 如何在Opencv Mat对象的每一行中找到max的索引