来自概率的混淆矩阵
Confusion matrix from probabilities
我有以下 scikit-learn 机器学习管道:
cv = StratifiedKFold(n_splits=6)
classifier = svm.SVC(kernel='linear', probability=True,
random_state=random_state)
tprs = []
aucs = []
mean_fpr = np.linspace(0, 1, 100)
i = 0
for train, test in cv.split(X, y):
probas_ = classifier.fit(X[train], y[train]).predict_proba(X[test])
# Compute ROC curve and area the curve
fpr, tpr, thresholds = roc_curve(y[test], probas_[:, 1])
tprs.append(interp(mean_fpr, fpr, tpr))
tprs[-1][0] = 0.0
roc_auc = auc(fpr, tpr)
aucs.append(roc_auc)
i += 1
现在我还想计算(并绘制)混淆矩阵。如何使用上面的代码完成此操作?我只得到概率(我需要计算 AUC)。我有 4 类 (1...4).
您可以在此处使用此示例来绘制混淆矩阵:
但是为此,您需要离散的 class 值(不是概率)。这可以很容易地从你的 probas_
变量中导出:
y_pred = np.argmax(probas_, axis=1)
现在你可以在混淆矩阵
中使用这个y_pred
我有以下 scikit-learn 机器学习管道:
cv = StratifiedKFold(n_splits=6)
classifier = svm.SVC(kernel='linear', probability=True,
random_state=random_state)
tprs = []
aucs = []
mean_fpr = np.linspace(0, 1, 100)
i = 0
for train, test in cv.split(X, y):
probas_ = classifier.fit(X[train], y[train]).predict_proba(X[test])
# Compute ROC curve and area the curve
fpr, tpr, thresholds = roc_curve(y[test], probas_[:, 1])
tprs.append(interp(mean_fpr, fpr, tpr))
tprs[-1][0] = 0.0
roc_auc = auc(fpr, tpr)
aucs.append(roc_auc)
i += 1
现在我还想计算(并绘制)混淆矩阵。如何使用上面的代码完成此操作?我只得到概率(我需要计算 AUC)。我有 4 类 (1...4).
您可以在此处使用此示例来绘制混淆矩阵:
但是为此,您需要离散的 class 值(不是概率)。这可以很容易地从你的 probas_
变量中导出:
y_pred = np.argmax(probas_, axis=1)
现在你可以在混淆矩阵
中使用这个y_pred