Scikit-learn的管道:多标签分类出错。通过稀疏矩阵

时间:2015-07-05 08:01:18

标签: python scikit-learn gaussian text-classification

我正在使用不同的机器学习算法实现不同的分类器。

我正在排序文本文件,并执行以下操作:

classifier = Pipeline([
('vectorizer', CountVectorizer ()),
('TFIDF', TfidfTransformer ()),
('clf', OneVsRestClassifier (GaussianNB()))])
classifier.fit(X_train,Y)
predicted = classifier.predict(X_test)

当我使用GaussianNB算法时,会出现以下错误:

  

TypeError:传递了稀疏矩阵,但需要密集数据。   使用X.toarray()转换为密集的numpy数组。

我看到以下帖子here

在这篇文章中,创建了一个类来执行数据转换。 可以使用TfidfTransformer调整我的代码。 我怎么解决这个问题?

1 个答案:

答案 0 :(得分:3)

您可以执行以下操作:

cursor = collection.aggregate([
    { "$match": { "date": { "$gte": startdate } } },
    {'$project': { "def": "$engines.$elemMatch.definitions","date":1,"_id": 0 }}
], allowDiskUse=True)

现在,作为管道的一部分,数据将转换为密集表示。

顺便说一句,我不知道你的约束,但也许你可以使用另一个分类器,例如RandomForestClassifierSVM来接受稀疏表示的数据。