Я строю некоторый простой код (все еще ученик-новичок), который на основе некоторых переходов строит статистическое дерево.
Код, который я написал до сих пор, следующий:
#each row reflects a specific user
#first row reflects a user that transitions from 1 to 2 to 3 to 4 and 5
smallData=pd.DataFrame(np.array([[1,2,3,4,5],[4,5,6,7,8],[1,2,3,3,3],[1,2,2,3,3],[1,2,3,5,3]]),columns=range(0,5))
inputs=[1,2]
def nextStep(inputs): #
i=len(inputs)
pickedRows= smallData.loc[(smallData.iloc[:,0:i] == inputs).agg(all, axis=1)]
nextTransitions=pickedRows.loc[:,i].value_counts(normalize=True)
slicedTable=pickedRows.loc[:,i+1:]
return nextTransitions,slicedTable
nextStep([1,2])
Out[272]:
(3 0.75
2 0.25
Name: 2, dtype: float64, 3 4
0 4 5
2 3 3
3 3 3
4 5 3)
Что делает следующий шаг, так это вводит здесь переходы 1,2.
A. Находит все строки, которые начинаются с 1,2
B. рассчитывает следующие переходы с процентами. В примере 3 с 75% и 2 с 25%
C. возвращает в качестве результата таблицу, которая включает в себя все переходы последующих последовательностей.
Какая будет структура в python для хранения таких переходов, (ветви и их листья). Является ли подсписки списков наилучшим способом реализации этого или pandas data frame следует использовать.
Я думаю, что код, который я написал выше, должен выполняться рекурсивно, пока вся таблица не будет посещена, и все ветви не будут построены. Как бы вы сохранили промежуточные результаты из функции nextStep?
Я хотел бы поблагодарить вас за ваш ответ.
С уважением
Alex