如何计算无循环的pyspark中的转换概率

时间:2019-07-02 15:26:18

标签: pyspark markov-chains

我有一个包含数百万条记录的数据集,我想使用此数据实现马尔可夫链模型。

我的火花表如下:

DF = spark.sparkContext.parallelize([ 
[('row1'),'NA', 'c1','c1', 'c1'],
[('row2'),'NA','NA','c1', 'c1'],
[('row3'),'c3','c2','c4', 'c4'],
[('row4'),'c4','c2','c1', 'c1'],
[('row5'),'c5','c3','c1', 'c1'],
[('row6'),'c3','c3','c1', 'c1'],
[('row7'),'c2','c3','c3', 'c3'],
[('row8'),'c1','c1','NA', 'c1']
]).toDF(["row", "year1",'year2',"year3","year4"])
DF.show()

我想根据这些数据计算转换矩阵,以下是一些注意事项:

  1. 有300多个州(从c1到c300)
  2. 根据合同的开始日期,某些客户的州为NA。

我知道我必须对所有转换进行计数,并构造一个计数矩阵,最后对矩阵进行归一化。

在避免UDF中出现循环的同时获取过渡矩阵的最佳方法是什么?

0 个答案:

没有答案