У меня есть набор данных из миллиона записей, и я хотел бы реализовать модель цепочки Маркова, используя эти данные.
Моя таблица искр выглядит следующим образом:
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()
Я хочу рассчитать матрицу перехода по этим данным, и вот некоторые примечания:
- есть ещечем 300 штатов (от c1 до c300)
- В зависимости от даты начала контракта, штаты являются NA для некоторых клиентов.
Я знаю, что мне нужно подсчитать все переходы, построить матрицу отсчетов и, наконец, нормализовать матрицу.
Как лучше всего получить матрицу переходов, избегая при этом цикловв UDFs?