Как проверить, какой массив в машине опорных векторов принадлежит какой метке Python - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть следующий код:

recognizer = SVC(C=1.0, kernel="linear", probability=True)
recognizer.fit(data["embeddings"], labels)

, где метки:

labels = {ndarray: (24,)}
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1]

, а data["embeddings"] - это list из ndarrays. Этот список имеет длину 24

После запуска recognizer.fit(data["embeddings"], labels), если я напечатаю длину

print(len(recognizer.support_vectors_))

, я получил 13. Это мой первый вопрос, когда изначально длина из data["embeddings"] и labels было 24, тогда почему это стало 13.

Теперь я могу получить доступ к каждому ndarray, используя recognizer.support_vectors_[i], где i может быть от 0 на 12, тогда как в этом случае узнать, к какому лейблу ith ndarray принадлежит .?

Я новичок в SVC, поэтому кто-нибудь может мне помочь, пожалуйста, здесь. Спасибо

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Не все точки данных являются опорными векторами. Опорный вектор - это точка, лежащая вблизи гиперплоскости. Я бы посоветовал прочитать статьи, чтобы лучше понять алгоритмы, как здесь https://towardsdatascience.com/support-vector-machine-introduction-to-machine-learning-algorithms-934a444fca47

Вы можете попробовать support_, чтобы получить индексы, затем из индексов получите метку

0 голосов
/ 06 апреля 2020
Атрибут

support_vectors_ дает количество векторов поддержки, распознанных для задачи классификации после обучения с данными, и не имеет отношения к количеству выборок (меток или строк признаков). Чтобы понять, что такое векторы поддержки смотрите здесь https://towardsdatascience.com/support-vector-machine-introduction-to-machine-learning-algorithms-934a444fca47

...