我正在尝试在以下形式的输入集中制作虚拟变量: 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()
提前谢谢!
答案 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'])