0
我想從存儲在配置單元表中的數據構建pyspark ML模型。數據是這樣的:如何爲Spark ML聚合長表中的功能
ID | value
---+------
1 | 100
1 | 101
1 | 102
2 | 101
2 | 103
使用純蜂房,我可以有選擇地使用collect_set
的價值觀摺疊成產生這樣的蜂巢陣列:
ID | value
---+-----------
1 | (100, 101, 102)
2 | (101, 103)
的值是類別特徵。對於這個特殊的用例,我很好的將它們看作是稀疏向量1的索引,但是對於一般分類有一個解決方案將會很不錯。我想要做的是將這些值集中到一個特徵向量中,然後我可以將它們反饋給其中一個分類器。
我嘗試使用UDF將數組轉換爲VectorUDT,然後使用VectorIndexer()進行特徵化,但是當我嘗試這種方法時,它抱怨說所有向量的長度都不相同。
收集這些東西的正確方法是什麼?
但不說離開我在同一個地方,當我從蜂巢,這是說不同長度的載體得到它那不想構成特徵? –
回想起後見之明,你udf中的'n'解決了我的問題。我最終預處理了collect_set,然後使用了一個非常不同的udf:udf(lambda l,maxlen:Vectors.sparse(maxlen,{v:1.0 for v in l}),VectorUDT())'一個重要的警告 - 爲此,必須對傳入的數組進行排序! –