Как назначить LabelEncoder переменной с помощью цикла в Python - PullRequest
0 голосов
/ 24 октября 2019

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

labelencoder_first_browser=1    #Using this line as QA to see if the the value changes after the loop
cols = [labelencoder_gender ,labelencoder_signup_method,labelencoder_signup_language,
    labelencoder_signup_affiliate_channel,labelencoder_signup_affiliate_provider,
    labelencoder_first_affiliate_tracked,labelencoder_signup_app,
    labelencoder_first_device_type,labelencoder_first_browser]

for i in cols:
cols = LabelEncoder()
labelencoder_first_browser

Вместо этого я получаю

1

из

labelencoder_first_browser
Out[28]: LabelEncoder()

1 Ответ

0 голосов
/ 24 октября 2019

Вы создаете LabelEncoder, но вы получаете cols, а не labelencoder_first_browser. И вы не используете столбец с данными в этом кодере.


В примере я использую список с именами столбцов. В цикле for я создаю LabelEncoder, сохраняю его в словаре, используя имя столбца, и сразу же использую его с данными из этого столбца и создаю новый столбец с закодированными данными. Позже я могу использовать кодировщики из словаря для кодирования результатов обратно к исходным значениям.

from sklearn.preprocessing import LabelEncoder
import pandas as pd

df = pd.DataFrame({
        'first_browser': ['Firefox', 'Chrome', 'Opera'],
        'gender': ['Male', 'Female', 'Male'],
     })

all_labelencoders = {}

cols = ['first_browser', 'gender'] # strings with names

for name in cols:
    labelencoder = LabelEncoder()
    all_labelencoders[name] = labelencoder

    labelencoder.fit( df[name] )
    df['labelencoder_' + name] = labelencoder.transform( df[name] )


print(all_labelencoders['first_browser'])
print(all_labelencoders['gender'])

#for name in cols:
#    print(name, all_labelencoders[name])

print(df)

# inverse data

for name in cols:
    encoder = all_labelencoders[name]
    data = encoder.inverse_transform(df['labelencoder_' + name])
    print(data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...