Я пытаюсь кодировать фрейм данных, но мне нужно сохранить целевые классы для последующего отслеживания.
Однако, когда я ищу классы LabelEncoder
с LabelEncoder.classes_
, это дает мне только классы в последнем столбце.
Например, со следующим кадром данных:
>>>import numpy as np
>>>import pandas as pd
>>>length = 10
>>>df_test = pd.DataFrame(np.random.randint(0,length,size=(length, 5)),columns = list('ABCDE'))
>>>df_test['D'] = ['D' + str(randrange(2)) for i in range(0,length)]
>>>df_test['E'] = ['E' + str(randrange(3)) for i in range(0,length)]
>>>df_test
A B C D E
0 5 6 2 D1 E0
1 6 1 5 D0 E1
2 2 4 8 D0 E1
3 2 4 0 D1 E0
4 3 2 2 D1 E1
5 6 1 4 D0 E2
6 2 1 0 D0 E2
7 3 0 9 D1 E2
8 1 7 0 D1 E2
9 2 3 3 D0 E1
Когда я пытаюсь кодировать его и отделить объекты от цели, столбца D, с помощью следующей функции
def clean_df(df, target):
''' Clean a dataframe to get a dataframe ready to be sent to a DecisionTreeClassifier
inputs:
df: dataframe to clean
target: column to predict
'''
filtered_cols = [target]
le = LabelEncoder()
# label encoding
df = df.astype(str)
X = df.apply(le.fit_transform)
# split into input (X) and output (y) variables
y = df[target] #target column i.e price range
return X, y, le
Это возвращает мне столбцы 'E':
array(['E0', 'E1', 'E2'], dtype=object)
Я знаю, благодаря этому ответу , что теперь есть, вероятно, более новые методы, такие как OneHotEncoder, я еще не освоил его.