Почему LabelEncoder.classes_ возвращает метки последнего столбца кодированного кадра данных? - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь кодировать фрейм данных, но мне нужно сохранить целевые классы для последующего отслеживания.

Однако, когда я ищу классы 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, я еще не освоил его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...