Как я могу проверить, какое значение назначено какой-либо метке при использовании sklearns 'LabelEncoder ()? - PullRequest
0 голосов
/ 18 февраля 2020

Я преобразую категориальные данные в числовые значения c для целей машинного обучения.

Чтобы привести пример, покупная цена (= переменная "покупки") автомобиля классифицируется в: "vhigh, высокий, мед, низкий ". Чтобы преобразовать его в числовые значения c, я использовал:

le = preprocessing.LabelEncoder()
buying = le.fit_transform(list(data["buying"]))

Есть ли способ проверить, как именно Python преобразовал каждую из этих меток в числовое значение c, поскольку это делается случайным образом ( например, vhigh = 0, high = 2)?

1 Ответ

2 голосов
/ 18 февраля 2020

Вы можете создать дополнительный столбец в вашем фрейме данных для сопоставления значений:

mapping_df = data[['buying']].copy() #Create an extra dataframe which will be used to address only the encoded values
mapping_df['buying_encoded'] = le.fit_transform(data['buying'].values) #Using values is faster than using list

Вот полный рабочий пример:

import pandas as pd
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
data = pd.DataFrame({'index':[0,1,2,3,4,5,6],
        'buying':['Luffy','Nami','Luffy','Franky','Sanji','Zoro','Luffy']})
data['buying_encoded'] = le.fit_transform(data['buying'].values)
data = data.drop_duplicates('buying').set_index('index')
print(data)

Вывод:

       buying  buying_encoded
index                        
0       Luffy               1
1        Nami               2
3      Franky               0
4       Sanji               3
5        Zoro               4
...