|
发表于 2022-6-20 13:05:05
|
显示全部楼层
for i, key in enumerate(img_bag):
for j in range(100):
trainLabelY.append(i)
all_data.append(cv2.resize(cv2.imread(img_bag[key][j],0),(16,16)))
#[类别][0](图片,类别)
for img in all_data:
X=img.reshape(1,256)
X=[int(x) for item in X for x in item]
Y.append(X)
trainDataX=np.array(Y)
trainLabelY=np.array(trainLabelY)
for i, key in enumerate(img_bag):
for j in range(7):
id=random.randint(101,len(img_bag[key])-1)
testDataX.append(cv2.resize(cv2.imread(img_bag[key][id],0),(16,16)).reshape(1,256))
testLabelY.append(i)
# for i in range(5):
# id=random.randint(0,len(testDataX)-1)
# testDataX.pop(id)
# testLabelY.pop(id)
testLabelY=np.array(testLabelY)
testDataX=np.array(testDataX,dtype=object)
number_train = trainDataX.shape[0]
number_test = testDataX.shape[0]
print('训练集数量:{}\t测试集数量:{}'.format(number_train,number_test))
distances = np.zeros((number_test, number_train))
for i in range(number_test):# 用L2计算距离
for j in range(number_train):
distances[i][j]=np.linalg.norm(testDataX[i]-trainDataX[j])
pre_label_list=[]
for i in range(distances.shape[0]):
id=np.argmin(distances[i])
pre_label_list.append(id)
n=0
for i in range(len(pre_label_list)):
if testLabelY[i]==trainLabelY[pre_label_list[i]]:
n+=1
print(n/number_test) |
|