gpt4 book ai didi

python - Scikit-learn 的 Pipeline : Error with multilabel classification. 传递了一个稀疏矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 01:04:19 26 4
gpt4 key购买 nike

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

我正在对文本文件进行排序,操作如下:

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

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

TypeError: A sparse matrix was passed, but dense data is required. Use X.toarray () to convert to a dense numpy array.

我看到了以下帖子 here

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

最佳答案

您可以执行以下操作:

class DenseTransformer(TransformerMixin):
def transform(self, X, y=None, **fit_params):
return X.todense()

def fit_transform(self, X, y=None, **fit_params):
self.fit(X, y, **fit_params)
return self.transform(X)

def fit(self, X, y=None, **fit_params):
return self

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

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

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

关于python - Scikit-learn 的 Pipeline : Error with multilabel classification. 传递了一个稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31228303/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com