首页 > 解决方案 > 如何显示预测标签的名称

问题描述

我正在研究标签预测。这是代码的一部分:

from sklearn.feature_extraction.text import TfidfVectorizer
vectorizer = TfidfVectorizer(min_df=0.00009, max_features=200000, tokenizer = lambda x: x.split(), ngram_range=(1,3))
X_train_multilabel = vectorizer.fit_transform(X_train['question'])
X_test_multilabel = vectorizer.transform(X_test['question'])
from sklearn.multiclass import OneVsRestClassifier
from sklearn.linear_model import SGDClassifier
clf = OneVsRestClassifier(SGDClassifier(loss='log', alpha=0.00001, penalty='l2'))
clf.fit(X_train_multilabel, y_train)
y_pred = clf.predict(X_test_multilabel)

我将 y_pred 作为具有 1 和 0 的稀疏矩阵。现在我需要知道如何预测标签的名称。我正在使用 1000 个标签。所以 y_pred 有 1000 列。我怎么知道哪一列代表哪个标签。

标签: pythonscikit-learnnlp

解决方案


你需要找到class_labels,它应该是一个长度为1000的数组。

拿到这份清单后,

tags = ['cat', 'dogs', ...]# 长度 1000

然后,您可以从您的y_pred,

tag_y = [tags[i] if y_pred[i] == 1 for i in range(1000)]


推荐阅读