我们有一个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?标准功能而不是编码,以确保一致性。
发布于 2019-12-19 04:56:26
我建议你在这里阅读这篇文章,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 在代码中,您可以看到如何创建混淆矩阵以及如何派生分数。我知道你已经有了矩阵,所以也许你可以看看第二部分,试着理解分数是如何只使用矩阵来计算的。
https://stackoverflow.com/questions/59399744
复制相似问题