为什么在 OneHotEncoding 分类数据时会得到额外的零?
Why do I get extra zeros while OneHotEncoding categorical data?
直接来自 Udemy 上的机器学习课程,关于编码分类数据的讲座提供了一个 CSV 文件来进行编码。
该文件的内容相当简单:
创建特征矩阵,我可以很容易地得到数据的值。
但是在使用 sklearn(comlumn transformer)中的 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]
忘记我写的一切。
如果你想看看会发生什么,只需输入这一行...
np.set_printoptions(suppress=True) #just to print nicely - you may remove it
我完全被这个问题搞糊涂了...
直接来自 Udemy 上的机器学习课程,关于编码分类数据的讲座提供了一个 CSV 文件来进行编码。
该文件的内容相当简单:
创建特征矩阵,我可以很容易地得到数据的值。
但是在使用 sklearn(comlumn transformer)中的 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]
忘记我写的一切。 如果你想看看会发生什么,只需输入这一行...
np.set_printoptions(suppress=True) #just to print nicely - you may remove it
我完全被这个问题搞糊涂了...