def evaluate(self,metric='cosine'):
#sample-feature
X=self.read_imagelist(filelist_sample)
sample_num=np.shape(X)[0]
out = self.forward_all(data=X)
feature1=np.float64(out['deepid'])
feature1=np.reshape(feature1,(sample_num,feature_size))
#np.savetxt('feature1.txt', feature1, delimiter=',')
class_index = 0
image_index = 0
total_count = 0.0
accept_sum = 0
actual = []
predict = []
for filename in filenames:
#query-feature
X=self.read_imagelist(filelist_path + filename + extension)
test_num=np.shape(X)[0]
out = self.forward_all(data=X)
feature2=np.float64(out['deepid'])
feature2=np.reshape(feature2,(test_num,feature_size))
#np.savetxt('feature2.txt', feature2, delimiter=',')
#mt=pw.pairwise_distances(feature2, feature1, metric=metric)
mt=pw.cosine_similarity(feature2, feature1)
false=0
for i in range(test_num):
actual.append(class_index)
for j in range(sample_num):
if np.max(mt[i]) == mt[i][j]:
confusion_array[j] += 1
predict.append(j)
image_index += 1
total_count += test_num
accept_sum += confusion_array[class_index]
class_index += 1
print 'total:%d' % (round(total_count))
print 'accept:%d' % (accept_sum)
print 'reject:%d' % (round(total_count) - accept_sum)
print 'accuray:%.4f' % (accept_sum / total_count)
#conf_mat = confusion_matrix(actual,predict)
#print(conf_mat)
actual = np.array(actual)
predict = np.array(predict)
y_actual = pd.Series(actual, name='Actual')
y_predict = pd.Series(predict, name='Predicted')
df_confusion = pd.crosstab(y_actual,y_predict, rownames=['Actual'], colnames=['Predicted'], margins=True)
print(df_confusion)
plot_confusion_matrix(df_confusion)
return (accept_sum / total_count)
#process a text file
评论列表
文章目录