Я создал два графика 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 сообществ (количество функций)
Я точно знаю, что это неверно, однако код и конвейер идентичны, и я не уверен относительно того, почему это происходит. Любой ввод будет действительно полезен.