常需要处理的数值都是稀疏而又散乱地分布在空间中,然而,我们并不需要存储这些大数值,这时可以用独热编码。
例如:我们需要处理4维向量空间,当给一个特征向量的第n个特征进行编码时,编码器会遍历每个特征向量的第n个特征,然后进行非重复计数。若第n个特征的最大值为K,则就把这个特征转换为只有一个值为1而其他值都是0的K+1维向量。
每个样本(5个特征)经过独热码编码后转化成26个特征(6+5+4+5+6=26)
第一个原始特征最大值为5,因此第一个原始特征取值种类为6种(0,1,2,3,4,5),则原始数据用一个六源元组来编码
如:0编码为(1,0,0,0,0,0)
encoder.active_features_给出了激活特征
(1)第一个原始特征没有出现数值为0,2,4,因此转化后的26个特征中,对应编码的特征未激活(转化后的特征下标为0,2,4)
(2)第一个原始特征没有出现数值为0,因此转化后的26个特征中,对应编码的特征未激活(转化后的特征下标为6)
(3)第一个原始特征没有出现数值为0,2,因此转化后的26个特征中,对应编码的特征未激活(转化后的特征下标为11,13)
(4)第一个原始特征没有出现数值为0,因此转化后的26个特征中,对应编码的特征未激活(转化后的特征下标为15)
(5)第一个原始特征没有出现数值为0,2,4,因此转化后的26个特征中,对应编码的特征未激活(转化后的特征下标为20,22,24)
因此激活特征数组为[1 3 5 7 8 9 10 12 14 16 17 18 19 21 23 25]注:未激活特征在所有样本上的取值为0
encoder.feature_indices_给出了每个原始特征在转换后特征的起始区间:
(1)第一个原始特征在转换后特征的区间[0,6)
(2)第二个原始特征在转换后特征的区间[6,11)
(1)第三个原始特征在转换后特征的区间[11,15)
(1)第四个原始特征在转换后特征的区间[15,20)
(1)第五个原始特征在转换后特征的区间[20,26)
n_values_给出了每个原始属性的取值的种类:6,5,4,5,6注:n_values是一个数组,存放每个属性取值的种类,一般为训练数据中该属性取值的最大值加1,因为默认每个属性取值从0开始
样本[1,2,3,4,5]经过独热编码之后的值为[1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 1]。这里本该26位编码,但是考虑到剔除未激活特征,只给出了激活特征,因此这里只有16位编码。
encoder=OneHotEncoder(sparse=False)注:这里sparse是一个布尔值,指定结果是否稀疏。若sparse=True,则每个样本的独热码为一个稀疏矩阵
--------------------- 本文来自 LanboCSDN 的CSDN 博客 ,全文地址请点击:https://blog.csdn.net/LanboCSDN/article/details/78291785?utm_source=copy