问题标签 [one-hot-encoding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
encoding - 二进制相关性和一种热编码之间的区别?
二元相关性是一种众所周知的处理多标签分类问题的技术,我们为特征的每个可能值训练一个二元分类器:
http://link.springer.com/article/10.1007%2Fs10994-011-5256-5
另一方面,一个热编码器 (OHE) 常用于自然语言处理中,用于对将多个值作为二进制向量的分类特征进行编码:
http://cs224d.stanford.edu/lecture_notes/LectureNotes1.pdf
我们可以认为这两个概念是同一个概念吗?还是有技术差异?
scikit-learn - OneHotEncoding 映射
为了离散化分类特征,我使用了 LabelEncoder 和 OneHotEncoder。我知道 LabelEncoder 按字母顺序映射数据,但是 OneHotEncoder 是如何映射数据的呢?
我有一个 pandas 数据框,dataFeat
有 5 个不同的列和 4 个可能的标签,如上所示。
dataFeat = data[['Feat1', 'Feat2', 'Feat3', 'Feat4', 'Feat5']]
我申请一个labelencoder
这样的,
这就是 LabelEncoder 对标签进行编码的方式
然后我像这样应用 OneHotEncoder
intIndexed.shape = 94,5
和dataFeatY.shape=94,20
。
我对形状有点困惑dataFeatY
- 它不应该也是 95,5 吗?
按照下面的 MhFarahani 回答,我这样做是为了查看标签是如何映射的
这是否意味着标签是这样映射的,还是每列都不同?(这将解释形状为 94,20)
python - scikit learn 中的 OneHotEncoder 混淆
在 Python 2.7(miniconda 解释器)中使用。对下面的例子感到困惑OneHotEncoder
,困惑为什么enc.n_values_
输出是[2, 3, 4]
?如果有人可以帮助澄清,那就太好了。
http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.OneHotEncoder.html
问候,林
python - 将 pandas 数据框的字符串列转换为 0 1 个向量
LabelEncoder
并且OneHotEncoder
适用于 numpy 数组,它将字符串转换为0,1
基于向量的向量。
我的问题是,是否有一个简洁的 API 可以将 pandas 数据框的一列转换为0, 1
向量?我展示了我的代码和熊猫数据框的原始内容123.csv
,假设我想0, 1
对列进行二进制处理c_a
,c_b
, c_c
, 3 列中的每一列都是独立的,我想对0, 1
单独独立的列进行二进制处理。
代码,
123.csv 内容,
numpy 的标签编码器和 OneHotEncoder 示例,
编辑 1,试过get_dummies
了,结果似乎是0.0
和1.0
(似乎float
),有没有办法直接转换成整数?
python - 为什么 LabelEncoder 不读取值?
我试图使用 sklearn 中的 LabelEncoder 和 OneHotEncoder 对数据集进行 1-hot-encoding,方法是首先对每列进行 LabelEncoding,然后在列上执行 OneHotEncoding。注意:我故意将两列的数据帧的第 1 行设为 nan,这样 LabelEncoder 就不会丢失。
这是代码:
这是代码的输出(请注意,在标签编码器的打印类中,有 nan):
python-2.7 - Pandas:如何对分类特征进行热编码
我有一个数据框X
,它有两个分类特征和 41 个数字特征。所以X
总共有 43 个功能。
现在,我想将分类特征转换为数值级别,以便它们可以在RandomForest
分类器中使用。
我已经完成了以下操作,其中0
并1
指出了分类特征的位置:
然后,我连接这两个数据帧:
现在,Xnew
有 63 个特征(F1
有 18 个和F2
4 个特征,其余 41 个来自X
)
这个对吗?有没有更好的方法来做同样的事情?我是否需要删除第一列以避免共线性F1
?F2
python-2.7 - 机器学习:如何在具有分类和数字特征的 pandas 数据帧上应用一种热编码?
一些特征是数字的,例如“毕业率”,而其他特征是分类的,例如学校的名称。我在分类特征上使用标签编码器将它们转换为整数。
我现在有一个带有浮点数和整数的数据框,分别表示数字特征和分类特征(用标签编码器转换)。
我不确定如何继续学习,我需要使用一种热编码吗?如果是这样,我该怎么做?根据我目前的理解,我不能简单地将数据帧传递给 sklearn OneHotEncoder,因为有浮点数。我是否只是将标签编码器应用于所有功能来解决问题?
我的数据框中的示例数据。OPEID 和 opeid6 使用标签编码器进行转换
非常感谢!
python - get_dummies 拆分字符
我有标记的数据,我需要应用单热编码:'786.2'
, 'ICD-9-CM|786.2'
, 'ICD-9-CM'
, '786.2b|V13.02'
, 'V13.02'
, '279.12'
,'ICD-9-CM|V42.81'
是标签。|
意味着文档同时有 2 个标签。所以我写了这样的代码:
结果:
但是,现在我只希望每个文档有 1 个标签:
'ICD-9-CM|786.2'
是'ICD-9-CM'
,
'ICD-9-CM|V42.81|'
是'ICD-9-CM'
。
我怎么能这样分开get_dummies
?
python - Python Pandas get_dummies() 限制。不转换所有列
我的数据框中有 6 列。其中 2 个有大约 3K 的唯一值。当我get_dummies()
在整个数据框或仅在其中一个 2 列上使用时,返回的是具有 3k 值的完全相同的列。get_dummies
无法模拟更大的列。有些列确实会进行一次热编码,但大的则不会。
我想知道 get_dummies 是否仅适用于基数较小的集合。
我相信这也在这里讨论过: Need help with python(pandas) script
apache-spark - 为什么 Spark 的 OneHotEncoder 默认会丢弃最后一个类别?
我想了解 Spark 的 OneHotEncoder 默认删除最后一个类别的原因。
例如:
默认情况下,OneHotEncoder 将丢弃最后一个类别:
当然,这种行为是可以改变的:
问题::
- 在什么情况下需要默认行为?
- 盲目调用可能会忽略哪些问题
setDropLast(False)
? - 作者在文档中的以下陈述是什么意思?
默认情况下不包括最后一个类别(可通过 dropLast 配置),因为它使向量条目总和为 1,因此线性相关。