我们的ML模型有一个混淆矩阵。
array([[508, 12],
[ 78, 36]])
我们还有classification_report
precision recall f1-score support
0 0.83 0.98 0.90 123
1 0.85 0.31 0.45 36
accuracy 0.83 159
macro avg 0.84 0.64 0.67 159
weighted avg 0.83 0.83 0.80 159
要了解此ML解决方案的功效,我们为传统构建的系统生成了一个混淆矩阵
array([[305, 62],
[ 108, 50]])
有没有办法从中生成classification_report
?标准功能而不是编码,以确保一致性。
答案 0 :(得分:1)
我建议您在https://towardsdatascience.com/beyond-accuracy-precision-and-recall-3da06bea9f6c阅读本文。从混淆矩阵中的值,您可以计算出真实的肯定,真实的否定,错误的肯定和错误的否定。之后,您可以计算使用它们的任何指标。
我找到了一个代码示例(source)
def evaluate(self, dataset):
predictions = self.predict(dataset[:,0])
confusion_matrix = sklearn_confusion_matrix(dataset[:,1], predictions, labels=self.__classes)
precisions = []
recalls = []
accuracies = []
for gender in self.__classes:
idx = self.__classes_indexes[gender]
precision = 1
recall = 1
if np.sum(confusion_matrix[idx,:]) > 0:
precision = confusion_matrix[idx][idx]/np.sum(confusion_matrix[idx,:])
if np.sum(confusion_matrix[:, idx]) > 0:
recall = confusion_matrix[idx][idx]/np.sum(confusion_matrix[:, idx])
precisions.append(precision)
recalls.append(recall)
precision = np.mean(precisions)
recall = np.mean(recalls)
f1 = (2*(precision*recall))/float(precision+recall)
accuracy = np.sum(confusion_matrix.diagonal())/float(np.sum(confusion_matrix))
return precision, recall, accuracy, f1
在代码中,您可以看到如何创建混淆矩阵以及如何得出分数。我知道您已经有了矩阵,所以也许您可以看一下第二部分,并尝试了解如何仅使用矩阵来计算分数。