我尝试使用计数和tfidf
作为多项式朴素贝叶斯模型的特征。
text = ["this is spam", "this isn't spam"]
labels = [0,1]
count_vectorizer = CountVectorizer(stop_words="english", min_df=3)
tf_transformer = TfidfTransformer(use_idf=True)
combined_features = FeatureUnion([("counts", self.count_vectorizer), ("tfidf", tf_transformer)]).fit(self.text)
classifier = MultinomialNB()
classifier.fit(combined_features, labels)
但是我在使用FeatureUnion
和tfidf
时遇到错误:
TypeError: no supported conversion for types: (dtype('S18413'),)
知道为什么会发生这种情况吗?不可能同时拥有count和TFIDF作为特性吗?
1条答案
按热度按时间nlejzf6q1#
错误不是来自
FeatureUnion
,而是来自TfidfTransformer
您应该使用
TfidfVectorizer
而不是TfidfTransformer
,转换器需要numpy数组作为输入,而不是纯文本,因此会出现TypeError此外,您的测试句子对于Tfidf测试来说太小了,所以请尝试使用更大的句子,下面是一个示例: