Python 使用混淆矩阵的分类报告
我们有我的ML模型的混淆矩阵Python 使用混淆矩阵的分类报告,python,scikit-learn,data-science,Python,Scikit Learn,Data Science,我们有我的ML模型的混淆矩阵 array([[508, 12], [ 78, 36]]) 我们还有分类报告 precision recall f1-score support 0 0.83 0.98 0.90 123 1 0.85 0.31 0.45 36 accuracy
array([[508, 12],
[ 78, 36]])
我们还有分类报告
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]])
有没有办法从中生成
分类报告
?标准功能,而不是编码,以确保一致性。我建议您阅读本文。根据混淆矩阵中的值,可以计算真正、真负、假正和假负。之后,您可以计算使用它们的任何度量
我找到了一个代码示例()
在代码中,您可以看到如何创建混淆矩阵以及如何导出分数。我知道你已经有了这个矩阵,所以也许你可以看看第二部分,试着理解如何只用这个矩阵来计算分数
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