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



我有一个简单的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,由假设值为 0 和 1 的列 1 表示(因此基本上是正面和负面评论)。

如果我有可以从 1 到 5 星投票的评论而不是 0 和 1,我应该继续使用值从 0 到 4 的 y 变量列吗?换句话说,我会撒谎以了解模型的差异,如果不是二进制的好/坏评论,用户有可能在他或她的评论后给出从 1 到 5 的评分。机器学习中如何称呼这种问题?

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

    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)

我已将以下链接用于 RandomForest multiClassifier,这是您可以使用的许多可能的 ML 算法之一:

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

然而,我的个人经验表明,深度学习神经网络在"文本数据"方面效果更好,而基于树的模型更适合具有数值的表格数据。

这个问题

被称为@rishi提到的多类分类问题。有各种各样的算法可以解决多类问题。看这里

您可以将目标变量设置为一个,作为评级。

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

然后,您可以将此数据放入分类器中!

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

最新更新