Я пытаюсь использовать 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.
m - это как-то поплавок, который вы не можете использовать в диапазоне, вы можете попробовать лить в int. –
m является переменной в пакете networkx, а не в моем коде. Я не уверен, что представляет собой m, и я боюсь вносить в него изменения, так как это может привести к другим проблемам. – sophiadw
Ну ладно, да, глядя на источник, нет оговорок по типу, т - максимальная длина ключей, возвращаемых из 'attribute_mixing_dict'. Кажется, это ошибка. –