1

У меня возникают проблемы с правильным вызовом логистической регрессии Scikit для случая с несколькими классами. Я использую lbgfs solver, и у меня есть параметр multi_class, установленный в многочлен.Логистическая регрессия Multi-класса в SciKit Learn

Непонятно, как передать истинные метки классов при подгонке модели. Я предположил, что он был аналогичным/таким же, как для многоуровневого классификатора лесных классификаторов, в котором вы передаете [n_samples, m_classes] dataframe. Однако при этом возникает ошибка, что данные имеют плохую форму. ValueError: плохая форма ввода (20, 5) - на этом крошечном примере было 5 классов, 20 образцов.

При осмотре документация по методу подгонки говорит о том, что значения истинности передаются как [n_samples], которые соответствуют ошибке, которую я получаю, однако я понятия не имею, как обучать модель с помощью несколько классов. Итак, это мой вопрос: как передать полный набор меток класса в функцию fit?

Мне не удалось найти образец кода в Интернете для моделирования, а также этот вопрос на StackOverflow .. но я уверен, что кто-то должен знать, как это сделать!

в коде ниже, train_features = [n_samples, nn_features], truth_train = [n_samples, m_classes]

clf = LogisticRegressionCV(class_weight='balanced', multi_class='multinomial', solver='lbfgs') 
clf.fit(train_features, truth_train) 
pred = clf.predict(test_features) 

ответ

4

Вы, кажется, путает термины мультиклассируют и MultiLabelhttp://scikit-learn.org/stable/modules/multiclass.html, короче говоря:

  • Multiclass classification means a classification task with more than two classes; e.g., classify a set of images of fruits which may be oranges, apples, or pears. Multiclass classification makes the assumption that each sample is assigned to one and only one label: a fruit can be either an apple or a pear but not both at the same time.

Таким образом, данные [n_samples, n_features] и этикетки [n_samples]

  • Multilabel classification assigns to each sample a set of target labels. This can be thought as predicting properties of a data-point that are not mutually exclusive, such as topics that are relevant for a document. A text might be about any of religion, politics, finance or education at the same time or none of these.

Таким образом, данные [n_samples, n_features] и этикетки [n_samples, n_labels]

И вы, кажется, ищет MultiLabel (как для MultiClass этикеток должны быть 1-тусклый). В настоящее время в sklearn единственными методами, поддерживающими многоцветные, являются: Деревья принятия решений, Случайные леса, Ближайшие соседи, Регрессия Риджа.

Если вы хотите узнать multlabel проблемы с diffent модели, просто использовать OneVsRestClassifier как MultiLabel обертки вокруг логистическая регрессия

http://scikit-learn.org/stable/modules/generated/sklearn.multiclass.OneVsRestClassifier.html#sklearn.multiclass.OneVsRestClassifier

+0

Спасибо за ваш ответ. Я действительно ищу мультикласса, то есть каждый образец имеет только один класс. НО, то, что я сделал с лесом, преобразовывал назначения классов в логические массивы, вот как я закончил с массивом n x m. Итак, если я правильно вас понимаю, я должен преобразовать метки классов в целые числа и создать один массив длиной n_sample, где значения, которые он может принимать, сопоставляются с разными метками класса. это верно? Спасибо за вашу помощь. –

+0

Да, и вы должны делать то же самое с деревьями. В противном случае вы подходите к модели с несколькими метками. – lejlot

+0

@lejlot Я использовал scikit логистическую регрессию для многомерного предсказания скаляров. Ответ dukebody в https://stackoverflow.com/questions/36760000/python-how-to-use-multinomial-logistic-regression-using-sklearn также работает для меня. Может, я неправильно понял ваш ответ? –

Смежные вопросы