Estoy convirtiendo cadenas en valores categóricos en mi conjunto de datos usando el siguiente código.
data['weekday'] = pd.Categorical.from_array(data.weekday).labelsPor ejemplo,
index weekday 0 Sunday 1 Sunday 2 Wednesday 3 Monday 4 Monday 5 Thursday 6 TuesdayDespués de codificar el día de la semana, mi conjunto de datos aparece así:
index weekday 0 3 1 3 2 6 3 1 4 1 5 4 6 5¿Hay alguna forma de saber que el domingo se ha asignado a las 3, el miércoles a las 6 y así sucesivamente?
Puede crear un diccionario adicional con mapeo:
from sklearn import preprocessing le = preprocessing.LabelEncoder() le.fit(data['name']) le_name_mapping = dict(zip(le.classes_, le.transform(le.classes_))) print(le_name_mapping) {'Tom': 0, 'Nick': 1, 'Kate': 2}La mejor manera de hacer esto puede ser usar el codificador de etiquetas de la biblioteca sklearn.
Algo como esto:
from sklearn import preprocessing le = preprocessing.LabelEncoder() le.fit(["paris", "paris", "tokyo", "amsterdam"]) list(le.classes_) le.transform(["tokyo", "tokyo", "paris"]) list(le.inverse_transform([2, 2, 1]))Una manera simple y elegante de hacer lo mismo.
cat_list = ['Sun', 'Sun', 'Wed', 'Mon', 'Mon'] encoded_data, mapping_index = pd.Series(cat_list).factorize()y ya está , verifique a continuación
print(encoded_data) print(mapping_index) print(mapping_index.get_loc("Mon"))