На данный момент я создал двудольный график networkx, который отображает расстройства на симптомы. Таким образом, расстройство может быть связано с одним или несколькими симптомами. Кроме того, у меня есть некоторая базовая c статистика, например, симптомы по крайней мере с одним расстройством и c.
import networkx as nx
csv_dictionary = {"Da": ["A", "C"], "Db": ["B"], "Dc": ["A", "C", "F"], "Dd": ["D"], "De": ["E", "B"], "Df":["F"], "Dg":["F"], "Dh":["F"]}
G = nx.Graph()
all_symptoms = set()
for disorder, symptoms in csv_dictionary.items():
for i in range (0, len(symptoms)):
G.add_edge(disorder, symptoms[i])
all_symptoms.add(symptoms[i])
symptoms_with_multiple_diseases = [symptom for symptom in all_symptoms if G.degree(symptom) > 1]
sorted_symptoms = list(sorted(symptoms_with_multiple_diseases, key= lambda symptom:
G.degree(symptom)))
Мне нужно найти расстройства, которые имеют по крайней мере два симптома . Итак, расстройства, которые имеют два общих симптома друг с другом. Я провел некоторое исследование и думаю, что мне нужно добавить веса для моих ребер, основываясь на том, как они соединяются, но я не могу обернуть это вокруг головы.
Итак, в приведенном выше примере Da и D c разделяют два симптома (A и C).