簡體   English   中英

微笑 scala api:從數組創建數據幀

[英]smile scala api: create Dataframe from Array

我正在嘗試將微笑集成到我的 Scala 代碼庫中。 特別是,我想訓練一個隨機森林分類器。 常見問題解答中寫道:

大多數 Smile 算法采用簡單的 double[] 作為輸入。 因此,只要樣本在雙數組中,您就可以使用您喜歡的方法或庫來導入數據。

但對於 RandomForest 似乎並非如此,所有擬合方法似乎都將一個公式和一個數據框作為輸入。 就我而言,我有兩個 Array[Array[Double]] 包含兩個不同類的示例:例如,第一個應標記為 0,第二個應標記為 1。 第一個數組具有形狀 (n_samples_0, n_features) 和第二個 (n_samples_1, n_features)

據我所知,在此數據上訓練微笑 randomForest 的唯一方法是首先將這兩個數組轉換為一個微笑數據框,其中包含 n_features + 1 列(每個特征一列+標簽一列)和 n_samples_0 + n_samples_1 行. 進而:

val formula: Formula = "class" ~
val rf = randomForest(formula, df)

因此我的問題是:有沒有辦法從 Scala API 中的數組創建數據幀? 我只能通過讀取不同的文件格式來找到創建 Dataframe 的方法。

我設法通過使用 Smile DataFrames 方法解決了我的問題。

這是一個最小的例子:(X1 和 X0 是包含特征的雙精度數組,每個子數組的大小為 600,X1 包含正類示例的特征,X0 包含負類示例的特征)

val X1: List[Array[Double]] = ???
val X0: List[Array[Double]] = ???
val y1 = X1.map(_ => Array(1))
val y0 = X0.map(_ => Array(0))
val X = (X1 ++ X0).toArray
val y = (y1 ++ y0).toArray
val dfX = DataFrame.of(X)
val dfy = DataFrame.of(y, "class")
val df = dfX.merge(dfy)
val formula: Formula = "class" ~
val rf = randomForest(formula, df)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM