ValueError:并非 None 中的所有运算符都支持稀疏矩阵。请使用"TPOT sparse"作为稀疏矩阵



我正在尝试用TPOT进行文本分类。我知道你可以保存TfidfVectors的词汇表,但我在获取模型的结果时遇到了一些问题。

from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
from tpot import TPOTClassifier
x_sentences = ["hello world", "how are you", ...]
y_classes = [1, 2, ...]
tfidfconverter = TfidfVectorizer(max_features=500, min_df=5, max_df=0.7)
X = tfidfconverter.fit_transform(x_sentences).toarray()
X_train, X_test, y_train, y_test = train_test_split(X, y_classes, test_size=0.2, random_state=42)
cv = RepeatedStratifiedKFold(n_splits=10, n_repeats=3, random_state=1)
model = TPOTClassifier(generations=3, population_size=30, cv=cv, scoring='accuracy', verbosity=2, random_state=1, n_jobs=-1)
model.fit(X_train, y_train)
# Return prediction for new sample
sample = tfidfconverter.transform(["hello friend"])
print(model.predict(sample))

我希望我的模型接受原始数据集中没有的单词。我不确定我是否必须把这些句子补上,或者我如何才能把它概括成不同的值。我认为使用相同的tfid转换器应该足够好了。当我在新样本上运行推理时,它返回以下错误:

ValueError: Not all operators in None supports sparse matrix. Please use "TPOT sparse" for sparse matrix.

它与错误状态完全一样。您需要向TPOT分类器对象添加一个额外的参数:config_dict='TPOT稀疏'。您可以在"内置TPOT配置"下阅读更多信息,网址为http://epistasislab.github.io/tpot/using/

相关内容

  • 没有找到相关文章

最新更新