keras - 1 和 0 的二进制值的预测概率(数组中的每个值都是互斥的)
问题描述
我已经生成了一个模型预测,但 (y_pred) 值显示为概率而不是 0 和 1。
from sklearn.metrics import confusion_matrix, precision_score
from sklearn.model_selection import train_test_split
from keras.layers import Dense,Dropout
from keras.models import Sequential
from keras.regularizers import l2
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
data = pd.read_csv('train.csv', header=None)
X = data.iloc[:,0:294]
y = data.iloc[:,294:300]
X_test = pd.read_csv('test.csv', header=None)
# define a sequential Model
model = Sequential()
# Hidden Layer-1
model.add(Dense(100, activation='relu',input_dim=294, kernel_regularizer=l2(0.01)))
model.add(Dropout(0.3, noise_shape=None, seed=None))
# Hidden Layer-2
model.add(Dense(100, activation = 'relu', kernel_regularizer=l2(0.01)))
model.add(Dropout(0.3, noise_shape=None, seed=None))
# Output layer
model.add(Dense(6, activation='sigmoid'))
# Compile model
model.compile(optimizer = 'adam', loss='binary_crossentropy', metrics=['accuracy'])
model_output = model.fit(X, y, epochs=20, batch_size=20, verbose=1)
y_pred = model.predict(X_test)
#########
y_pred1
array([[0.1668182 , 0.00139472, 0.0607101 , 0.83703804, 0.20101124,
0.01134452],
[0.5119093 , 0.00456575, 0.0413985 , 0.18643114, 0.24617025,
0.14039314],
[0.2648082 , 0.00091198, 0.03806886, 0.7853936 , 0.19942024,
0.01565605],
...
Keras 中是否有自动输出 0 和 1 的方法,还是我应该手动使用 0.5 阈值将每个概率输出转换为 0 和 1?
用于产生预测的测试数据实际上被标记为值 <0,0,1,0,1,0>(作为示例)。
每个数组值都是互斥/独立的。
解决方案
推荐阅读
- json - 无法从 Elixir/phoenix 中的 Ecto DB 返回 Repo.All
- chicken-scheme - 如何从鸡计划中调用 C 回调
- python - 如何从 Python 中的字节中取回列表?
- python - 如何在我的代码中正确使用替换功能?
- python - 无法在 macOS 上的 ipython3 中创建多行语句块
- node.js - 通过(官方 Shipify API)在 Shopify 中跟踪超卖商品
- java - 在 Java 中创建所有 NON DISTINCT 值子集的多集
- dart - 如何向用户询问回调函数
- azure - 如何有条件地在 ARM 模板中包含dependOn
- javascript - 你如何访问 react-id-swiper 活动幻灯片 ID?