onehot编码的好处,onehot编码 python
学习OneHotEncoder特有的热码和标签码sklearn和kagggle时遇到了哪些问题?为什么要用独一无二的热码?什么情况下可以使用单根热线?不同于其他编码方法。
首先机器学习中的特征类,连续型特征和离散型特征。
若要获得的原始特征,每个特征都必须单独进行规范化。例如,特性A的可能值的范围是[-1000,1000],特性B的可能值的范围是[-1,1]。如果使用逻辑回归,w1*x1 w2*x2几乎没有用,因为x1的可取值太大。因此,有必要对特征进行归一化,并分别对每个特征进行归一化。
对于连续性特征:
3358 www.Sina.com/:所有连续输入都是有界的,重新标度为[-1,1]到x=(2x-max-min )/) MAA男165http://www.Sina.com/:所有连续输入都应该是标准的,并由thislyslyom计算平均值(u)和标准偏差(s)以及dox=(x-u)/s。收缩到平均值为0且方差为1的离散特征:
Rescale bounded continuous features:离散特征基本用Standardize all continuous features编码,其离散特征的值取决于用哪个维度来表示特征。Binarize categorical/discrete features
独热码在英文文献中被称为一热码。直观上是指状态有多少位就有多少位的码制,只有一位是1,其他都是0。比如如下图。
假设有三种颜色特征:红、黄、蓝。使用机器学习的算法时,一般需要矢量化和数字化。然后,你可能想把红色=1,黄色=2,蓝色=3。这样实际上就实现了给各种类别添加标签的标签码。但这意味着机器有可能学习“红黄蓝”。但这并不是我们让机器学习的意图,只是让机器来区分,对于大小对比没有任何意义。所以标记代码还不够,需要进一步转换。因为有三种颜色状态,所以变成了3位数。即红色:1 0 0,黄色:0 1 0,蓝色:0 1。这样,两个向量之间的距离就是根号2。因为向量空间中的距离是相等的,所以不会出现偏序,这对基于向量空间的测量算法影响不大。
自然状态代码为000、001、010、011、100、101。
单个热代码为000001、000010、000100、001000、01000、01000、10000、10000、10000、10000、10000。
参见sklearn的例子:
from sklearnimportpreprocessingenc=preprocessing . onehotencode()enc . fit([ 0,0,3 ],[ 1,1,0 ],[0,2,1,1 ]
数据矩阵为4*3,即4个数据和3个特征维度。
观察左边的数据矩阵。有两种类型。第一列是第一个特征尺寸,值为0\1。所以对应的编码方式是10,01。
10同样,第二列是第二个特征维,有0\1\2三个值,所以对应的编码方式是100,010,001。
01同样,第三列是第三个特征维度,从四个特征维度中取值0\1\2\3,所以对应的编码方式是1000,0100,0010,0001。
1 0 2
接下来,我们来看看要编码的参数[0,1,3]。作为第一特征码的0是10,作为第二特征码的1是010,作为第三特征码的3是0001。因此,编码结果是1 0 0 1 0 0 0 1。
one-hot(独热)
如前所述,哑变量是因为大部分算法是按一. 什么是独热编码?中的度量计算的。
可以,为了让非偏序关系的变量的值不偏序,而且点是等距的。利用一热编码,将离散特征值扩展到欧洲空间,某个离散特征值对应欧洲空间的某个点。对离散特征使用一键编码将在特征之间产生距离计算更加合理。离散特征一热码化后,编码后的特征,其实各个维度的特征都可以看成连续的特征。就像连续特征的归一化方法一样,每个一维特征都可以归一化。例如,归一化为[-1,1]或归一化为平均值0和方差1。
特征向量为什么要映射到欧洲空间?
离散特征通过一键编码映射到欧洲空间,因为在回归、分类、聚类等机器学习算法中。计算特征之间的距离或相似度是非常重要的。但是我们常用的距离或相似度计算是欧洲空间的相似度计算,余弦相似度计算是基于欧洲空间的。
三 .独热编码优缺点
优点:一热编码解决了分类器处理属性数据困难的问题,也在一定程度上起到了扩充特征的作用。它的值只有0和1,不同的类型存放在垂直空间。缺点:类别数量多的时候,特征空间会变得很大。在这种情况下,PCA一般可以用于减少维度。并且一个热编码PCA的组合在实践中也是非常有用的。四. 什么情况下(不)用独热编码?
用途:一键编码用于解决类别型数据的离散值问题。否:离散特性的一键编码用于让距离计算更合理。但是,如果特征是离散的,并且可以合理地计算距离而无需一热编码,则一热编码是不必要的。一些变量基于树的算法进行处理,但不基于向量空间测量。数值只是一个类别符号,即没有偏序关系,不需要进行唯一编码。树模型不需要一热编码:对于决策树来说,一热的本质是增加树的深度。一般来说,如果一个热编码的类别数量不是太多,建议优先考虑。
五. 什么情况下(不)需要归一化?
需要:归一化特征需要基于参数的模型和基于距离的模型。否:基于树的方法,不需要归一化特征,如随机森林、装袋和助推。六. 标签编码LabelEncoder
角色:使用LabelEncoder()将转换为连续的数值变量。即对不连续的数字或文本进行编号,例如:
From sklearn .预处理导入labelencoderle=labelencorder()le . fit([1,5,67,100]) le.transform ([1,1,100,67,5])输出:array([0,0,3,2,1])
le=预处理。LabelEncoder() le.fit([巴黎,巴黎,东京,阿姆斯特丹])label encoder()list(le . classes _)[阿姆斯特丹,巴黎,东京] #三类是0 1 2 le。转换([tokyo , tokyo , paris])数组([2,2,1].)列表(le。inverse _ transform ([2,2,1])#逆过程[
限制:以上颜色的例子已经提到了标签编码。标签编码在某些情况下是有用的,但是场景有限。再比如:比如有[狗,猫,狗,老鼠,猫],我们换算成[1,2,1,3,2]。这里有一个奇怪的现象:狗和老鼠的平均值是猫。所以目前还没有广泛使用标签编码。
附:基本的机器学习过程
转载:https://www.cnblogs.com/s壮丽立体声-lps/p/7846414.html
参考:
Quora:同时处理离散和连续输入的好方法是什么?
数据预处理:一键编码
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。