- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 scikit-learn 库的新手,一直在尝试使用它来预测股票价格。我正在浏览它的文档并卡在他们解释 OneHotEncoder()
的部分。这是他们使用的代码:
>>> from sklearn.preprocessing import OneHotEncoder
>>> enc = OneHotEncoder()
>>> enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]])
OneHotEncoder(categorical_features='all', dtype=<... 'numpy.float64'>,
handle_unknown='error', n_values='auto', sparse=True)
>>> enc.n_values_
array([2, 3, 4])
>>> enc.feature_indices_
array([0, 2, 5, 9])
>>> enc.transform([[0, 1, 1]]).toarray()
array([[ 1., 0., 0., 1., 0., 0., 1., 0., 0.]])
有人可以逐步向我解释这里发生了什么吗?我很清楚 One hot encoder 是如何工作的,但我无法弄清楚这段代码是如何工作的。任何帮助表示赞赏。谢谢!
最佳答案
让我们首先写下您的期望(假设您知道 One Hot Encoding 的含义)
未编码
f0 f1 f2
0, 0, 3
1, 1, 0
0, 2, 1
1, 0, 2
编码
|f0| | f1 | | f2 |
1, 0, 1, 0, 0, 0, 0, 0, 1
0, 1, 0, 1, 0, 1, 0, 0, 0
1, 0, 0, 0, 1, 0, 1, 0, 0
0, 1, 1, 0, 0, 0, 0, 1, 0
要编码:
enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2]]),
如果您使用默认的 n_values='auto'
。在使用 default='auto' 时,您指定您的特征(未编码 的列)可能采用的值可以从传递给 fit 的数据列中的值推断出来
。
这将我们带到 enc.n_values_
来自文档:
Number of values per feature.
enc.n_values_
array([2, 3, 4])
上面的意思是f0(第1列)可以取2个值(0, 1),f1可以取3个值(0, 1, 2),f2可以取4个值(0, 1, 2 , 3).
实际上,这些是未编码特征矩阵中特征 f1、f2、f3 的值。
然后,
enc.feature_indices_
array([0, 2, 5, 9])
来自文档:
Indices to feature ranges. Feature i in the original data is mapped to features from feature_indices_[i] to feature_indices_[i+1] (and then potentially masked by active_features_ afterwards)
给定的是特征 f1、f2、f3 可以占据的位置范围(在编码空间中)。
f1: [0, 1], f2: [2, 3, 4], f3: [5, 6, 7, 8]
将向量 [0, 1, 1] 映射到一个热编码空间(在我们从 enc.fit 得到的映射下):
1, 0, 0, 1, 0, 0, 1, 0, 0
怎么做?
f0 中的第一个特征,以便映射到位置 0(如果元素是 1 而不是 0,我们会将其映射到位置 1)。
下一个元素 1 映射到位置 3,因为 f1 从位置 2 开始,元素 1 是 f1 可以取的第二个可能值。
最后,第三个元素 1 位于位置 6,因为它是第二个可能的值 f2,并且 f2 开始从位置 5 开始映射。
希望这能解决一些问题。
关于python - 使用python讲解onehotencoder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42728772/
我有格式的数据,例如 ['1', '5' '6', '5', '2'],其中每个标签可以是 0-9 之间的任意数字的字符。我的数据的性质是名义上的分类,因此它是无序的,随后,我使用 scikit On
我有一个下面列出的原始序列数据帧,我正在尝试使用单热编码,然后将它们存储在一个新的数据帧中,我正在尝试使用以下代码进行操作,但无法存储,因为我得到了之后输出如下: 代码: onehot_encoder
我有多列由分类变量组成,这些变量的形式为 0-4 之间的整数值。但是,所有列都属于同一类别。我尝试使用 scikit learn 中的 OneHotEncoder,但它不会处理列中缺失的类别,这在我在
我有一个简单的代码,可以将分类数据转换为 python 中的一种热编码: a,1,p b,3,r a,5,t 我尝试使用 python OneHotEncoder 转换它们: from sklearn
我正在尝试准备数据以输入决策树和多项朴素贝叶斯分类器。 这就是我的数据的样子(pandas 数据框) Label Feat1 Feat2 Feat3 Feat4 0 1
在 sklearn 0.22 中,categorical_features 参数将被删除,因此以下代码不再可执行: import numpy as np from sklearn.preprocess
我希望将我仅有的一个特征转换为单独的二进制特征: df["pattern_id"] Out[202]: 0 3 1 3 ... 7440 2 7441 2 7442
我正在构建一个神经网络,并且正准备对许多独立(分类)变量使用 OneHotEncoder。我想知道我是否正在使用虚拟变量正确地处理这个问题,或者因为我的所有变量都需要虚拟变量,所以可能有更好的方法。
我是Python新手。我之前只有VBA代码。最近开始使用python进行数据挖掘,但使用python时遇到了问题 我在使用 onehotencoder 正确转换我的类别功能时遇到问题,这是我的代码 f
假设我有一个包含以下列名称的 pandas 数据框: '年龄'(例如 33、26、51 等) '资历'(例如'初级'、'高级'等) “性别”(例如“男”、“女”) '薪水'(例如 32000、4000
我有以下 numpy 矩阵: M = [ ['a', 5, 0.2, ''], ['a', 2, 1.3, 'as'], ['b', 1, 2.3, 'as'], ] M =
我是 Python 中 ML 的新手,对于如何使用分类变量实现决策树感到非常困惑,因为它们由 party 和 ctree 在 中自动编码R。 我想制作一棵具有两个分类独立特征和一个依赖类的决策树。 我
我有一个问题,我试图将转换应用于我的分类特征“国家”和我的其余数字列。我怎么能做到这一点,因为我在下面尝试: preprocess = make_column_transformer( (nu
我想对数据集中 10 个特征中的 3 个分类特征进行编码。我用 preprocessing来自 sklearn.preprocessing这样做如下: from sklearn import prep
该代码包括将 OneHotEncoding 技术应用于 binetflow 文件的两个字段:Proto 和 State。我必须对 5 个文件执行此操作。我能够将下面的代码完美地应用到前两个代码中。当到
我正在阅读有关 Python 中的 One Hot Encoding 的内容,其中有一行我无法解释其含义。代码如下: ohe=preprocessing.OneHotEncoder(dtype=np.
我正在使用sklearn.preprocessing.OneHotEncoder对表单的分类数据进行编码 A=array([[1,4,1],[0,3,2]]) B=array([[1,4,7],[0,
我在使用 OneHotEncoder 仅编码分类列并忽略连续列时遇到问题。无论我在 categorical_features 中指定什么,编码器都会对所有列进行编码。例如: enc = preproc
我有一个包含调查结果的数据框,其中有选项 A-E,并且可以选择多个选项 - 选择可以是“A”或“A;C;D”等。 我将使用这些数据进行一些机器学习,并希望通过 OneHotEncoder 运行它,最终
在使用 OneHotEncoder 转换特征后,我尝试对数据集中的某些特征进行一些数据分析,输出显示特征 13 和特征 21 是最重要的特征,但我如何知道这些特征对应哪些特征到? 最佳答案 您可以使用
我是一名优秀的程序员,十分优秀!