gpt4 book ai didi

apache-spark - Spark中QuantileDiscretizer和Bucketizer之间的区别

转载 作者:行者123 更新时间:2023-12-04 04:23:05 25 4
gpt4 key购买 nike

这可能是一个新手问题,但是我无法理解在Spark 2.1中使用QuantileDiscretizer而不是Bucketizer有什么特定的优势吗?

我知道QuantileDiscretizer是一个估算器,可以处理NAN值,而Bucketizer是一个转换器,如果数据具有NAN值,则会引发错误。

从spark documentation中,下面的代码产生类似的输出

from pyspark.ml.feature import QuantileDiscretizer
from pyspark.ml.feature import Bucketizer

data = [(0, 18.0), (1, 19.0), (2, 8.0), (3, 5.0), (4, 2.2)]
df = spark.createDataFrame(data, ["id", "hour"])

result_discretizer = QuantileDiscretizer(numBuckets=3, inputCol="hour",outputCol="result").fit(df).transform(df)
result_discretizer.show()

splits = [-float("inf"),3, 10,float("inf")]
result_bucketizer = Bucketizer(splits=splits, inputCol="hour",outputCol="result").transform(df)
result_bucketizer.show()

输出 :
+---+----+------+
| id|hour|result|
+---+----+------+
| 0|18.0| 2.0|
| 1|19.0| 2.0|
| 2| 8.0| 1.0|
| 3| 5.0| 1.0|
| 4| 2.2| 0.0|
+---+----+------+

+---+----+------+
| id|hour|result|
+---+----+------+
| 0|18.0| 2.0|
| 1|19.0| 2.0|
| 2| 8.0| 1.0|
| 3| 5.0| 1.0|
| 4| 2.2| 0.0|
+---+----+------+

请让我知道一个相对于另一个是否有明显的优势吗?

最佳答案

QuantileDiscretizer根据数据确定存储分区。
Bucketizer将数据放入您通过splits指定的存储桶中。

因此,当您知道所需的存储桶时,请使用Bucketizer,并使用QuantileDiscretizer为您估计拆分。

该示例中的输出相似是由于人为设计的数据和选择的splits。在其他情况下,结果可能会有很大的不同。

关于apache-spark - Spark中QuantileDiscretizer和Bucketizer之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43386188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com