在0和1之间获得深度学习输出

2024-10-01 00:30:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我是新来的深造者。我的培训数据包含3121条记录和137条输入变量。这个从最初的2K变量做特征工程后得到137个变量。你知道吗

所以我对0&1&;之间的变量进行了标准化,然后使用以下模型

model.add(Dropout(0.2, input_shape=(136,)))

model.add(keras.layers.Dense(15,kernel_initializer='normal',activation='sigmoid',kernel_constraint=maxnorm(3)))
#model.add(Dense(60, kernel_initializer='normal', activation='relu', kernel_constraint=maxnorm(3)))

model.add(keras.layers.Dense(30,kernel_initializer='normal',activation='sigmoid',kernel_constraint=maxnorm(3)))
model.add(keras.layers.Dense(15,kernel_initializer='normal',activation='sigmoid',kernel_constraint=maxnorm(3)))
model.add(keras.layers.Dense(1,kernel_initializer='normal',activation='linear',kernel_constraint=maxnorm(3)))
model.compile(loss='mse',optimizer='adam')
model.fit(x,y,epochs=100,shuffle=True,verbose=2)

因为我的目标是获得最小的MSE,所以我使用loss='MSE'。我的测试数据中的输出变量包含0&1之间的值,例如0.35。但是在拟合模型之后,我得到的预测输出是0&1。你能建议我应该怎样得到0&1之间的预测输出吗?你知道吗

在我的隐藏层中还尝试了“relu”激活函数,在输出层中尝试了sigmoid激活函数。但在我的输出中仍然只有0&1

下面是我用来获得预测输出的代码

y_pred=model.predict_classes(x_test)
pred=pd.DataFrame(y_pred,columns=['predicted'])
pred.predicted.unique()

Tags: 模型addmodellayersactivationkernelkerasdense
1条回答
网友
1楼 · 发布于 2024-10-01 00:30:33

model.predict_proba(x_test)代替model.predict_classes(x_test)

用法:

y_pred=model.predict_proba(x_test)

解读你的预测:

您正在处理二进制分类问题(是(1)或否(0))。假设每个输入实例都有K个特征。你知道吗

那么

y_pred[0] = [Input feature 0,Input feature 1,...Input feature K-1] y_pred[1] = [probability of each instance belonging to class 1]

因此

1- y_pred[1]返回类0的概率

相关问题 更多 >