У меня есть несколько векторов переходов, и я хочу построить древовидную структуру для хранения статистики переходов. То, что я хочу, основано на конкретном входе (число переходов X), чтобы вернуть листья со своей статистикой.
Я довольно новичок в Python, и это далеко, я смог пойти
Ниже я прилагаю написанный мной код, который, я думаю, находится в форме, которую люди могут выполнять напрямую. Я также надеюсь, что люди с подобными проблемами, возможно, могут извлечь выгоду
#each row reflects a specific user
#first row is transition 1 to transition 2 and so on
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): # make data table an input feature
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
step=nextStep(inputs)
То, что я реализовал, - это функция, которая работает с различными длинами входов (да, это было трудно для меня).
Затем код вычисляет статистику следующих переходов, а также следующую вложенную таблицу, где расширение дерева должно произойти в следующем раунде.
Если я не ошибаюсь, это рекурсивный тип проблемы, когда вышеуказанная функция должна выполняться до тех пор, пока не будет посещена вся таблица. Разве это не правильно?
Как сохранить результаты функции шага и связать их с предыдущим и следующим результатами?
Большое спасибо действительно за вашу помощь.
С уважением
Alex