我正在處理一個小資料集的問題。收集加班新資料,我想將此新資料添加到我的資料集。我在當前資料集中創建了一個唯一識別符號,我曾經將randomSplit其拆分為訓練集和測驗集:
train, test = unique_lifetimes_spark_df.select("lifetime_id").distinct().randomSplit(weights=[0.8, 0.2], seed=42)
如果我現在更新我的資料集并重新運行拆分,它會產生一個穩定的拆分,只會擴展現有的組,還是我會冒“污染”我的組的風險?
以資料集為例[A, B, C, D, E]。randomSplit將其分為兩組:
第 1 組: [A, B, C, D]
第 2 組: [E]
在某些時候,我會得到一個更新的資料集[A, B, C, D, E, F, G],我想將其合并到我的建模程序中。通過使用randomSplit,我是否可以保證回傳的拆分永遠不會[A, B, C, D]出現在第 2 組中的第 1 組中,反之亦然[E],它永遠不會出現在第 1 組中,因為它最初出現在第 2 組中?
所以更新后的 split 應該隨機決定放在哪里,[F, G]其余的應該留在他們之前分配的組中。
uj5u.com熱心網友回復:
不,您不能保證如果原始資料集增長,對于預先存在的元素,拆分將保持不變。
你可以自己測驗一下:
scala> spark.range(5).randomSplit(Array(0.8, 0.2), seed=42).foreach(_.show)
---
| id|
---
| 1|
| 2|
---
---
| id|
---
| 0|
| 3|
| 4|
---
scala> spark.range(6).randomSplit(Array(0.8, 0.2), seed=42).foreach(_.show)
---
| id|
---
| 0|
| 1|
| 2|
| 3|
| 4|
---
---
| id|
---
| 5|
---
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/364787.html
上一篇:如何設定圖例元素標題?
下一篇:根據天為列創建地圖串列
