2016-02-08 2 views
3

Я пытаюсь использовать networkx для вычисления числовой сортировки на основе числового атрибута, который я установил для узлов. Мои атрибуты узла - это float. Когда я вызываю функцию сортировки:networkx расчет числовой сортировки требует int?

assort = nx.numeric_assortativity_coefficient(G,'float_attr') 

У меня были следующие ошибки.

File "/some dir.../networkx/algorithms/assortativity/correlation.py", line 229, in numeric_assortativity_coefficient 
a = numeric_mixing_matrix(G,attribute,nodes) 
File "/some dir.../networkx/algorithms/assortativity/mixing.py", line 193, in numeric_mixing_matrix 
mapping=dict(zip(range(m+1),range(m+1))) 
TypeError: range() integer end argument expected, got float. 

Я проверил documentation page из NetworkX алгоритма assortativity и не говорят, что числовые атрибуты должны быть внутр. Кто-нибудь знает, если это требуется?

BTW, я использовал ту же сеть и атрибут пола (установленный в 0 и 1) для вычисления как атрибута, так и числовой сортировки. У меня не было проблем с этим. Таким образом, кажется, что проблема связана с типом int/float атрибута node.

+0

m - это как-то поплавок, который вы не можете использовать в диапазоне, вы можете попробовать лить в int. –

+0

m является переменной в пакете networkx, а не в моем коде. Я не уверен, что представляет собой m, и я боюсь вносить в него изменения, так как это может привести к другим проблемам. – sophiadw

+0

Ну ладно, да, глядя на источник, нет оговорок по типу, т - максимальная длина ключей, возвращаемых из 'attribute_mixing_dict'. Кажется, это ошибка. –

ответ

2

проблема решается путем преобразования переменного с плавающей точкой в ​​междунар, используя следующий метод

int(round(float_attr*1000, 0)) 

представленного вопрос here и получил подтверждающий ответ, что он имеет дело только с дискретными значениями Int.

Peformance-wise, так как моя сеть не огромна (200+ узлов), все равно требуется < 1 мин, чтобы сделать расчет.

+0

Это был быстрый поворот, вы также можете принять свой собственный ответ. –

Смежные вопросы