我找到了定义,和as 的链接:AccuracyPrecisionRecallF1 score
准确度:使用正确标签预测的文本百分比。
精度:分类器在它为给定标签预测的示例总数中正确获得的示例百分比。
召回:分类器为给定标签预测的示例在它应该为该给定标签预测的示例总数中的百分比。
F1 Score:准确率和召回率的调和平均值。
按照我的这个问题,我的MultinomialNB分类器计算predict_proba了测试集(有 14 个样本)的矩阵,如下所示:
0.192995 0.0996929 0.173688 0.136715 0.126616 0.133012 0.137282
0.174185 0.109345 0.169467 0.144389 0.115021 0.132762 0.154831
0.14172 0.190075 0.125429 0.155343 0.122939 0.149733 0.114763
0.130958 0.2304 0.108793 0.174371 0.115698 0.122529 0.117251
0.139486 0.0938475 0.236573 0.133689 0.118372 0.165151 0.112881
0.135901 0.0845106 0.262501 0.127767 0.119785 0.166609 0.102926
0.136622 0.13782 0.119651 0.320522 0.0854596 0.0996346 0.100292
0.139607 0.181654 0.112189 0.259983 0.0920986 0.106649 0.107819
0.151441 0.0929748 0.155358 0.130407 0.208591 0.151803 0.109425
0.132648 0.122881 0.130545 0.126466 0.196319 0.142594 0.148548
0.135545 0.101456 0.177762 0.118609 0.120773 0.253616 0.0922385
0.132612 0.112645 0.111808 0.102153 0.113548 0.327516 0.0997178
0.111618 0.0859541 0.106807 0.116613 0.085918 0.0873931 0.405696
0.107745 0.0936872 0.0877116 0.122336 0.0902212 0.0909265 0.407373
1.我上一个问题的回答者说,虽然predict_proba矩阵元素都小于0.5,但是在文本标注上可能有用。但是根据上述定义,我得出结论,预测的和为零,因为所有预测值都小于 0.5。我对么?AccuracyPrecision
2.我不确定Recall和F1分数以及如何计算它们。
3.如何解释矩阵和模型的有用性?
编辑1:
使用这个答案,我将上面形状为 (14,7) 的矩阵(predict_proba在代码中命名为pred_prob )更改为形状为 (7,1) 的矩阵(命名为y_pred),然后使用 one_hot_encoder 函数对其进行转换到混淆矩阵(名为y_pred_one_hot)如下:
y_pred = np.argmax(pred_prob, axis=1)
def one_hot_encode(actual, n_classes):
if len(actual.shape) == 1:
actual2 = np.zeros((actual.shape[0], n_classes))
for i, val in enumerate(actual):
actual2[i, val] = 1
actual = actual2
return actual
y_pred_one_hot = one_hot_encode(y_pred, n_classes=7)
现在 y_pred_one_hot 是:
1 0 0 0 0 0 0
1 0 0 0 0 0 0
0 1 0 0 0 0 0
0 1 0 0 0 0 0
0 0 1 0 0 0 0
0 0 1 0 0 0 0
0 0 0 1 0 0 0
0 0 0 1 0 0 0
0 0 0 0 1 0 0
0 0 0 0 1 0 0
0 0 0 0 0 1 0
0 0 0 0 0 1 0
0 0 0 0 0 0 1
0 0 0 0 0 0 1
现在是这个y_pred_one_hot矩阵,混淆矩阵吗?