了解 Spark 中矢量列的表示 SQL
Understanding Representation of Vector Column in Spark SQL
在我使用 VectorAssembler() 来整合一些 OneHotEncoded 分类特征之前......我的数据框看起来像这样:
| Numerical| HotEncoded1| HotEncoded2
| 14460.0| (44,[5],[1.0])| (3,[0],[1.0])|
| 14460.0| (44,[9],[1.0])| (3,[0],[1.0])|
| 15181.0| (44,[1],[1.0])| (3,[0],[1.0])|
第一列是数字列,其他两列代表 OneHotEncoded 分类特征的转换数据集。应用 VectorAssembler() 后,我的输出变为:
[(48,[0,1,9],[14460.0,1.0,1.0])]
[(48,[0,3,25],[12827.0,1.0,1.0])]
[(48,[0,1,18],[12828.0,1.0,1.0])]
我不确定这些数字的含义,也无法理解这个转换后的数据集。对这个输出的含义进行一些澄清会很棒!
此输出不特定于 VectorAssembler
。它只是 o.a.s.ml.linalg.SparseVector
(Spark < 2.0 中的 o.a.s.mllib.linalg.SparseVector
)的字符串表示形式,其中:
- 表示向量长度的前导数字
- 括号中的第一组数字是非零索引列表
- 括号中的第二组数字是索引对应的值列表
所以(48,[0,1,9],[14460.0,1.0,1.0])
表示一个长度为48的向量,包含三个非零项:
- 14460.0 第0位
- 1.0 在第一位
- 1.0 第 9 位
几乎相同的描述适用于 HotEncoded1
和 HotEncoded2
,而 Numerical
只是一个标量。在没有看到 和构造函数的情况下,不可能知道太多,但编码变量应该有 44 和 3 或 45 和 4 级别(取决于 dropLast
参数)。
在我使用 VectorAssembler() 来整合一些 OneHotEncoded 分类特征之前......我的数据框看起来像这样:
| Numerical| HotEncoded1| HotEncoded2
| 14460.0| (44,[5],[1.0])| (3,[0],[1.0])|
| 14460.0| (44,[9],[1.0])| (3,[0],[1.0])|
| 15181.0| (44,[1],[1.0])| (3,[0],[1.0])|
第一列是数字列,其他两列代表 OneHotEncoded 分类特征的转换数据集。应用 VectorAssembler() 后,我的输出变为:
[(48,[0,1,9],[14460.0,1.0,1.0])]
[(48,[0,3,25],[12827.0,1.0,1.0])]
[(48,[0,1,18],[12828.0,1.0,1.0])]
我不确定这些数字的含义,也无法理解这个转换后的数据集。对这个输出的含义进行一些澄清会很棒!
此输出不特定于 VectorAssembler
。它只是 o.a.s.ml.linalg.SparseVector
(Spark < 2.0 中的 o.a.s.mllib.linalg.SparseVector
)的字符串表示形式,其中:
- 表示向量长度的前导数字
- 括号中的第一组数字是非零索引列表
- 括号中的第二组数字是索引对应的值列表
所以(48,[0,1,9],[14460.0,1.0,1.0])
表示一个长度为48的向量,包含三个非零项:
- 14460.0 第0位
- 1.0 在第一位
- 1.0 第 9 位
几乎相同的描述适用于 HotEncoded1
和 HotEncoded2
,而 Numerical
只是一个标量。在没有看到 dropLast
参数)。