使用OneHotEncoder制作虚拟变量

时间:2020-03-27 08:05:59

标签: python machine-learning sklearn-pandas one-hot-encoding

我正在尝试在以下形式的输入集中制作虚拟变量: My Input set

所以我对分类数据进行了编码,所以现在我的数组的格式为:Encoded input set

接下来,我想使用OneHot编码器制作伪变量。我知道它以前是这样工作的:

select PARSE_DATETIME('%Y-%m-%d %H:%M:%s', '2019-03-15-15.22.25.754892')

但是现在OneHotEncoder类的工作原理有些不同,我不知道如何将其调整为我的数据集,因此它正是以这种方式工作的。 我的代码:

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

提前谢谢!

2 个答案:

答案 0 :(得分:1)

事实证明,OneHotEncoder的API已更改,如文档中所述。现在,您需要传递类别的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()

答案 1 :(得分:0)

使用pandas.get_dummies()为熊猫数据框创建虚拟变量:

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'])