我已经使用sklearn的朴素贝叶斯分类器构建了一个模型。我需要知道如何预测一个输入的句子
当我直接硬编码句子时,它工作得很好,看起来像这样
new_sentence = ['its so broken']new_testdata_tfidf= tfidf.transform(new_sentence) #将其转换为矩阵以查看训练数据上的TFIDF得分fit_feature_selection = selection.transform(new_testdata_tfidf) #转换新数据以查看特征是否被移除,因为在tfidf之后我使用了chi2选择特征.predicted = classifier.predict(feature_selection )#然后进行预测。分类输出,类别是-1,这是正确答案
我需要手动输入文本数据作为输入,所以我使用了如下方式
new_sentence = input[('')] #我输入相同的句子 its so broken new_testdata_tfidf= tfidf.transform(new_sentence) #将其转换为矩阵以查看训练数据上的TFIDF得分fit_feature_selection = selection.transform(new_testdata_tfidf) #转换新数据以查看特征是否被移除,因为在tfidf之后我使用了chi2选择特征.predicted = classifier.predict(feature_selection )
但它给我输出了
File "C:\Users\Myfile\OneDrive\Desktop\model.py", line 170, in <module> new_testdata_tfidf= tfidf.transform(new_sentence) File "E:\anaconda3\lib\site-packages\sklearn\feature_extraction\text.py", line 1898, in transform X = super().transform(raw_documents) File "E:\anaconda3\lib\site-packages\sklearn\feature_extraction\text.py", line 1265, in transform "Iterable over raw text documents expected, "ValueError: Iterable over raw text documents expected, string object received.
如何解决这个问题?任何帮助都非常感激。
回答:
你试过将新句子作为数组传递吗?即
new_testdata_tfidf= tfidf.transform([new_sentence])
在第一个实例中,你传递了一个包含一个字符串元素的数组,而在另一个实例中,你只是传递了一个字符串