Как ограничить наборы FPGrowth до 2 или 3 - PullRequest
2 голосов
/ 30 июня 2019

Я использую алгоритм FPGrowth с использованием pyspark в python3.6 с использованием ноутбука jupyter. Когда я пытаюсь сохранить правила ассоциации, вывод сгенерированных правил огромен. Поэтому я хочу ограничить количество последовательных. Вот код, который я пробовал. Я также изменил параметры контекста искры.

Максимальная длина шаблона fpGrowth (Apache) PySpark

from pyspark.sql.functions import col, size
from pyspark.ml.fpm import FPGrowth
from pyspark.sql import Row
from pyspark.context import SparkContext
from pyspark.sql.session import SparkSession
from pyspark import SparkConf

conf = SparkConf().setAppName("App")
conf = (conf.setMaster('local[*]')
        .set('spark.executor.memory', '100G')
        .set('spark.driver.memory', '400G')
        .set('spark.driver.maxResultSize', '200G'))
sc = SparkContext.getOrCreate(conf=conf)
spark = SparkSession(sc)
R = Row('ID', 'items')
df=spark.createDataFrame([R(i, x) for i, x in enumerate(lol)])
fpGrowth = FPGrowth(itemsCol="items", minSupport=0.7, minConfidence=0.9)

model = fpGrowth.fit(df)
ar=model.associationRules.where(size(col('antecedent')) == 2).where(size(col('cosequent')) == 1)

ar.cache()
ar.toPandas().to_csv('output.csv')
     It gives an error


   TypeError Traceback (most recent call last)
   <ipython-input-1-f90c7a9f11ae> in <module>

   ---> 73 ar=model.associationRules.where(size(col('antecedent')) == 
  2).where(size(col('consequent')) == 1)
   TypeError: 'str' object is not callable

Может кто-нибудь помочь мне решить проблему.

Здесь lol - список списка транзакций: [['a', 'b'], ['c', 'a', 'e'] ....]

Python: 3.6.5 Pyspark Windows 10

1 Ответ

0 голосов
/ 01 июля 2019

Из приведенного выше обсуждения и перехода по этой ссылке мне удалось решить проблему.

Объект 'str' не может быть вызван TypeError

   import pyspark.sql.functions as func
   model.associationRules.where(func.size(func.col('antecedent')) == 1).where(func.size(func.col('consequent')) == 1).show()
...