我剛剛開始使用Spark和Spark ML,並且發現它比Python和sklearn更困難。是否可以爲Spark ML中的隨機森林製作通用培訓管道?
開發時間要大得多,所以我想知道是否可以製作一個適用於任何(足夠小)數據集並訓練隨機森林分類器的通用管道。理想情況下,我會創造像
def trainClassifier(df: DataFrame, labelColumn: String) {
...
}
在星火很多的開發時間都花在編碼列數值列,然後形成一個矢量出來的特點,使星火ML的隨機森林實際上可以一起工作的功能它。因此,人們結束了寫線條狀
val indexer = new StringIndexer()
.setInputCol("category")
.setOutputCol("categoryIndex")
.fit(df)
val indexed = indexer.transform(df)
val encoder = new OneHotEncoder()
.setInputCol("categoryIndex")
.setOutputCol("categoryVec")
val encoded = encoder.transform(indexed)
所以我的問題更是一個設計問題(請告訴我到不同的網站,如果合適的話)有關如何編寫一個通用的培訓職能進行分類,將與任何工作DataFrame
,但它也是一個關於Spark的問題,我在問Spark中是否可行這種事情(所以這是一個API問題,所以它更適合於stackoverflow)?
編輯:我的意思是我不指定列和手動轉換每個新數據幀的列。我想要一個函數trainClassifier
,它將採用具有不同列和不同列類型的各種數據框。除了labelColumn之外的所有列迭代並將它們一起編譯爲分類器可以使用的特徵向量。
我的意思是,我不要指定列並手動轉換每個新數據框的列。我想要一個函數'trainClassifier',它將採用具有不同列和不同列類型的各種數據框。我應該在我的問題中更清楚地說明。我將編輯。 – bourbaki4481472
@ bourbaki4481472請參閱我的答案 - 現在的列是動態生成的:)這就是我認爲你可以做的一切 –