遥感影像双时相影像变化检测精度评价python实现

之前一直用的都是matlab版本的变化检测评价代码,因此这里简单实现并记录一下python版本的实现。本代码可以直接使用,如有问题欢迎各位讨论并指教。

# -*- coding: utf-8 -*-
"""

@author: ASUS
"""
# 这里0表示正类,1或255表示负类
from sklearn.metrics import confusion_matrix
from skimage import io
import numpy as np
chengetectedmap = io.imread('fz(SVM).bmp')
referencemap = io.imread('福州变化参考图.bmp')
# 将矩阵拉成一维向量
ytrue = np.array(referencemap).flatten().tolist()
ypredict = np.array(chengetectedmap).flatten().tolist()


c = confusion_matrix(ytrue, ypredict)
print(c)

TN = c[0][0]
FN = c[1][0]
FP = c[0][1]
TP = c[1][1]

# 精确率(查准率)precision:"正确被预测为正(TP)"占所有"实际被预测为正的(TP+FP)"的比例(混淆矩阵中除以所在的那一列之和)
# precision= TP/(TP+FP)
precision = TP/(TP+FP)
print(precision)

# 召回率(查全率) Recall:"正确被预测为正(TP)"占所有"应该被预测为正(TP+FN)"的比例(混淆矩阵中除以所在的那一行之和)
recall = TP/(TP+FN)
print(recall)
# 误检率(FPR):FPR = FP/(TP+FP)
FPR = FP/(TP+FP)
print(FPR)

# 漏检率(TPR):TPR = FN/(TP+FN)
TPR = FN/(TP+FN)
print(TPR)

# F-measure:F−measure = ((a^2+1)∗P∗R)/(a^2(P+R))
# F1 = (2*(1 - TPR)*(1 - FPR))/((1 - TPR) + (1 - FPR))
F1 = (2*(1 - TPR)*(1 - FPR))/((1 - TPR) + (1 - FPR))
print(F1)

 

###作者:福州大学数字中国研究院 杨进一###

你可能感兴趣的:(python)