我使用python scikit learn基于Naive base构建了一个NLP分类器
关键是,我希望我的分类器对一个“不属于我的任何训练或测试数据集”的新文本进行分类
在另一个“类似回归”的模型中,我可以提取θ的值,这样我就可以预测任何新的值。你知道吗
不过我知道,基于朴素的工作原理是通过计算每个单词对每个类的概率。你知道吗
例如
我的数据集包括(1000条文本记录)如下 “太好了” “我喜欢” “我不喜欢这部电影” 等。。你知道吗
每一个文本被分类为+ev或-ev
我将数据集分为训练集和测试集。一切都好。你知道吗
现在我想给一个全新的文本分类,比如“哦,我喜欢这部电影,而且音轨很完美”
如何让我的模型预测这篇文章!你知道吗
这是代码
from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(max_features=850)
X = cv.fit_transform(corpus).toarray()
y = dataset.iloc[:, 1].values
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 10)
from sklearn.naive_bayes import GaussianNB
classifier = GaussianNB()
classifier.fit(X_train, y_train)
y_pred = classifier.predict()
from sklearn.metrics import confusion_matrix
cm = confusion_matrix(y_test, y_pred)
现在我期待着做一些新的文本,比如“好电影,好音轨”和“演技太差了”。让我的朋友来预测是好是坏!
Xnew=[[“好电影和好音轨”],[“演技太差了”]] Y新=分类器.预测(新)
but i get a super error
jointi = np.log(self.class_prior_[i])
436 n_ij = - 0.5 * np.sum(np.log(2. * np.pi * self.sigma_[i, :]))
--> 437 n_ij -= 0.5 * np.sum(((X - self.theta_[i, :]) ** 2) /
438 (self.sigma_[i, :]), 1)
439 joint_log_likelihood.append(jointi + n_ij)
TypeError: ufunc 'subtract' did not contain a loop with signature matching types dtype('<U32') dtype('<U32') dtype('<U32')
另外,我想知道我的语料库的NLP包中每个单词的概率。
提前谢谢你
在将注释传递给模型之前,必须将其矢量化。你知道吗
得到概率分数
或者,您可以使用sklearn的管道来组合这两个步骤
相关问题 更多 >
编程相关推荐