首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >active_features_属性( OneHotEncoder )

active_features_属性( OneHotEncoder )
EN

Stack Overflow用户
提问于 2015-11-08 08:22:36
回答 1查看 3.2K关注 0票数 3

我是机器学习的新手,我正在努力理解OneHotEncoder的作用。我可以将它与其他事物(如LabelEncoder )区分开来。特别是,我发现关于active_features_的文档特别令人困惑。

http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html#sklearn.preprocessing.OneHotEncoder

feature_indices_的文档中也提到了这一点。

feature_indices_: 形状数组(n_features,) 特征范围的索引。将原始数据中的特性i映射到从feature_indices_i到feature_indices_i+1的特性。

这是什么意思,这面具是干什么用的?

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-08 17:41:02

OneHotEncoder编码范畴化特性,例如,特征"vehicle“可以具有set {"car”、“摩托车”、“卡车”、.}的值。这种特征类型是指在这些值之间没有任何顺序的情况下使用,例如car与摩托车或卡车是不可比较的,尽管您用整数编码集合"car“、”摩托车“、”卡车“},但您想要学习的估计量并不意味着分类特征值之间的任何关系。若要将此特性类型转换为二进制或rational,并且仍然保持无序值的属性,可以使用一个热编码。这是非常常见的技术:它将创建n新的二进制特性,其中n -原始分类特征中的唯一值数,而不是原始数据集中的每个分类特征。如果您想知道这些n个新的二进制特性在结果数据集中的确切位置--您必须使用feature_indices_属性,则来自原始数据集的分类特征i的所有新二进制特性现在都位于新数据集的列feature_indices_[i]:feature_indices_[i+1]中。

OneHotEncoder从dataset中的此特性值确定每个分类特性的范围,请参阅下面的示例:

代码语言:javascript
复制
dataset = [[0, 0],
           [1, 1],
           [2, 4],
           [0, 5]]

# First categorial feature has values in range [0,2] and dataset contains all values from that range.
# Second feature has values in range [0,5], but values (2, 3) are missing.
# Assuming that one encoded categorial values with that integer range, 2 and 3 must be somewhere, or it's sort of error.
# Thus OneHotEncoder will remove columns of values 2 and 3 from resulting dataset
enc = OneHotEncoder()
enc.fit(dataset)

print(enc.n_values_)
# prints array([3,6])
# first feature has 3 possible values, i.e 3 columns in resulting dataset
# second feature has 6 possible values
print(enc.feature_indices_)
# prints array([0, 3, 9])
# first feature decomposed into 3 columns (0,1,2), second — into 6 (3,4,5,6,7,8)
print(enc.active_features_)
# prints array([0, 1, 2, 3, 4, 7, 8])
# but two values of second feature never occurred, so active features doesn't list (5,6), and resulting dataset will not contain those columns too
enc.transform(dataset).toarray()
# prints this array
array([[ 1.,  0.,  0.,  1.,  0.,  0.,  0.],
       [ 0.,  1.,  0.,  0.,  1.,  0.,  0.],
       [ 0.,  0.,  1.,  0.,  0.,  1.,  0.],
       [ 1.,  0.,  0.,  0.,  0.,  0.,  1.]])
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33592034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档