我想在数据集被SKLearn onehotecoder转换后获取它的特征名称。
在active_features_ attribute in OneHotEncoder中,我们可以看到一个很好的解释:在执行transform()
之后,feature_indices_
和active_features_
属性是如何被填充的。
我的问题是:
例如,对于基于数据帧的输入数据:
data = pd.DataFrame({"a": [0, 1, 2,0], "b": [0,1,4, 5], "c":[0,1,4, 5]}).as_matrix()
代码是如何从原始的特征名a
、b
和c
获得转换后的特征名列表的
(例如:
a-0
,a-1
,a-2
,b-0
,b-1
,b-2
,b-3
,c-0
,c-1
,c-2
,c-3
或者
a-0
,a-1
,a-2
,b-0
,b-1
,b-2
,b-3
,b-4
,b-5
,b-6
,b-7
,^
或任何有助于查看编码列分配给原始列的内容)。
背景:我想了解一些算法的特性重要性,以了解哪些特性对所用算法的影响最大。
如果我理解正确,您可以使用
feature_indices_
来标识哪些列对应于哪个功能。例如
从上面的
feature_indices_
我们知道如果我们拼接来自0:3
的一个热编码数据,我们将得到与data
中第一列对应的特征,如下所示:拼接数据中的每一列表示第一个要素中的值。第一列是0,第二列是1,第三列是2。为了在拼接数据上演示这一点,列标签如下所示:
请注意,在对特征进行编码之前,首先对其进行排序。
您可以使用
pd.get_dummies()
:会给你:
它可以自动生成列名。您可以将此应用于所有列,然后获取列名称。不需要将它们转换为numpy矩阵。
因此:
解决方案如下:
您可以使用开源软件包功能引擎来实现这一点:
您应该看到返回的输出:
有关功能引擎的更多详细信息,请参见:
https://www.trainindata.com/feature-engine
https://github.com/solegalli/feature_engine
https://feature-engine.readthedocs.io/en/latest/
相关问题 更多 >
编程相关推荐