【发布时间】:2021-08-20 04:24:18
【问题描述】:
这里是 Python 初学者...
试图了解如何使用 sklearn.preprocessing 库中的 OneHotEncoder。我非常有信心将它与 fit_transform 结合使用,这样结果也可以适合测试数据框。我感到困惑的是如何处理生成的编码数组。然后您是否将 ohe 结果转换回数据帧并将其附加到现有的训练/测试数据帧?
ohe 方法似乎比 pd.get_dummies 方法麻烦得多,但据我了解,使用 ohe 和 fit_transform 可以更轻松地将相同的转换应用于测试数据。
搜索了几个小时,但在试图找到一个好的答案时遇到了很多麻烦。
以广泛使用的泰坦尼克号数据集为例:
ohe = OneHotEncoder()
imp = SimpleImputer()
ct = make_column_transformer(
(imp, ['Age']),
(ohe, ['Sex', 'Embarked']),
remainder='passthrough')
ct.fit_transform(train)
结果:
array([[22. , 0. , 1. , ..., 1. ,
0. , 7.25 ],
[38. , 1. , 0. , ..., 1. ,
0. , 71.2833 ],
[26. , 1. , 0. , ..., 0. ,
0. , 7.925 ],
...,
[29.69911765, 1. , 0. , ..., 1. ,
2. , 23.45 ],
[26. , 0. , 1. , ..., 0. ,
0. , 30. ],
[32. , 0. , 1. , ..., 0. ,
0. , 7.75 ]])
您是否将结果数组直接传递到变量中,例如 X 和 y 以便 train_test_split 运行最终模型?或者有没有办法将结果转换回带有列标签的数据框以进行进一步的 EDA?
【问题讨论】:
标签: python python-3.x machine-learning scikit-learn data-science