我在python库Keras上运行我的训练集30k用于神经网络(模型"顺序")。
当我拟合模型并计算测试集上的概率(大小= 13k)时,我只得到0或1。而我应该得到一些小数值,如0.62,0.42,0.31等。
我尝试使用class_weight并将其设置为' auto'或者平衡'但我无法解决这个问题。
输出不是整数类型,仅为浮点类型。
以下是代码
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%的违约案例,因此其不平衡的类别。
答案 0 :(得分:1)
听起来很糟糕,你可能会得到一个整数返回值,它只能是1或0,而不是浮点数返回。因此,您可以尝试查看代码中是否int
将其转换为整数,或者您可能需要将其转换为某个地方的float
。没有更多背景就无法分辨......
答案 1 :(得分:1)
也许我错了,但到目前为止我从未见过这个论点:
class_weight ='auto'
我会尝试改为
class_weight = {0: 1., 1: 50.}
确实,您的问题似乎来自不平衡的数据集。