我如何得到这个数据集的假人

数据挖掘 机器学习 Python scikit-学习 数据集 编码
2022-03-11 09:45:11

我正在为 MachineLearning 使用 udemy 课程,我正在尝试为我的变量形成一个虚拟变量,列是 Country

我想换成法国 德国 西班牙

- France                             1        0       0
- Spain                              0        0       1
- Germany                            0        1       0  etc

我试过了,但我得到了这个错误

from sklearn.preprocessing import LabelEncoder, OneHotEncoder
labelencoder_X = LabelEncoder()
X[:, 0] = labelencoder_X.fit_transform(X[:, 0])
onehotencoder = OneHotEncoder(categorical_values = [0])
X = onehotencoder.fit_transform(X).toarray()
Traceback (most recent call last):

  File "<ipython-input-9-f7654080cf6a>", line 4, in <module>
    onehotencoder = OneHotEncoder(categorical_values = [0])

TypeError: __init__() got an unexpected keyword argument 'categorical_values'
3个回答

正如错误所说:没有categorical_values参数OneHotEncoderOneHotEncoder它在扩展为直接处理字符串的同时被删除,您可能希望ColumnTransformer用于选择分类列。例如,https://datascience.stackexchange.com/a/57383/55122

通过 get_dummies 方法更容易执行此操作:

X_enc = pd.get_dummies(X)

参考:

col = []
for c in df.columns:
    if df[c].dtypes=='object':
        col.append(c)

df_dummies = pd.get_dummies(df , columns=col, drop_first=True) ## get dummies part

使用drop_first参数是一种很好的做法,因为它可以避免模型过度拟合。