How do I calculate the probability of each path occurring in a graph? For example I have a graph
df = pd.DataFrame({'column_id':[1,1,1,2,2],
'sequence':['hi','how are you','bye','hi','bye'],
'person':['A','B','A','B','A'],
'type':['Friendly','Friendly','Friendly','Mean','Mean']})
df['source'] = df['sequence']
df['target'] = df.groupby('column_id')['sequence'].transform(lambda x: x.shift(-1))
df1 = df[df['target'].notna()]
df1 = df1[['source','target','person','type']]
df1 = df[df['target'].notna()]
df1 = df1.drop(['sequence'],axis=1)
df1.loc[len(df1.index)+1] = [3, 'A', 'Mean', 'hi', 'run away']
df1.loc[len(df1.index)+1] = [3, 'A', 'Mean', 'run away', 'how are you']
df1.loc[len(df1.index)+1] = [3, 'A', 'Mean', 'how are you', 'bye']
df1.loc[len(df1.index)+1] = [4, 'A', 'Friendly', 'hi', 'how are you']
df1.loc[len(df1.index)+1] = [4, 'A', 'Friendly', 'how are you', 'bye']
df1.loc[len(df1.index)+1] = [5, 'A', 'Friendly', 'hi', 'runaway']
df1.loc[len(df1.index)+1] = [5, 'A', 'Friendly', 'run away', 'how are you']
df1.loc[len(df1.index)+1] = [5, 'A', 'Friendly', 'how are you', 'this is me']
df1.loc[len(df1.index)+1] = [5, 'A', 'Friendly', 'this is me', 'bye']
df1 = df1.reset_index().drop(['index'], axis=1)
df2 = df1.groupby(['source','target']).size().reset_index()
df2 = df2.drop_duplicates(subset=['source','target'],keep='last')
df3 = pd.merge(df1,df2, on=['source','target'], how='left')
df3 = df3.drop('column_id', axis=1)
df3.rename(columns={0:'weight'}, inplace=True)
df3['probability'] = df3['weight']
df3['probability'] = df3['probability']/df3['probability'].sum()
G = nx.from_pandas_edgelist(df3,
source = 'source',
target = 'target',
edge_attr=['person','type','probability'],
create_using=nx.DiGraph())
I want to calculate the probability of each path that is given from
sp = nx.all_simple_paths(G, source='hi', target='bye')
I tried multiplying the probability of each path but the results are not correct.