Деревья: рекурсия в питоне и структурах данных - PullRequest
0 голосов
/ 12 мая 2019

У меня есть несколько векторов переходов, и я хочу построить древовидную структуру для хранения статистики переходов. То, что я хочу, основано на конкретном входе (число переходов 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)

То, что я реализовал, - это функция, которая работает с различными длинами входов (да, это было трудно для меня). Затем код вычисляет статистику следующих переходов, а также следующую вложенную таблицу, где расширение дерева должно произойти в следующем раунде.

  1. Если я не ошибаюсь, это рекурсивный тип проблемы, когда вышеуказанная функция должна выполняться до тех пор, пока не будет посещена вся таблица. Разве это не правильно?

  2. Как сохранить результаты функции шага и связать их с предыдущим и следующим результатами?

Большое спасибо действительно за вашу помощь. С уважением Alex

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...