В соответствии с SVC-документацией scikit learn по многоклассовой классификации , могут быть расхождения между выводом predict
и argmax
из predict_proba
(выделено мной):
Метод решения_функции в SVC и NuSVC дает оценки по классам для каждой выборки (или одну оценку для выборки в двоичном случае). Когда для параметра параметра вероятности конструктора установлено значение True, оценки вероятности членства в классе (из методов Forex_Proba и Foregnate_log_proba) включаются. В двоичном случае вероятности калибруются с использованием шкалы Платта: логистическая регрессия по баллам SVM, подгонка путем дополнительной перекрестной проверки данных обучения. В случае мультикласса это расширяется согласно Wu et al. (2004).
Само собой разумеется, перекрестная проверка, используемая в масштабировании Платта, является дорогостоящей операцией для больших наборов данных. Кроме того, оценки вероятности могут быть несовместимы с оценками, в том смысле, что «argmax» оценок не может быть argmax вероятностей . (Например, в двоичной классификации образец может быть помечен предикатом как принадлежащий к классу, который имеет вероятность <1/2 согласно предикату.) Известно, что метод Платта также имеет теоретические проблемы. Если требуются доверительные оценки, но они не обязательно должны быть вероятностями, то рекомендуется установить вероятность = Ложь и использовать решение_функцию, а не предикат_проба. </p>
Невозможно заставить их совпадать, используя SVC. Вы можете попробовать другую модель, если вам нужны вероятности. Если вам не нужны вероятности, как указано в документации, вы можете использовать decision_function
(подробнее см. здесь )