python 2.7:从集合列表创建字典
Posted
技术标签:
【中文标题】python 2.7:从集合列表创建字典【英文标题】:python 2.7 : create dictionary from list of sets 【发布时间】:2015-12-17 15:31:25 【问题描述】:执行一些操作后,我得到一个 list
的 set
如下:
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)
我想从这个列表中创建:
RDD
字典,例如:
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
我想继续计算以产生信心和提升
我尝试执行for
循环以从列表中获取每个项目。
问题是这里是否有另一种更好的方法来创建 rdd 和/或列表?
提前谢谢你。
【问题讨论】:
a) 如果需要 RDD,为什么首先要收集 b) 字典中的键应该是什么类? 您确定字典适合您的主节点吗? 关于 collect() 的重要提示,我忘记了。不确定我理解第二条评论 【参考方案1】:如果您想要RDD
,请不要收集freqItemsets
model = FPGrowth.train(transactions, minSupport=0.2, numPartitions=10)
freqItemsets = model.freqItemsets()
你当然可以parallelize
结果 = model.freqItemsets().collect() sc.parallelize(结果)
我不确定你为什么需要这个(它看起来像 XY problem 但您可以对收集的数据使用理解:
tuple(x.items): x.freq for x in result
或
",".join(x.items): x.freq for x in result
一般来说,如果您想对数据应用进一步的转换,请不要直接在 Spark 中收集和处理数据。
您还应该看看 Scala API。它已经实现了association rules。
【讨论】:
我的海豚是计算MBA的。 FPGrowth 是第一步。之后我会计算 Confidence 和 Lift,所以我需要访问 FPGrowth 的输出。这就是原因。我想如何访问这些项目以进行进一步计算。非常感谢您的帮助!目前我从 Spark 和 PySpark 开始,我理解必须学习 scala :(以上是关于python 2.7:从集合列表创建字典的主要内容,如果未能解决你的问题,请参考以下文章