SV C ядро ​​rbf показывает различную вероятность для тех же данных Python - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть набор данных, который содержит в общей сложности 98 пунктов. Эти предметы в основном представляют собой данные встраивания лица 3 разных людей. Я тренирую эти данные вместе с их метками назначения (basically the name of the person), используя SVC, и использую ядро ​​rbf. Ниже приведен код:

targets = data['names']
pixels = data['embeddings']

clf = SVC(kernel='rbf', C=100, gamma=0.001, probability=True)
clf = clf.fit(Xtrain_pca, targets)


test_image = cv2.imread(file)
"""
CODE TO PROCESS
TEST IMAGE AND
GET ITS FACE EMBEDDING
"""

pred = clf.predict_proba(test_image_embedding)

print(clf.classes_)
print(pred)

В приведенном выше коде я сначала получаю face embedding data в переменной pixel, а также получаю их имена в targets. Затем я использую SVC и тренирую классификатор. Позже часть кода читает тестовое изображение (which can belong to either our data set or it can be completely unknown). С помощью приведенного выше кода я заметил, что для одного и того же изображения достоверность сильно различается. Например, я запускал код 3 раза на одном и том же входном тестовом изображении, и ниже вывод:

1. ['personA' 'personB' 'personC']
   [[0.94455264 0.01351442 0.04193294]]

2. ['personA' 'personB' 'personC']
   [[0.92501533 0.01752258 0.05746209]]

3. ['personA' 'personB' 'personC']
   [[0.93949205 0.02315398 0.03735398]]

Как вы можете видеть выше, тестовое изображение, которое мы прошли, относится к personA, но доверие к первый раз был 0.94455264. Во второй раз, когда мы снова запустили код, мы получили 0.92501533, а в третий раз - 0.93949205. Хотя результаты близко совпадают, но почему показатель доверия меняется. Это должно быть исправлено для данного изображения. Может кто-нибудь, пожалуйста, пролить свет на это и, пожалуйста, объясните это. Спасибо

...