我正在使用不同的机器学习算法实现不同的分类器 .
我正在排序文本文件,并执行以下操作:
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 回答
您可以执行以下操作:
现在,作为管道的一部分,数据将转换为密集表示 .
顺便说一句,我不知道你的约束,但也许你可以使用另一个分类器,例如RandomForestClassifier或SVM,它们接受稀疏表示中的数据 .