2015-12-17 5 views
1

После выполнения некоторых операций я получаю list из set следующего образом:питона 2.7: создание словаря из списка наборов

from pyspark.mllib.fpm import FPGrowth 

FreqItemset(items=[u'A_String_0'], freq=303) 
FreqItemset(items=[u'A_String_0', u'Another_String_1'], freq=302) 
FreqItemset(items=[u'B_String_1', u'A_String_0', u'A_OtherString_1'], freq=301) 

Я хотел бы создать из этого списка:

  1. РД

  2. словарь, например:

    key: A_String_0 value: 303 
    key: A_String_0,Another_String_1 value: 302 
    key: B_String_1,A_String_0,A_OtherString_1 value: 301 
    

Я хотел бы продолжить расчеты для получения доверия и Lift

Я попытался выполнить for петли, чтобы каждый элемент из списка.

Вопрос в том, есть ли другой, лучший способ создать rdd и/или списки здесь?

Заранее спасибо.

+0

a) Почему вы собираете в первую очередь, если вам нужен RDD. B) Каким должен быть класс ключей в словаре? – zero323

+0

Вы уверены, что словарь вписывается в ваш главный узел? –

+0

отличный совет о collect(), я забыл об этом. Не уверен Что я понимаю второй комментарий – Toren

ответ

1
  1. Если вы хотите RDD просто не собирают freqItemsets

    model = FPGrowth.train(transactions, minSupport=0.2, numPartitions=10) 
    freqItemsets = model.freqItemsets() 
    

    вы можете, конечно, parallelize

    результат = model.freqItemsets(). (Сбор) sc.parallelize (результат)

  2. Я не уверен, зачем вам это нужно (это выглядит как XY problem но вы можете использовать постижения на собранные данных:

    {tuple(x.items): x.freq for x in result} 
    

    или

    {",".join(x.items): x.freq for x in result} 
    

Вообще говоря, если вы хотите применить дополнительные преобразования ваших данных не собирать и обрабатывать данные непосредственно в Спарк.

Также вы должны взглянуть на Scala API. Он уже реализует association rules.

+0

Моя морская свинка должна рассчитать MBA. FPGrowth - это первый шаг. Я буду вычислять доверие и лифтинг после, так что мне нужен доступ к выходу FPGrowth. Вот в чем причина . Я подумал, как получить доступ к элементам для дальнейшего расчета. Большое спасибо за помощь ! В настоящее время я начал с Spark и PySpark, я понял, что нужно также изучить scala :( – Toren

Смежные вопросы