これは初心者の質問かもしれませんが、QuantileDiscretizer
をspark 2.1のBucketizer
よりも使用することの利点があるかどうかはわかりません。QuantileDiscretizerとSparkのBucketizerの違い
QuantileDiscretizer
は推定値であり、NAN値を処理すると理解していますが、Bucketizer
はトランスフォーマであり、データにNAN値があるとエラーが発生します。コードの下スパーク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|
+---+----+------+
他の上の1つのいずれかの重要な利点がある場合は私に知らせてください!
最後の質問にお答えできますか? 「大きなデータへのアクセスに違いがなければならないのか?どちらもビンを作る別の戦略です。 – Khan