Python SKLearn: 在使用OneHotEncoder后如何获取特征名称?

我想在数据集经过SKLearn的OneHotEncoder转换后,获取其特征名称。

OneHotEncoder的active_features_属性中,可以看到对n_values_feature_indices_active_features_如何在执行transform()后被填充的非常好的解释。

我的问题是:

例如,对于基于DataFrame的输入数据:

data = pd.DataFrame({"a": [0, 1, 2,0], "b": [0,1,4, 5], "c":[0,1,4, 5]}).as_matrix()

如何编写代码,从原始特征名称abc转换到变换后的特征名称列表(例如:

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, b-8

或任何有助于看到编码列与原始列之间分配关系的内容)。

背景:我想查看一些算法的特征重要性,以了解哪些特征对所使用的算法影响最大。


回答:

你可以使用pd.get_dummies()

pd.get_dummies(data["a"],prefix="a")

会得到:

    a_0 a_1 a_20   1   0   01   0   1   02   0   0   13   1   0   0

这可以自动生成列名。你可以将此应用于所有列,然后获取列名。无需将它们转换为numpy矩阵。

因此,对于:

df = pd.DataFrame({"a": [0, 1, 2,0], "b": [0,1,4, 5], "c":[0,1,4, 5]})data = df.as_matrix()

解决方案如下所示:

columns = df.columnsmy_result = pd.DataFrame()temp = pd.DataFrame()for runner in columns:    temp = pd.get_dummies(df[runner], prefix=runner)    my_result[temp.columns] = tempprint(my_result.columns)>>Index(['a_0', 'a_1', 'a_2', 'b_0', 'b_1', 'b_4', 'b_5', 'c_0', 'c_1', 'c_4',       'c_5'],      dtype='object')

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注