pyspark - 如何将 FPGrowth 项集限制为 2 或 3

我正在使用 jupyter notebook 在 python3.6 中使用 pyspark 运行 FPGrowth 算法。当我试图保存生成的规则的关联规则输出是巨大的。所以我想限制结果的数量。这是我试过的代码。我还更改了 spark 上下文参数。

Maximum Pattern Length 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 派斯帕克 Windows 10

最佳答案

根据上述讨论和点击此链接,它帮助我解决了问题。

'str' object is not callable TypeError

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

https://stackoverflow.com/questions/56822443/

相关文章:

c# - Asp.net core Identity登录成功重定向回登录页面

c# - 在不更改 url 的情况下显示自定义页面

javascript - 让 WebStorm 识别 jest.setupFilesAfterEnv

python - 如何使用 python 在我的 github 帐户上创建远程 git 存储库或使用

javascript - 如何将组添加到 buefy b-taginput?

c# - 如何在 Flutter 中使用外部 DLL(Dot Net)?

javascript - 如何在javascript中将文件移动到drive api v3中的垃圾桶

python - 在 zipapp 存档中嵌入 numpy

ruby - Jekyll:尽管安装了最新版本,但命令未发现问题

angular - Uncaught TypeError : ace. acequire 不是函数