如何解决具有两个以上值的因变量的分类问题

时间:2018-12-27 22:45:44

标签: python machine-learning nlp classification

我有一个简单的NLP问题,其中有一些书面评论具有简单的二进制肯定或否定判断。在这种情况下,我能够训练并测试包含“单词袋”的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 :(得分:2)

这只是多类分类问题。这是一个示例代码,您可以从中获得一个想法。您所说的“因变量”称为类(输入示例所属的类)

    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)

答案 1 :(得分:1)

我为RandomForest多重分类器使用了以下链接,该链接是您可以使用的许多可能的ML算法之一:

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

但是,我的个人经验表明,深度学习神经网络在“文本数据”下更有效,而基于树的模型对于带有数值的表格数据则更好。

答案 2 :(得分:1)

此问题称为@rishi提到的多类分类问题。有各种各样的算法可以解决多类问题。 Look here

您可以将目标变量设置为1,即评级。

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

然后,您可以将这些数据放入classifier

from sklearn import linear_model
clf = linear_model.SGDClassifier()
clf.fit(X, y)