在scikit-learn中从一个热编码中回溯分类特征?

时间:2015-11-28 06:19:28

标签: python encoding machine-learning scikit-learn one-hot-encoding

我正在尝试构建一个套索回归预测模型。我使用scikit-learn中的OneHotEncoder使用一个热的又名一个K方案编码了我的所有分类整数特征。根据结果​​,只有51个参数实际影响预测模型。我想调查这些参数,但它们是如上所述编码的。您知道如何提取哪个分类整数特征对应于哪个热编码数组? 谢谢!

3 个答案:

答案 0 :(得分:0)

使用sklearn.preprocessing.OneHotEncoder active_features _ feature_indices _ n_values _ 属性,这些属性按其排序的分类要素的向量可以按如下方式创建单热阵列中的位置:

import numpy as np
from sklearn import preprocessing

enc = preprocessing.OneHotEncoder()
enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])
enc.active_features_ - np.repeat(enc.feature_indices_[:-1], enc.n_values_)
# array([0, 1, 0, 1, 2, 0, 1, 2, 3], dtype=int64)

此外,原始数据可以从单热阵列返回,如下所示:

x = enc.transform([[0, 1, 1], [1, 2, 3]]).toarray()
# array([[ 1.,  0.,  0.,  1.,  0.,  0.,  1.,  0.,  0.],
#       [ 0.,  1.,  0.,  0.,  1.,  0.,  0.,  0.,  1.]])

cond = x > 0
[enc.active_features_[c.ravel()] - enc.feature_indices_[:-1] for c in cond]
# [array([0, 1, 1], dtype=int64), array([1, 2, 3], dtype=int64)]

答案 1 :(得分:0)

这有效:

import pickle


with open('model.pickle', 'rb') as handle:
    one_hot_categories = pickle.load(handle)      


print(one_hot_categories.categories_)

答案 2 :(得分:-1)

我设计了增强sklearn的Pipeline和FeatureUnion,我们还可以通过一个热编码或其他预处理步骤来回溯分类功能。此外,我们可以画出' GraphX的转换:例如,

for example

您可以找到my Github page