Скажем, у нас есть 6 точек данных с 3 уникальными классами (в вашем случае 120 уникальных классов)
from sklearn import preprocessing
lb = preprocessing.LabelBinarizer()
Y = ["l1", "l2", "l3", "l3", "l2", "l2", "l1"]
Y_bin = lb.fit_transform(Y) # label binarizer will convert it to a 0/1's
print(Y_bin)
Y_bin
будет выглядеть следующим образом
array([[1, 0, 0],
[0, 1, 0],
[0, 0, 1],
[0, 0, 1],
[0, 1, 0],
[0, 1, 0],
[1, 0, 0]])
The LabelBinarizer
будет знать, какие метки были помечены как l1, l2 или l3. Сверху мы видим, что l1
обозначено [1,0,0]
, l2
как [0,1,0]
и l3
как [0,0,1]
. это отразится в атрибуте .classes_
LabelBinarizer
, который будет - print(lb.classes_)
array(['l1', 'l2', 'l3'], dtype='<U2')
Так что теперь скажем, что ваш результат для 2 пунктов был -
out = np.array([[.75, .2, .05]
, [.3, .02, .68]])
ДляВ первой точке модель выбрала первую метку, а для второй точки - метку 3
. Эти метки можно выбрать с помощью приведенного ниже кода -
max_idx = out.argmax(axis=1) #get the indexes for the max probabilities
out_labels = [lb.classes_[i] for i in max_idx]
print(out_labels)
Это даст метки -
['l1', 'l3']