Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 一个热编码器行业规范是什么,在列车/拆分之前或之后进行编码_Python_One Hot Encoding - Fatal编程技术网

Python 一个热编码器行业规范是什么,在列车/拆分之前或之后进行编码

Python 一个热编码器行业规范是什么,在列车/拆分之前或之后进行编码,python,one-hot-encoding,Python,One Hot Encoding,我知道有些人已经回答了这个问题。不过,我仍在努力澄清这一点 我仍然对一个热编码器有点困惑。我只是在想,如果我们在分裂之前进行编码,测试集中就不应该有任何“信息泄漏”。那么,为什么人们主张在之后进行编码呢?不是一个热编码器只是用来将分类变量转换成二进制 如果我们在分裂后进行编码,结果会有很大的差异,正如这里所指出的: 我只是想知道什么是行业规范 感谢一种热编码是一种指定数据项所需类别的技术。它是整数编码的替代品,您只需将整数放入其中。一个简单的例子是: 比如说,我们有三个班:猫、狗、人 In in

我知道有些人已经回答了这个问题。不过,我仍在努力澄清这一点

我仍然对一个热编码器有点困惑。我只是在想,如果我们在分裂之前进行编码,测试集中就不应该有任何“信息泄漏”。那么,为什么人们主张在之后进行编码呢?不是一个热编码器只是用来将分类变量转换成二进制

如果我们在分裂后进行编码,结果会有很大的差异,正如这里所指出的:

我只是想知道什么是行业规范


感谢

一种热编码是一种指定数据项所需类别的技术。它是整数编码的替代品,您只需将整数放入其中。一个简单的例子是: 比如说,我们有三个班:猫、狗、人

In integer encoding we would give the classes as (say): 
Cat - 1, Dog - 2, Human - 3
In One-hot encoding, we would do these classes as:
Cat - [1,0,0]. Dog - [0,1,0], Human - [0,0,1]
因此,您可以得到一个想法,
一个热编码只适用于分类数据


因此,必须以同质的方式标记整个数据集<代码>因此,即使在测试列车拆分之前,也必须执行一个热编码。

特别是对于一个热编码器,它不会有太大的区别,除非拆分中没有表示类别

但在这种情况下,存在信息泄漏。通过分割训练/测试数据,您可以尝试模拟模型(包括所有特征选择/转换!)的泛化程度。如果在测试集中存在类别,但在训练集中不存在类别,那么可以说在真实世界中肯定存在您的整个数据集中不包含的类别。在这种情况下,如果你在分裂前编码,你就是背叛了自己

不过,在某些情况下,您可能希望在之前进行编码。如果您的数据点很少,并且正在进行采样以获得平衡的拆分,那么您可能希望确保每个拆分都获得所有类别,或者类似的内容。在这种情况下,在之前进行编码可能会很有用


通常,请始终记住,特征选择和转换是模型的一部分。有一种热编码特别依赖于数据,因此适用范围更广。

对,这很有意义。明白了,谢谢你的澄清!我只是好奇为什么有些人主张事后再做。但是,有没有什么情况下,你必须这样做后?嗨,谢谢你的回答!关于您的第一行,在什么情况下类别不会在拆分中表示?我在想,你的数据集在分裂之前是同质的,这有意义吗?谢谢你再次回答!如果我理解正确的话,它将删除一些特性,编码,然后拆分?对不起,我只是有点困惑this@Jonathan当一个类很少见,所以只有很少的例子,而有些拆分只是没有例子。我的意思是,一个不存在的特性与一个总是具有相同值的特性具有相同的值,我猜。