Когда я получаю коэффициенты для моего мультиклассического SVM, я не могу найти способ получить класс, для которого предназначены веса. Они отсортированы в определенном порядке. Есть ли способ получить, какой класс идет с каким индексом в двумерном массиве коэффициентов?Атрибут коэффициента Sklearn SVM - как получить имя класса?
ответ
Вы можете получить порядок занятий с атрибутом classes_
. Я думаю, что они обычно в порядке возрастания, поскольку numpy.unique будет сортировать их, но насколько я знаю, это не документировано.
Если вы выполняете классификацию нескольких классов, scikit-learn использует схему one-vs-one. Это означает, что для каждой комбинации классов вы получаете один отдельный классификатор (или один набор весов). Если C
- количество классов, то существует C * (C-1)/2
комбинаций. К сожалению, похоже, что нет никакой информации о том, как упорядочиваются эти comibantions. Однако, от глядя на source code, кажется, что они упорядочены следующим образом:
0-1, 0-2, 0-3, ... 0-c,
1-2, 1-3, ... 1-c,
2-3, ... 2-c,
.
.
.
Рассмотрим следующий пример:
import numpy as np
from sklearn.svm import SVC
x = np.random.randn(40, 7) # 7 features, 40 samples
y = ['D', 'B', 'A', 'C'] * 10 # four classes
svc = SVC(kernel='linear').fit(x, y)
print(svc.classes_) # ['A', 'B', 'C', 'D']
print(svc.coef_.shape) # (6, 7)
Форма svc.coef_
показывает, что есть 6 комплектов весов. Они соответствуют следующим парам меток класса: AB, AC, AD, BC, BD, CD
Примечание:Этот ответ основан на наблюдении и проверке исходного кода, а не на фактической документации. Возьмите его с солью соли.
- 1. Sklearn SVM vs Matlab SVM
- 2. Sklearn - svm weighted features
- 3. Sklearn One Class SVM
- 4. sklearn svm non integer output
- 5. sklearn SVM выполняет ужасно плохо
- 6. Ошибка буфера sklearn SVM toolkit
- 7. sklearn GridSearchCV, SelectKBest и SVM
- 8. «Невозможно импортировать имя check_arrays» при импорте svm в sklearn
- 9. Как получить атрибут класса тела?
- 10. Значение Ошибка при запуске SVM в Sklearn
- 11. Непонимание понимания функции предсказания SVM sklearn
- 12. дает больше веса функции, используя sklearn svm
- 13. Python: sklearn svm, предоставляющий пользовательскую функцию потерь
- 14. sklearn, выводя результаты из классификатора SVM
- 15. Получение странных результатов от моделей Sklearn SVM
- 16. SKlearn SVM RBF с несбалансированными данными
- 17. ошибка с sklearn CalibratedClassifierCV и SVM
- 18. SVM sklearn verbose показывает только точки
- 19. дочерний атрибут класса другое имя
- 20. sklearn 0.17.1: ImportError: невозможно импортировать имя inplace_column_scale
- 21. Как получить атрибут класса элемента?
- 22. Как получить атрибут для класса
- 23. Элемент JAXB, показывающий имя SuperClass и имя класса как атрибут
- 24. Получить имя класса с помощью атрибутов класса
- 25. Ошибка при печати в одной категории svm sklearn?
- 26. Какие векторы поддержки, возвращаемые в многокласном SVM SKLearn
- 27. Как получить атрибут Sqlite Table из класса?
- 28. Идентификация классов модели sklearn
- 29. Как получить точность SVM?
- 30. Получить имя класса-атрибут или класс-функцию в виде строки
Насколько я знаю, коэффициенты ('coef_') - это просто веса, которые образуют разделительную гиперплоскость. Один вес в каждой функции, я не вижу, где здесь играют классы. Вы, возможно, ищете векторы поддержки? – kazemakase
@kazemakase hmmm, похоже, когда я смотрю документацию для параметра coef, которая действительно возвращает 2D-массив для весов функций для каждого класса. – rb612
Вы правы. Существуют разные веса для каждой комбинации классов в многоклассовом случае. Вы не упомянули, что делали мульти-класс, хотя :) – kazemakase