我正在尝试理解如何为多标签分类问题创建混淆矩阵和ROC曲线。我正在构建一个神经网络。 这是我的类别:
mlb = MultiLabelBinarizer()
ohe = mlb.fit_transform(as_list)
# loop over each of the possible class labels and show them
for (i, label) in enumerate(mlb.classes_):
print("{}. {}".format(i + 1, label))
[INFO] class labels:
1. class1
2. class2
3. class3
4. class4
5. class5
6. class6
我的标签已经被转换:
ohe
array([[0, 1, 0, 0, 1, 1],
[0, 1, 1, 1, 1, 0],
[1, 1, 1, 0, 1, 0],
[0, 1, 1, 1, 0, 1],...]]
训练数据:
array([[[[ 1.93965047e+04, 8.49532852e-01],
[ 1.93965047e+04, 8.49463479e-01],
[ 1.93965047e+04, 8.49474722e-01],
...,
模型:
model.compile(loss="binary_crossentropy", optimizer=opt,metrics=["accuracy"])
H = model.fit(trainX, trainY, batch_size=BS,
validation_data=(testX, testY),
epochs=EPOCHS, verbose=1)
我能获得百分比,但在如何计算混淆矩阵或ROC曲线,或获取分类报告方面有点困惑... 以下是百分比:
proba = model.predict(testX)
idxs = np.argsort(proba)[::-1][:2]
for i in proba:
print ('\n')
for (label, p) in zip(mlb.classes_, i):
print("{}: {:.2f}%".format(label, p * 100))
class1: 69.41%
class2: 76.41%
class3: 58.02%
class4: 63.97%
class5: 48.91%
class6: 58.28%
class1: 69.37%
class2: 76.42%
class3: 58.01%
class4: 63.92%
class5: 48.88%
class6: 58.26%
如果有人对如何做或者有例子的话,我会非常感激!预先谢谢!