Я работаю с SVM, и я пытаюсь обучить классификатор SVC для цветов, я использовалатерификация_report (из sklearn.metrics) для проверки моей модели, и ее производительность выглядит следующим образом:
Classfilierпроизводительность на наборе обучающих данных
precision recall f1-score support
Class0 0.99 0.98 0.98 3197
Class1 0.95 0.97 0.96 1315
микро-средняя 0,98 0,98 0,98 4512 макро-средняя 0,97 0,97 0,97 4512 средневзвешенная средняя 0,98 0,98 0,98 4512
производительность Classfilier на тестовых данных
precision recall f1-score support
Class0 0.97 0.98 0.97 1046
Class1 0.96 0.92 0.94 458
micro avg 0.96 0.96 0.96 1504 macro avg 0.96 0.95 0.96 1504 weighted avg 0.96 0.96 0.96 1504
отчет показывает, что высокий показатель точности 、 напоминает 、 f1-счет ,, но когда я использую классификатор в новомтестовый набор (фотография), этот классификатор не выполняет классификацию хорошо, даже новый тестовый набор включает в себя набор поездов, я не могу найти, почему это произошло ааа
color_average0 =
array([[107, 106, 106],
[105, 107, 107],
[107, 107, 106],
...,
[ 20, 20, 19],
[ 20, 20, 20],
[ 20, 20, 20]], dtype=uint8)
color_average1 =
array([[163, 164, 163],
[164, 163, 162],
[160, 163, 163],
...,
[ 17, 17, 15],
[ 18, 17, 17],
[ 17, 17, 17]], dtype=uint8)
train_data=np.vstack([color_average0,color_average1])
train_label=np.vstack((np.zeros((class_0.shape[0],1),dtype='uint8'
),np.ones((class_1.shape[0],1),dtype='uint8')))
def classifier_train(train_data, train_label):
classifier2 = SVC()
classifier2.fit(train_data, train_label)
return classifier2
img1 = cv2.imread('filepath')
for i in range(img1.shape[0]):
for j in range(img1.shape[1]):
point = img1[i,j].reshape(1,-1)
response = classifier2.predict(point)
if response != 1:
img1[i,j] = Black_color
else:
img1[i,j] = White_color
он показал так плохо,
не использовать классификатор
img1[img1 != 0].shape == (5172333,)
после классификатора
Img1[img1 != 0].shape == (1905,)
он может найти только около 0,037% всех пикселей