随机分割 PySpark 数据框的值

3
我有一个很大的数据框(100GB)在PySpark中,我想将其分成训练、测试和验证集。问题是,我之前已经做过这个操作,它也起作用了,但这一次尝试时,返回的数据框中所有的值都被更改为1或0。
唯一不同的是,我删除了两列字符串列。
当包含字符串的列在数据框中时,代码似乎按预期工作,即不会更改数据框的值。
我在AWS EMR PySpark的Jupyter笔记本上运行。
dataframe.show()

产量
  -+--------------------+----+--------------------+--------------------+----+--------------------+----+--------------------+----+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+-----+--------------------+--------------------+-----+--------------------+-------------------+-----+
|c_3|   c_4|  c_5|  c_6| c_7|                 c_8|                 c_9|                c_10|                c_11|                c_12|                c_13|                c_14|                c_15|                c_16|                c_17|                c_18|                c_19|                c_20|                c_21|                c_22|                c_23|                c_24|                c_25|                c_26|                c_27|                c_28|                c_29|               c_30|                c_31|                c_32|                c_33|                c_34|                c_35|                c_36|                c_37|                c_38|c_39|c_40|c_41|c_42|c_43|c_44|c_45|c_46|c_47|c_48|c_49|                c_50|                c_51|                c_52|                c_53|                c_54|                c_55|                c_56|                c_57|                c_58|                c_59|                c_60|                c_61|                c_62|                c_63|                c_64|               c_65|                c_66|                c_67|                c_68|                c_69|                c_70|                c_71|                c_72|                c_73|                c_74|c_75|c_76|                c_77|c_78|c_79|                c_80|                c_81|c_82|c_83|c_84|                c_85|                c_86|c_87|                c_88|                c_89|c_90|                c_91|c_92|                c_93|c_94|                c_95|                c_96|                c_97|                c_98|                c_99|               c_100|               c_101|c_102|               c_103|               c_104|c_105|               c_106|              c_107|c_108|
+---+------+-----+-----+----+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+-------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+----+----+----+----+----+----+----+----+----+----+----+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+-------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+----+----+--------------------+----+----+--------------------+--------------------+----+----+----+--------------------+--------------------+----+--------------------+--------------------+----+--------------------+----+--------------------+----+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+--------------------+-----+--------------------+--------------------+-----+--------------------+-------------------+-----+
|0.0| 526.0| 57.0| 44.0|13.0|                 0.0|                 0.0|                 0.0|                 0.0|                 0.0|                 0.0|                 0.0| 0.03612167300380228|0.051330798479087454|0.030418250950570342| 0.26045627376425856| 0.18631178707224336| 0.04182509505703422|0.028517110266159693| 0.07034220532319392|0.043726235741444866| 0.06653992395437262| 0.10266159695817491|0.019011406844106463|0.017110266159695818| 0.03231939163498099|0.013307984790874524|                0.0|                 0.0| 0.35361216730038025|0.011406844106463879| 0.13307984790874525| 0.49049429657794674|                 0.0|0.003802281368821292|0.001901140684410646|   0| 1.0| 0.0| 1.0| 0.0| 1.0| 0.0| 1.0| 0.0| 0.0| 1.0|                 0.0| 0.06273764258555133|0.009505703422053232|                 0.0|0.001901140684410646|0.011406844106463879| 0.06653992395437262| 0.06273764258555133| 0.03612167300380228| 0.02091254752851711|0.003802281368821292|                 0.0|                 0.0|0.005703422053231939|0.003802281368821292|                0.0|                 0.0|0.003802281368821292|                 0.0|                 0.0|                 0.0|0.005703422053231939|0.001901140684410646|0.00190 .... etc.

正确无误。

但是注意随机分割:

train, test, validation = dataframe.randomSplit([0.6, 0.3, 0.1], 13)
train.show()

产生收益
+---+---+---+---+---+---+---+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|c_3|c_4|c_5|c_6|c_7|c_8|c_9|c_10|c_11|c_12|c_13|c_14|c_15|c_16|c_17|c_18|c_19|c_20|c_21|c_22|c_23|c_24|c_25|c_26|c_27|c_28|c_29|c_30|c_31|c_32|c_33|c_34|c_35|c_36|c_37|c_38|c_39|c_40|c_41|c_42|c_43|c_44|c_45|c_46|c_47|c_48|c_49|c_50|c_51|c_52|c_53|c_54|c_55|c_56|c_57|c_58|c_59|c_60|c_61|c_62|c_63|c_64|c_65|c_66|c_67|c_68|c_69|c_70|c_71|c_72|c_73|c_74|c_75|c_76|c_77|c_78|c_79|c_80|c_81|c_82|c_83|c_84|c_85|c_86|c_87|c_88|c_89|c_90|c_91|c_92|c_93|c_94|c_95|c_96|c_97|c_98|c_99|c_100|c_101|c_102|c_103|c_104|c_105|c_106|c_107|c_108|
+---+---+---+---+---+---+---+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+----+-----+-----+-----+-----+-----+-----+-----+-----+-----+
|0.0|1.0|1.0|0.0|1.0|0.0|0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 1.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0|   0| 0.0| 0.0| 1.0| 0.0| 1.0| 0.0| 1.0| 0.0| 0.0| 1.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0|  0.0|  0.0|  0.0|  0.0|  0.0|  0.0|  0.0|  0.0|  1.0|
|0.0|1.0|1.0|0.0|1.0|0.0|0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 1.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0|   0| 0.0| 0.0| 1.0| 0.0| 1.0| 0.0| 1.0| 0.0| 0.0| 1.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0| 0.0|  0.0|  0.0|  0.0|  0.0|  0.0|  0.0|  0.0|  0.0|  1.0|... etc

我在任何地方都找不到有类似问题的人。

1个回答

0

我遇到了同样的问题。关键是你权重列表中的权重。尝试将它们更改为类似于 train, test, validation = dataframe.randomSplit([1.0, 1.0, 1.0]) - 这应该会给你一个切片数据框,大约分成三个相等的部分。尝试像这样做一些事情 train test = df.randomSplit([0.6, 0.3,0.1], seed=42),使用不同的种子值或尝试玩弄权重列表。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接