如何在NLP中进行单个值预测

时间:2019-11-19 06:37:41

标签: machine-learning nlp

我的数据集是餐厅点评,有两栏评论并赞过。 根据评论,它会显示他们是否喜欢这家餐厅

第一步,我清理了NLP中的数据。第二步,使用了如下所示的词袋模型。

from sklearn.feature_extraction.text import CountVectorizer

cv = CountVectorizer(max_features = 1500)

X = cv.fit_transform(corpus).toarray()

y = dataset.iloc[:, 1].values

根据我的数据集,以上给出的X为1500列,其中0列为1,1000列为1行。

我预测如下

y_pred = classifier.predict(X_test)

所以现在我以“食物很好”来复习,如何预测他们是否喜欢它。要预测的唯一值。

请帮助我。如果需要其他信息,请告诉我。

谢谢

3 个答案:

答案 0 :(得分:1)

对于培训和测试,这里是一个简单的示例:

培训:

import pandas as pd
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
text = ["This is good place","Hyatt is awesome hotel"]

count_vect = CountVectorizer()
tfidf_transformer = TfidfTransformer()
X_train_counts = count_vect.fit_transform(text)
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)

pd.DataFrame(X_train_tfidf.todense(), columns = count_vect.get_feature_names())
# Now apply any classification u want to on top of this data-set

正在测试:

注意:使用与训练中相同的变换:

new = ["I like the ambiance of this hotel "]

pd.DataFrame(tfidf_transformer.transform(count_vect.transform(new)).todense(), 
             columns = count_vect.get_feature_names())

现在在此之上应用model.predict。

答案 1 :(得分:1)

您需要做的就是先申请cv.transform,就像这样:

>>> test = ['Food was good']
>>> test_vec = cv.transform(test)
>>> classifier.predict(test_vec)
# returns predicted class

答案 2 :(得分:0)

您还可以使用sklearn管道。

from sklearn.pipeline import Pipeline
model_pipeline = Pipeline([('vect', CountVectorizer()),('tfidf', TfidfTransformer()), ('model', classifier())]) #call the Model which you want to use

model_pipeline.fit_transform(x,y) # here x is your text data, and y is going to be your target
model_pipeline.predict(['Food was good"'])  # predict your new sentence