PrefixSpan 模型输入 RDD 格式

数据挖掘 数据挖掘 阿帕奇火花 pyspark
2022-02-19 18:10:54

我试图了解 PrefixSpan 模型(pyspark)的输入。我认为在输入 RDD 中,每一行都应该是一个列表。但是,当我查看源代码时,每一行实际上都是一个列表。为什么它需要一个列表而不是列表?谢谢!

https://github.com/apache/spark/blob/master/mllib/src/main/scala/org/apache/spark/mllib/api/python/PythonMLLibAPI.scala

 def trainPrefixSpanModel(
      data: JavaRDD[java.util.ArrayList[java.util.ArrayList[Any]]],
      minSupport: Double,
      maxPatternLength: Int,
      localProjDBSize: Int ): PrefixSpanModelWrapper = {...}
1个回答

你刚才问过你的问题,但也许它对某人有帮助。

在他们说的 mllib 指南中,请参阅 Jian Pei 和他的团队的 PrefixSpan 论文,这里有另一个完全可用的版本

在那里,他们解释了一个序列是由元素组成的,这些元素由项目组成:例如“一个序列 (a (abc)(ac)d(cf)) 有五个元素:a , (abc), (ac) , d (cf) 其中项目 a 和 c 分别在不同元素中出现不止一次。”(取自论文)

这就是为什么你需要一个列表列表。

请注意,元素中的项目不应该遵循任何特定的顺序(在论文中它们被假定按字母顺序排序)。因此,如果您正在处理时间序列,我认为同时到达的事件(因此没有特定的顺序)将形成一个元素的项目。