- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个代码可以打印多类分类问题的混淆矩阵。
import itertools
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm, datasets
from sklearn.model_selection import train_test_split
from sklearn.metrics import confusion_matrix
# import some data to play with
iris = datasets.load_iris()
X = iris.data
y = iris.target
class_names = iris.target_names
# Split the data into a training set and a test set
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)
# Run classifier, using a model that is too regularized (C too low) to see
# the impact on the results
classifier = svm.SVC(kernel='linear', C=0.01)
y_pred = classifier.fit(X_train, y_train).predict(X_test)
def plot_confusion_matrix(cm, classes,
normalize=False,
title='Confusion matrix',
cmap=plt.cm.Blues):
"""
This function prints and plots the confusion matrix.
Normalization can be applied by setting `normalize=True`.
"""
if normalize:
cm = cm.astype('float') / cm.sum(axis=1)[:, np.newaxis]
print("Normalized confusion matrix")
else:
print('Confusion matrix, without normalization')
print(cm)
plt.imshow(cm, interpolation='nearest', cmap=cmap)
plt.title(title)
plt.colorbar()
tick_marks = np.arange(len(classes))
plt.xticks(tick_marks, classes, rotation=45)
plt.yticks(tick_marks, classes)
fmt = '.2f' if normalize else 'd'
thresh = cm.max() / 2.
for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):
plt.text(j, i, format(cm[i, j], fmt),
horizontalalignment="center",
color="white" if cm[i, j] > thresh else "black")
plt.tight_layout()
plt.ylabel('True label')
plt.xlabel('Predicted label')
# Compute confusion matrix
cnf_matrix = confusion_matrix(y_test, y_pred)
np.set_printoptions(precision=2)
# Plot non-normalized confusion matrix
plt.figure()
plot_confusion_matrix(cnf_matrix, classes=class_names,
title='Confusion matrix, without normalization')
# Plot normalized confusion matrix
plt.figure()
plot_confusion_matrix(cnf_matrix, classes=class_names, normalize=True,
title='Normalized confusion matrix')
plt.show()
我想为每个类别打印其他术语,包括假阳性、真阳性、假阴性、真阴性、假阳性率、假阴性率。
最佳答案
numpy
,您可以一次对所有类执行此操作:import numpy as np
print(cnf_matrix)
array([[13, 0, 0],
[ 0, 10, 6],
[ 0, 0, 9]])
FP = cnf_matrix.sum(axis=0) - np.diag(cnf_matrix)
FN = cnf_matrix.sum(axis=1) - np.diag(cnf_matrix)
TP = np.diag(cnf_matrix)
TN = cnf_matrix.sum() - (FP + FN + TP)
FP = FP.astype(float)
FN = FN.astype(float)
TP = TP.astype(float)
TN = TN.astype(float)
# Sensitivity, hit rate, recall, or true positive rate
TPR = TP/(TP+FN)
# Specificity or true negative rate
TNR = TN/(TN+FP)
# Precision or positive predictive value
PPV = TP/(TP+FP)
# Negative predictive value
NPV = TN/(TN+FN)
# Fall out or false positive rate
FPR = FP/(FP+TN)
# False negative rate
FNR = FN/(TP+FN)
# False discovery rate
FDR = FP/(TP+FP)
# Overall accuracy
ACC = (TP+TN)/(TP+FP+FN+TN)
代码背后的想法:这些指标以图形方式表示,用于下图中有很多类的一般情况。
关于python - 如何获取多类别的所有混淆矩阵术语(TPR、FPR、TNR、FNR)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45053238/
我想将经过审核的强化 .fpr 文件与新扫描的 .fpr 文件合并,以便所有审核和评论都反射(reflect)在新文件中。如何使用命令行合并文件?提前致谢。 最佳答案 fprutility -merg
这个问题在这里已经有了答案: How to get precision, recall and f-measure from confusion matrix in Python [duplicat
作为自动化运行安全代码分析过程的一部分,我有一个 Jenkins 作业,它使用 sourceanalyzer 命令行工具生成一个 .fpr 结果文件。目前,我正在 Audit Workbench 应用
我正在尝试使用 R 中的 ROCR 包绘制 ROC 曲线,但遇到以下错误: Error in performance(pred, "tpr", "fpr") : Assertion on 'pred'
我希望对“roc_curve”(sklearn) 输出重新采样。 当我在 Ipython 中绘制 fpr,tpr 时很好,但有时我想导出它(主要是为客户端),但很难理解,因为它不是线性的。 例如 fp
当我们使用 AdaBoost 进行目标检测时,我们需要为每个阶段(AdaBoost 的迭代)设置 TPR 和 FPR。 我们需要高 TPR 和低 FPR。 据我了解,我们有: 总 TPR = (sta
我有一个代码可以打印多类分类问题的混淆矩阵。 import itertools import numpy as np import matplotlib.pyplot as plt from skle
我想从 Fortify Scan 的 SSC 中心下载 FPR 文件。有没有一种方法可以让我下载 FPR 文件,就像将 FPR 文件上传到 SSC 一样。 最佳答案 通过命令行,您只能下载项目版本已上
在数据集不平衡的情况下如何计算平均TPR、TNR、FPR、FNR? 示例 FPR:[3.54224720e-04 0.00000000e+00 1.59383505e-05 0.00000000e+0
初始化列表列表: data = [[1.0, 0.635165,0.0], [1.0, 0.766586,1.0], [1.0, 0.724564,1.0], [1.0, 0.7665
我试图计算真阳性率和假阳性率,然后手动绘制 roc 曲线,因为我想检查从 sklearn.metrics roc_curve 函数获得的 roc 曲线。但是我得到的 fpr(在 x 轴上)与 tpr(
PrimeFaces 有条件地在 h:head 中呈现以下内容: 当 PrimeFaces p:socket 组件被添加到 JSF/xhtml 页面时。我的一些页面刷新导致此 push.js 文件“
您好,我正在尝试使用 maven 从 fpr 文件生成 PDF 报告。谁能告诉我是否有可用的插件? 以下是我想要实现但来自 Maven 的输出。命令提示符中的命令:“ReportGenerator -
我正在尝试理解并绘制不同类型分类器的 TPR/FPR。我在 R 中使用 kNN、NaiveBayes 和决策树。使用 kNN,我执行以下操作: clnum <- as.vector(diabetes.
我正在尝试使用 plotly.js 以及在 R 中获得的值来制作 ROC 曲线。 在 plotly 中,我必须填写值(x 轴、y 轴)才能绘制图表。 但是,当我使用逻辑回归函数 glm 或 multi
我是一名优秀的程序员,十分优秀!