我有一个CSV文件,其中包含两列:推文的“文本”和它的“标签”。每个推文可能属于以下四个类别之一:仇恨、中立、反仇恨和非亚洲侵略。我通过以下Python代码对训练和测试向量的Y值进行了独热编码:
encoder = LabelEncoder()y_train = encoder.fit_transform(train['Label'].values)y_train = to_categorical(y_train) y_test = encoder.fit_transform(test['Label'].values)y_test = to_categorical(y_test)
如果你打印第一个索引,会得到:
print(y_train[0])
结果是:
[0. 1. 0. 0.]
我们知道每个标签被转换为长度为4的向量,其中每个位置对应一个标签类别。我如何找出每个类别的位置呢?
例如:仇恨=0,反仇恨=1,…
回答:
首先要注意的是,encoder
类先在训练集上拟合然后转换它,但只转换测试集!我建议使用inverse_transform
方法来找回你的原始标签。
from sklearn import preprocessingle = preprocessing.LabelEncoder()le.fit(['Hate', 'Neutral', 'CounterHate and Non-Asian', 'Aggression'])print(list(le.classes_))print(le.transform(['CounterHate and Non-Asian', 'Hate', 'Neutral']))print(le.inverse_transform([2, 2, 1]))
输出结果:
['Aggression', 'CounterHate and Non-Asian', 'Hate', 'Neutral'][1 2 3]['Hate' 'Hate' 'CounterHate and Non-Asian']