Утверждение «метрики классификации не могут обрабатывать сочетание целей с несколькими индикаторами и несколькими классами» означает, что некоторые метрики оценки, обычно используемые в задачах классификации, не подходят при одновременной работе с комбинацией целей с несколькими индикаторами и несколькими классами. В таких случаях необходимо использовать специальные методы для правильной обработки оценки. Вот несколько методов с примерами кода, которые можно использовать в этом сценарии:
-
Подход «один против остальных» (OvR).
Подход OvR предполагает обучение нескольких двоичных классификаторов, где каждый классификатор отвечает за отличие одного класса от остальных. Этот метод можно использовать для целей с несколькими индикаторами и несколькими классами.from sklearn.multiclass import OneVsRestClassifier from sklearn.svm import SVC # Create an SVM classifier svm_classifier = SVC() # Create an instance of the OneVsRestClassifier ovr_classifier = OneVsRestClassifier(svm_classifier) # Train the classifier ovr_classifier.fit(X_train, y_train) # Make predictions y_pred = ovr_classifier.predict(X_test) -
Подход Label Powerset:
Подход Label Powerset преобразует проблему с несколькими метками в задачу с несколькими классами, где каждая уникальная комбинация меток рассматривается как отдельный класс. Этот метод может обрабатывать как целевые индикаторы с несколькими метками, так и целевые объекты с несколькими классами.from skmultilearn.problem_transform import LabelPowerset from sklearn.ensemble import RandomForestClassifier # Create a RandomForest classifier rf_classifier = RandomForestClassifier() # Create an instance of the LabelPowerset classifier lp_classifier = LabelPowerset(rf_classifier) # Train the classifier lp_classifier.fit(X_train, y_train) # Make predictions y_pred = lp_classifier.predict(X_test) -
Подход с использованием цепочек классификаторов.
Подход с использованием цепочек классификаторов расширяет метод Label Powerset за счет рассмотрения порядка меток в задаче с несколькими метками. Каждый классификатор в цепочке обучается на основе входных признаков и всех предыдущих меток в цепочке. Этот метод может обрабатывать как целевые индикаторы с несколькими метками, так и целевые объекты с несколькими классами.from skmultilearn.problem_transform import ClassifierChain from sklearn.linear_model import LogisticRegression # Create a Logistic Regression classifier lr_classifier = LogisticRegression() # Create an instance of the ClassifierChain classifier cc_classifier = ClassifierChain(lr_classifier) # Train the classifier cc_classifier.fit(X_train, y_train) # Make predictions y_pred = cc_classifier.predict(X_test)
Это всего лишь несколько методов, которые могут обрабатывать как целевые объекты с несколькими индикаторами, так и мультиклассы. В зависимости от вашей конкретной проблемы вам, возможно, придется изучить и поэкспериментировать с другими методами.