#demo:直观查看帕维亚大学数据集mat矩阵
import scipy.io as scio
label_path = './Dataset/pavia_uni_gt.mat'
data_label = scio.loadmat(label_path)
data_label1 = data_label[list(data_label.keys())[3]]
print('空间大小为:', data_label1.shape)
#空间大小为: (610, 340)
data_path = './Dataset/pavia_uni.mat'
data_set = scio.loadmat(data_path)
data_set1 = data_set[list(data_set.keys())[3]]
print('空间大小为:', data_set1.shape)
#空间大小为: (610, 340, 103)
# DEMO:计算OA AA(平均分类精度) K
a = [200, 2 , 20 , 1 , 9 , 000, 000, 1 ]
b = [6 , 50 , 10 , 2 , 20 , 000, 4 , 6 ]
c = [12 , 6 , 300, 5 , 5 , 000, 000, 11 ]
d = [1 , 1 , 3 , 50 , 9 , 000, 000, 18 ]
e = [4 , 2 , 6 , 2 , 300, 7 , 1 , 22 ]
f = [000, 1 , 2 , 1 , 30 , 80 , 2 , 9 ]
g = [1 , 5 , 3 , 2 , 10 , 10 , 24 , 4 ]
h = [1 , 3 , 15 , 5 , 30 , 5 , 2 , 300]
Confusion_Matrix = [
a, b, c, d, e, f, g, h
]
import copy
def OA(Confusion_Matrix):
CM = Confusion_Matrix
xia_list = []
for i in range(len(CM)):
xia_list.append(sum(CM[i]))
xia = sum(xia_list)
shang_list = []
for i in range(len(CM)):
shang_list.append(CM[i][i])
shang = sum(shang_list)
OA = shang / xia
return OA
def KP(Overall_Accuracy, Confusion_Matrix):
CM = Confusion_Matrix
p0 = Overall_Accuracy
pe_xia_list = []
for i in range(len(CM)):
pe_xia_list.append(sum(CM[i]))
pe_xia = sum(pe_xia_list) ** 2
CMT = list(map(list, zip(*CM))) # 转置
pe_shang_list = []
for i in range(len(CM)):
pe_shang_list.append(sum(CM[i]) * sum(CMT[i]))
pe_shang = sum(pe_shang_list)
pe = pe_shang / pe_xia
KP = (p0 - pe) / (1 - pe)
return KP
def AA(Confusion_Matrix):
CM = Confusion_Matrix
lei_list = []
for i in range(len(CM)):
lei_list.append(CM[i][i] / sum(CM[i]))
lei = sum(lei_list)
n = len(CM)
AA = lei/n
return AA