我尝试做情感分类,我使用了学习支持向量机模型。利用标记数据对模型进行训练,准确率达89%。现在我想用这个模型来预测未标记数据的情绪。我怎么能这么做?而在对未标注数据进行分类后,如何判断它是正的还是负的呢?
我用了python 3.7。下面是密码。
import random
import pandas as pd
data = pd.read_csv("label data for testing .csv", header=0)
sentiment_data = list(zip(data['Articles'], data['Sentiment']))
random.shuffle(sentiment_data)
train_x, train_y = zip(*sentiment_data[:350])
test_x, test_y = zip(*sentiment_data[350:])
from nltk import word_tokenize
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.pipeline import Pipeline
from sklearn.svm import LinearSVC
from sklearn import metrics
clf = Pipeline([
('vectorizer', CountVectorizer(analyzer="word",
tokenizer=word_tokenize,
preprocessor=lambda text: text.replace("<br />", " "),
max_features=None)),
('classifier', LinearSVC())
])
clf.fit(train_x, train_y)
pred_y = clf.predict(test_x)
print("Accuracy : ", metrics.accuracy_score(test_y, pred_y))
print("Precision : ", metrics.precision_score(test_y, pred_y))
print("Recall : ", metrics.recall_score(test_y, pred_y))当我运行这段代码时,我得到了输出:
ConvergenceWarning: Lib线性方程未能收敛,增加迭代次数。“迭代次数”,ConvergenceWarning)准确性: 0.8977272727272727精度: 0.8604651162790697召回: 0.925
ConvergenceWarning的含义是什么?
提前谢谢!
发布于 2019-11-18 11:32:44
ConvergenceWarning的含义是什么?
正如帕维尔已经提到的,ConvergenceWArning的意思是max_iter被击中了,您可以在这里压制警告:如何使用sklearn禁用ConvergenceWarning?
现在我想用这个模型来预测未标记数据的情绪。我怎么能这么做?
您将使用命令:pred_y = clf.predict(test_x),唯一需要调整的是:pred_y (这是您的自由选择)和test_x,这应该是您的新的未见数据,它必须具有与数据test_x和train_x相同数量的特性。
就你而言,正如你所做的那样:
sentiment_data = list(zip(data['Articles'], data['Sentiment']))您正在形成一个元组:看看这个,然后对其进行洗牌,并对前350行进行解拉链:
train_x, train_y = zip(*sentiment_data[:350])这里您的train_x是列:data['Articles'],所以如果您有新的数据,那么您所要做的就是:
new_ data = pd.read_csv("new_data.csv", header=0)
new_y = clf.predict(new_data['Articles'])如何判断它是积极的还是消极的?
然后您可以运行:pred_y,并且在结果中会有1或0。通常0应该是否定的,但它取决于您的数据集向上。
发布于 2019-11-18 10:23:47
发布于 2019-11-18 09:11:03
现在我想用这个模型来预测未标记数据的情绪。我怎么能这么做?而在对未标注数据进行分类后,如何判断它是正的还是负的呢?
基本上,您聚合未标记数据的方式与生成train_x或test_x的方式相同。可能是n_samples x 1形状的2D矩阵,然后在clf.predict中使用它来获得预测。clf.predict输出最可能的类。在您的例子中,0是负的,1是正的,但是没有数据集很难判断。
ConvergenceWarning的含义是什么?
采用迭代算法对LinearSVC模型进行了优化。有一个参数max_iter (默认情况下为1000)控制最大迭代量。如果在此过程中没有满足停止条件,您将得到ConvergenceWarning。只要您在准确性或其他度量方面具有可接受的性能,它就不会对您造成太大的困扰。
https://stackoverflow.com/questions/58910413
复制相似问题