между узлами в Networkx Graph не обнаружено ребер - PullRequest
0 голосов
/ 19 июня 2020

Я создал два графика networkX на основе корреляции Пирсона данных, которые у меня есть. Первый набор данных имеет следующие размеры:

count1=(20501,498)
count2=(20501, 31)

данные являются подмножеством, содержащим 1800 интересующих функций из 20501, поэтому форма становится:

countsub1=(1800,498)
countsub2=(1800,31)

снова, те 1800 в обоих примерах одинаковы.

Затем я выполняю следующий код для ОБЕИХ наборов по отдельности:

corrsub1=pd.DataFrame.corr(countsub1, method="pearson")
corrsub2=pd.DataFrame.corr(countsub2, method="pearson")

networkGraph1=nx.Graph(corrsub1).to_undirected()
networkGraph2=nx.Graph(corrsub2).to_undirected()


#remove edges below Pearson correlation threshold

edge_weights = nx.get_edge_attributes(networkGraph1,'weight')
networkGraph1.remove_edges_from((e for e, w in edge_weights.items() if w <0.8))
#remove non-connected vertices
for component in list(nx.connected_components(networkGraph1)):
    if len(component)<2:
        for node in component:
            networkGraph1.remove_node(node)

.... и то же самое для других ...

community detection
comm1 = community.best_partition(networkGraph1)
comm2 = community.best_partition(networkGraph2)

все шаги выполняются идентично ... в ОБЕИХ таблицах корреляции есть значимые значения корреляции> 0,8 и c. И я знаю, что существуют сообщества, существующие друг с другом в ОБЕИХ таблицах корреляции, как я наблюдал в iGraph. На самом деле существует не менее 20 узлов с ребрами, которые соединяют друг друга.

Проблема: сеть сгенерирована с 498 отсчетами выборок, генерируется без проблем и создала ~ 50 сообществ ...

Сеть с 31 выборкой (network2) не отображает ни одного узла, когда вызов nx.draw_networkx. Когда я запускаю:

pos=nx.fruchterman_reingold_layout(networkGraph2, seed=50)

, он показывает:

'feature1': array ([nan, nan]), ... от первой до последней функции

когда Я запускаю pos .. для networkGraph1, координаты отображаются следующим образом:

'feature1': array ([- 0.0988057, -0.48840776]),

Кроме того, когда я запускаю community.best_partition :

NetworkGraph1 = ~ 50 сообществ networkGraph2 = 1800 сообществ (количество функций)

Я точно знаю, что это неверно, однако код и конвейер идентичны, и я не уверен относительно того, почему это происходит. Любой ввод будет действительно полезен.

...