Предположим, у меня есть задача классификации, где я хочу классифицировать текст как «Спам» или «Ветвь». «Точность» счет (в расчете на «TP/(TP + FP)») была бы полезной мерой ошибки, чтобы определить, сколько «Ham» сообщения были неправильно классифицированы как «спам», предполагая следующую спутанность матрицу:Есть ли способ определить порядок ярлыков в LabelEncoder scikit-learn?
насколько я знаю, scikit вычисляет матрицу спутанность после следующей схеме:
Теперь, если я использую кодер этикетки (см код ниже), это дало бы «Спам» class label 1 и «ham» метка класса 0, которая отменит матрицу путаницы (FP будет стать TN и т. д.), чтобы показатель точности получал другое значение. Итак, мой вопрос заключается в том, есть ли способ, с помощью которого я могу указать кодировщик ярлыков, для которого метка назначается для какого класса? (В этом случае это просто, я могу решить проблему простым пониманием списка, но мне интересно, есть ли что-то уже в scikit.)
Итак, цель состоит в том, чтобы использовать LabelEncode, чтобы дать «спам» класс этикетки 0 и «хам» класс этикетки 1.
from sklearn.preprocessing import LabelEncoder
X = df['text'].values
y = df['class'].values
print('before: %s ...' %y[:5])
le = LabelEncoder()
y = le.fit_transform(y)
print('after: %s ...' %y[:5])
before: ['spam' 'ham' 'ham' 'ham' 'ham'] ...
after: [1 0 0 0 0] ...
Этикетки пронумерованы в отсортированном порядке, поэтому для слов, которые будут означать в алфавитном порядке. Это не похоже на то, что LabelEncoder предоставляет способ указания пользовательского порядка. Но было бы довольно просто написать свою собственную функцию, которая просто отображает ваши строки в числа так, как вы хотите. – BrenBarn