正在寻找有关python networkx的帮助
我有一个大约20k个共享邮箱和60K个电子邮件ID的数据集。1个电子邮件id可以位于多个邮箱中。我运行了网络图,它基本上将所有连接的电子邮件ID(通过邮箱)链接起来,形成集群。在大多数情况下,我使用<;100个电子邮件ID。然而,我最终得到了一个20k+邮箱的大集群。我现在需要通过删除最少数量的边,将这个大簇分解成更小的片段。使用networkx识别这些边的好方法是什么
下面是我目前用来创建网络图的代码
#read from excel with 2 columns 'Shared_MailBox_Name', 'email_id'
xls = pd.ExcelFile(input_file_shared_mailbox)
df = pd.read_excel(xls, sheet_name = sheet_name_shared_mailbox)
#create network graph
g = nx.Graph()
g.add_edges_from(df.itertuples(index=False))
connected_components = nx.connected_components(g)
# Find the component id of the nodes
node2id = {}
for cid, component in enumerate(connected_components):
for node in component:
node2id[node] = cid
df['Ring#'] = df['Shared_MailBox_Name'].map(node2id) #Assign Cluster Number
举个例子; 如果数据如下所示,那么我想知道A、B和C(而不是太多的D、E和F),这样我就可以从数据集中删除A、B、C,并将大集群分成最大数量的部分
目前没有回答
相关问题 更多 >
编程相关推荐