Как я могу решить проблему классификации с зависимой переменной с более чем двумя значениями - PullRequest
0 голосов
/ 28 декабря 2018

У меня есть простая проблема НЛП, где у меня есть несколько письменных обзоров, которые имеют простое бинарное положительное или отрицательное суждение.В этом случае я могу обучать и тестировать как независимые переменные столбцы X, содержащие «мешки слов», а именно отдельные слова в разреженной матрице.

from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(max_features = 300)
#indipendent
X = cv.fit_transform(corpus).toarray()
#dependent
y = dataset.iloc[:, 1].values

.. и зависимую переменнуюy, это представлено столбцом 1, который принимает значения как 0 и 1 (таким образом, в основном положительный и отрицательный отзыв).

если вместо 0 и 1 у меня есть отзывы, за которые можно проголосовать от 1 до 5 звездпродолжить ли мне иметь столбец переменной y со значениями от 0 до 4. Другими словами, я бы соврал узнать, насколько отличается модель, если вместо бинарного хорошего / плохого обзора у пользователя есть возможность после своего обзора датьоценка от 1 до 5. Как называется такая проблема в машинном обучении?

Ответы [ 3 ]

0 голосов
/ 28 декабря 2018

Это просто проблема классификации нескольких классов.Вот пример кода, из которого вы можете получить представление.То, что вы называете «зависимой переменной», называется классом (класс, которому принадлежит пример ввода)

    label_idx = [unique.index(l) for l in labels] """ labels= class. works for your class is string or so. 
here labels can be more than two"""
    label_idx = np.array(label_idx) # just get your class into array
    vectors = np.array(vecs) # vecs are any vectorised form of your text data
    clf = LinearSVC() # classifier of your choice
    clf.fit(vectors, label_idx)
0 голосов
/ 28 декабря 2018

Эта проблема называется проблемой классификации нескольких классов, как упомянуто @rishi.Существует большое разнообразие алгоритмов, которые могут решить проблему мультикласса. Посмотрите здесь

Вы можете сделать вашу целевую переменную как единицу, то есть в качестве рейтинга.

#dependent
y = dataset.iloc[:, 'ratings'].values

Затем вы можете поместить эти данные в классификатор !

from sklearn import linear_model
clf = linear_model.SGDClassifier()
clf.fit(X, y)
0 голосов
/ 28 декабря 2018

Я использовал следующую ссылку для мультиклассификатора RandomForest, который является одним из многих возможных алгоритмов ML, которые вы можете использовать:

https://scikit -learn.org / stable / modules / generate / sklearn.ensemble.RandomForestClassifier.html # sklearn.ensemble.RandomForestClassifier

Однако мой личный опыт показывает, что нейронные сети с глубоким обучением лучше работают с «текстовыми данными», а древовидные модели лучше работают с табличными данными с числовыми значениями.

...