Использование OneHotEncoder в создании фиктивных переменных - PullRequest
0 голосов
/ 27 марта 2020

Я пытаюсь сделать фиктивные переменные в моем входном наборе следующей формы: Мой входной набор

Итак, я закодировал категориальные данные, так что теперь мой массив имеет форму: Набор кодированных входных данных

Далее я хотел бы создать фиктивные переменные, используя OneHot Encoder. Я знаю, что раньше он работал так:

onehotencoder = OneHotEncoder(categorical_features = [1])
X = onehotencoder.fit_transform(X).toarray()

Но теперь класс OneHotEncoder работает немного по-другому, и я не могу понять, как настроить его для моего набора данных, чтобы он работал именно так. Мой код:

import numpy as np
import pandas as pd

dataset = pd.DataFrame(
    {'RowNumber': [1, 2, 3, 4, 5],
     'CustomerId': [602, 311, 304, 354, 888],
     'Surname': ['Har', 'Hil', 'Oni', 'Bon', 'Mit'],
     'CreditScore': [619, 608, 502, 699, 850],
     'Geography': ['FR', 'ES', 'FR', 'FR', 'ES'],
     'Gender': ['F', 'F', 'F', 'F', 'F'],
     'Age': [42, 41, 42, 39, 43],
     'Tenure': [2, 1, 8, 0, 2]})

X = dataset.iloc[:, 3 : -1].values
y= dataset.iloc[:, -1].values

# Encoding categorical data
from sklearn.preprocessing import LabelEncoder
le = LabelEncoder()
X[:, 1] = le.fit_transform(X[:, 1])
X[:, 2] = le.fit_transform(X[:, 2])

# Making dummy variables
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder()

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 27 марта 2020

Оказывается, API для OneHotEncoder изменился, как сказано в документации. Теперь вам нужно передать list категорий вместо просто категорий (чтобы иметь возможность генерировать несколько горячих кодировок в одном вызове, если это необходимо).

Работает ли следующее, как вы ожидаете?

import numpy as np
import pandas as pd

dataset = pd.DataFrame(
    {'RowNumber': [1, 2, 3, 4, 5],
     'CustomerId': [602, 311, 304, 354, 888],
     'Surname': ['Har', 'Hil', 'Oni', 'Bon', 'Mit'],
     'CreditScore': [619, 608, 502, 699, 850],
     'Geography': ['FR', 'ES', 'FR', 'FR', 'ES'],
     'Gender': ['F', 'F', 'F', 'F', 'F'],
     'Age': [42, 41, 42, 39, 43],
     'Tenure': [2, 1, 8, 0, 2]})

X = dataset.iloc[:, 3 : -1].values
y= dataset.iloc[:, -1].values

# Making dummy variables
from sklearn.preprocessing import OneHotEncoder
ohe = OneHotEncoder()
X1 = ohe.fit_transform(list(map(lambda x: [x], X[:, 1]))).toarray()
X2 = ohe.fit_transform(list(map(lambda x: [x], X[:, 2]))).toarray()
0 голосов
/ 27 марта 2020

Используйте pandas.get_dummies() для создания фиктивных переменных для pandas фрейма данных:

df = pd.DataFrame({'Country':['France','Spain','Germany','France','Spain','Germany','Germany'],
                   'Gender':['Male','Female','Male','Female','Male','Male','Female'],
                   'Age':[52,30,38,45,41,55,29]})

df = pd.get_dummies(data = df, columns = ['Country','Gender'])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...