在我使用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])]
我不确定这些数字的含义是什么,也无法理解这个转换后的数据集。关于这个输出意味着什么的一些澄清会很棒!
答案 0 :(得分:9)
此输出并非特定于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的向量,有三个非零项:
几乎相同的描述适用于HotEncoded1
和HotEncoded2
,Numerical
只是一个标量。在没有看到metadata和构造函数的情况下,不可能多说,但编码变量应该有44和3或45和4级(取决于dropLast
参数)。