Python 如何使用用户文本数据调用多项式nb.predict()?

Python 如何使用用户文本数据调用多项式nb.predict()?,python,machine-learning,scikit-learn,naivebayes,recommender-systems,Python,Machine Learning,Scikit Learn,Naivebayes,Recommender Systems,我正在创建一个简单的推荐程序,根据推文的相似性推荐其他用户。我使用tfidf对所有文本进行矢量化,我能够将数据拟合成一个多项式nb,但我在尝试预测时不断出错 我试图将数据重新格式化为数组,但遇到一个错误,无法将字符串转换为浮点。我甚至可以对这些数据使用这种算法吗?我尝试了不同的列以查看是否得到了结果,但出现了相同的位置错误 ValueError Traceback (most recent call last) <ipython

我正在创建一个简单的推荐程序,根据推文的相似性推荐其他用户。我使用tfidf对所有文本进行矢量化,我能够将数据拟合成一个
多项式nb
,但我在尝试预测时不断出错

我试图将数据重新格式化为数组,但遇到一个错误,无法将字符串转换为浮点。我甚至可以对这些数据使用这种算法吗?我尝试了不同的列以查看是否得到了结果,但出现了相同的位置错误

ValueError                                Traceback (most recent call last)
<ipython-input-39-a982bc4e1f49> in <module>
     20     nb_mul.fit(train_idf,y_train)
     21     user_knn = UserUser(10, min_sim = 0.4, aggregate='weighted-average')
---> 22     nb_mul.predict(y_test)
     23     #nb_mul.predict(np.array(test['Tweets'], test['Sentiment']))
     24     #TODO: find a way to predict with test data

~/anaconda2/lib/python3.6/site-packages/sklearn/naive_bayes.py in predict(self, X)
     64             Predicted target values for X
     65         """
---> 66         jll = self._joint_log_likelihood(X)
     67         return self.classes_[np.argmax(jll, axis=1)]
     68 

~/anaconda2/lib/python3.6/site-packages/sklearn/naive_bayes.py in _joint_log_likelihood(self, X)
    728         check_is_fitted(self, "classes_")
    729 
--> 730         X = check_array(X, accept_sparse='csr')
    731         return (safe_sparse_dot(X, self.feature_log_prob_.T) +
    732                 self.class_log_prior_)

~/anaconda2/lib/python3.6/site-packages/sklearn/utils/validation.py in check_array(array, accept_sparse, accept_large_sparse, dtype, order, copy, force_all_finite, ensure_2d, allow_nd, ensure_min_samples, ensure_min_features, warn_on_dtype, estimator)
    525             try:
    526                 warnings.simplefilter('error', ComplexWarning)
--> 527                 array = np.asarray(array, dtype=dtype, order=order)
    528             except ComplexWarning:
    529                 raise ValueError("Complex data not supported\n"

~/anaconda2/lib/python3.6/site-packages/numpy/core/numeric.py in asarray(a, dtype, order)
    536 
    537     """
--> 538     return array(a, dtype, copy=False, order=order)
    539 
    540 

ValueError: could not convert string to float: '["b\'RT @Avalanche: Only two cities have two teams in the second round of the playoffs...\\\\n\\\\nDenver and Boston!\\\\n\\\\n#MileHighBasketball #GoAvsGo http\\\\xe2\\\\x80\\\\xa6\'"]'

数据如下所示

   user                                             Tweets  \
0              2287418996  ["b'RT @HPbasketball: This stuff is 100% how K...   
1              2287418996  ["b'@KeuchelDBeard I may need to rewatch Begin...   
2              2287418996  ["b'@keithlaw Is that the stated reason for th...   
3              2287418996  ['b"@keithlaw @Yanks23242 I definitely don\'t ...   
4              2287418996  ["b'@Yanks23242 @keithlaw Sorry, please sub Jo...   
     Sentiment  Score  
0          neu  0.815  
1          neu  0.744  
2          neu  1.000  
3          neu  0.863  
4          neu  0.825 

同样,我希望插入用户的tweet和情绪,并根据相似性在数据中推荐另一个用户。

您不应该将tweet直接提供给分类器。您需要使用安装的
TFIDFvectorier
将文本转换为向量

进行以下更改

nb_mul.predict(tfidf.transform(test['Tweets']))
请理解,此模型仅给出测试数据推文的情绪


如果您的目的是推荐,请尝试使用其他推荐方法

如果您遇到错误,请在问题中添加完整的回溯。也就是说,
predict
只接受一个参数,即中所示的特性(X)。(隐式的第二个论点是
self
underhood)谢谢你的帮助,我现在编辑了我的帖子。似乎现在我遇到了一个不同的错误。为什么要将一个向量器(
tfidf
)安装到数据中,然后尝试使用一个未安装的向量器(
blank\u idf
)转换数据?另外,请提供完整的错误回溯,而不仅仅是最后一行,正如这告诉您错误发生在哪一行一样,我认为创建一个新的矢量器并将其设置为已安装的矢量器相当于.fit_trainsform()方法,这在前面给我带来了问题