【发布时间】:2021-07-17 15:30:37
【问题描述】:
直接来自 Udemy 的机器学习课程,关于编码分类数据的讲座提供了一个 CSV 文件以进行编码。 该文件的内容相当简单:
创建特征矩阵,我可以很容易地得到数据,因为它是值。 但是在使用来自 sklearn(comlumn 转换器)的 OneHotEncoder 时,“国家列”分为 3 个不同的列,给出的值如下所示:
但是,对于相同的数据和相同的代码,讲师会获得一个小数位。 似乎无法理解我是否做错了什么,或者负责此问题的平台版本是否发生了变化。 我怎样才能得到一个小数位而不是多个零。
编码代码:
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder
ct = ColumnTransformer(transformers =[('encoder',OneHotEncoder(),[0])], remainder = 'passthrough')
X = np.array(ct.fit_transform(X))
编辑:
第 1 行的预期输出:
[1.0 0.0 0.0 44.0 72000.0]
我得到的输出:
[1.00000000e+00 0.00000000e+00 0.00000000e+00 4.40000000e+01 7.20000000e+04]
【问题讨论】:
-
嘿,你可以展示一个你想要的例子,你得到了吗?我不确定您是否想要看起来像
[1,0,0]或其他东西的向量?另外,你想 OneHot 只编码国家列吗? -
嗨,@Green 是的,这正是我希望得到的。讲师得到: [1.0 0.0 0.0 44.0 72000.0] 用于包含数据 [France 44 72000] 的列
-
我回答了之前的事情。这有点不同。请编辑问题,以便清楚。只需给出准确的输入和输出
-
是的,当然!我用示例编辑了问题
-
只是显示方式的问题。
1.0和1.0000e+00是完全相同的数据类型和值。
标签: python scikit-learn one-hot-encoding