Нужна помощь по python networkx
У меня есть набор данных из примерно 20 000 общих почтовых ящиков и 60 000 идентификаторов электронной почты. 1 идентификатор электронной почты может быть в нескольких почтовых ящиках. Я запустил сетевой график, который в основном связал все подключенные идентификаторы электронной почты (по почтовым ящикам) для формирования кластеров. по большей части я получил кластеры с <100 идентификаторами электронной почты. тем не менее, я получаю один большой кластер из 20 тысяч почтовых ящиков. Теперь мне нужно разбить этот большой кластер на более мелкие части, удалив наименьшее количество ребер. Что было бы хорошим способом определения того, какими должны быть эти ребра, используя networkx. </p>
Ниже приведен код, который я сейчас использую для создания сетевого графа
#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 из набора данных и разбить большой кластер на максимальное количество штук