当我预测泰坦尼克号乘客是否存活时,模型输出的结果是一个概率。我如何将其判别为0或1?
这是模型构建的代码
inputs = keras.layers.Input(shape=(8,))dropout = keras.layers.Dropout(0.2)(inputs)hidden1 = keras.layers.Dense(40, activation=tf.nn.relu)(dropout)hidden2 = keras.layers.Dense(30, activation=tf.nn.relu)(hidden1)hidden3 = keras.layers.Dense(20, activation=tf.nn.relu)(hidden2)out = keras.layers.Dense(1, activation=tf.nn.sigmoid)(hidden3)mdl = keras.models.Model(inputs=inputs, outputs=out)
当我使用训练好的模型进行预测时,得到的是概率而不是标签(0或1)
res = model.predict(test_data)
问题:
我如何将概率映射到标签(0或1)?
回答:
以下是将概率映射到离散类别标签的两种方法:
方法1:当不需要设置阈值时
predicted_class = round(res) # 将概率值四舍五入到0或1
方法2:当需要为分类设置阈值时
predicted_class = 1 if res>0.5 else 0 # 这里阈值为0.5,可以根据观察到的精确度和召回率进行微调