QuantileDiscretizer генерирует меньше ведер - PullRequest
0 голосов
/ 24 сентября 2019

Сначала я опишу проблему (не могу получить точный набор данных, и не уверен, как можно создать набор данных для вас, чтобы попробовать), я надеюсь, что я все еще могу получить некоторую помощь

Я использую QuantileDiscretizerпопробуйте разделить клиентов на 10 групп (с одинаковым номером - дециль) в зависимости от того, сколько продуктов они купили (n_pro).Однако у меня есть только 8 групп, и количество каждой группы не одинаково или близко.Я также проверяю и исключаю причину «недостаточно разделить число n_pro». У меня число n_pro min равно 1, а максимальное равно 203, и около 160 различных чисел

cust_item =sale.groupBy("cust_no").agg(f.countDistinct("product_skey").cast("float").alias("n_pro"))
discretizer = QuantileDiscretizer(numBuckets=10, inputCol="n_pro", outputCol="n_deci_sale")
cust_quant = discretizer.fit(cust_item).transform(cust_item)

в качестве проверкиЯ сделал это

cust_quant.groupBy("n_deci_sale").agg(f.countDistinct("member_no").alias("n_cust"),f.count("*").alias("n_row")).show()

и у меня есть результат enter image description here

, затем я проверяю, как выглядит n_pro в данных

cust_item.groupBy("n_pro").agg(f.count("*").alias("n_row")).show()

тогда у меня есть это, что означает, что n_pro это float (), продолжает число и имеет более 8 чисел, так что я думаю, что QuantileDiscretizer должен иметь возможность использовать более 8 групп, верно?

enter image description here

...