微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何从 Networkx 图中获得每条路径出现的概率?

如何解决如何从 Networkx 图中获得每条路径出现的概率?

如何计算图中每条路径出现的概率? 例如我有一个图表

df = pd.DataFrame({'column_id':[1,1,2,2],'sequence':['hi','how are you','bye','hi','bye'],'person':['A','B','A','A'],'type':['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,'run away']
df1.loc[len(df1.index)+1] = [3,'run away','how are you']
df1.loc[len(df1.index)+1] = [3,'bye']
df1.loc[len(df1.index)+1] = [4,'how are you']
df1.loc[len(df1.index)+1] = [4,'bye']
df1.loc[len(df1.index)+1] = [5,'runaway']
df1.loc[len(df1.index)+1] = [5,'how are you']
df1.loc[len(df1.index)+1] = [5,'this is me']
df1.loc[len(df1.index)+1] = [5,'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',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()) 

我想计算从给出的每条路径的概率

sp = nx.all_simple_paths(G,source='hi',target='bye')

我尝试将每条路径的概率相乘,但结果不正确。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。