我有一个包含数百万条记录的数据集,我想使用此数据实现马尔可夫链模型。
我的火花表如下:
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()
我想根据这些数据计算转换矩阵,以下是一些注意事项:
我知道我必须对所有转换进行计数,并构造一个计数矩阵,最后对矩阵进行归一化。
在避免UDF中出现循环的同时获取过渡矩阵的最佳方法是什么?