Networkx: Различия между pagerank, pagerank_numpy и pagerank_scipy?

Кто-нибудь знает о различиях в точности между тремя различными функциями pagerank в Networkx?

У меня есть граф из 1000 узлов и 139732 ребер, а функция «простого» pagerank не работает вообще – все, кроме двух узлов, имеют один и тот же PG, поэтому я предполагаю, что эта функция не работает также для больших графов?

Значения pagerank_numpy также были немного более распространены, чем значения pagerank_scipy . В документации для этой функции говорится, что «это будет самым быстрым и точным для небольших графиков». Что подразумевается под «маленькими» графами?

Кроме того, почему max_iter не допускает аргументы max_iter и tol ?

  • Создание дискретных случайных величин с заданными весами с использованием SciPy или NumPy
  • как найти глобальный минимум в оптимизации python с ограничениями?
  • Поиск соответствия данных из одного набора данных в другом
  • Привязка векторной функции с кривой_fit в Scipy
  • Несколько экземпляров scipy.integrate.ode
  • Интерполяция Python / Scipy (map_coordinates)
  • Scipy интерполяция, как изменить размер / перемасштабировать матрицу 3x3 до 5x5?
  • Периодограмма в Octave / Matlab vs Scipy
  • One Solution collect form web for “Networkx: Различия между pagerank, pagerank_numpy и pagerank_scipy?”

    Каждая из трех функций использует другой подход к решению одной и той же проблемы:

    networkx.pagerank() – это чисто- networkx.pagerank() реализация power-метода для вычисления самого большого собственного / собственного вектора или матрицы Google. Он имеет два параметра, которые управляют точностью – tol и max_iter .

    networkx.pagerank_scipy() – это networkx.pagerank_scipy() матричная реализация Power-метода SciPy. Он имеет те же два параметра точности.

    networkx.pagerank_numpy() – это реализация матрицы NumPy (полная), которая вызывает numpy.linalg.eig() для вычисления самого большого собственного значения и собственного вектора. Эта функция является интерфейсом функции LAPACK dgeev, которая использует метод разложения матрицы (прямой) без каких-либо настраиваемых параметров.

    Все три должны давать одинаковый ответ (в пределах численного округления) для хорошо выполненных графиков, если параметр tol достаточно мал, а параметр max_iter достаточно велик. Какой из них быстрее зависит от размера вашего графика и того, насколько хорошо метод мощности работает на вашем графике.

     In [12]: import networkx as nx In [13]: G=nx.gnp_random_graph(1000,0.01,directed=True) In [14]: %timeit nx.pagerank(G,tol=1e-10) 10 loops, best of 3: 157 ms per loop In [15]: %timeit nx.pagerank_scipy(G,tol=1e-10) 100 loops, best of 3: 14 ms per loop In [16]: %timeit nx.pagerank(G) 10 loops, best of 3: 137 ms per loop 
    Interesting Posts

    Как установить cookie для определенного домена в selenium webdriver с помощью python?

    Как я могу получить маску разрешения файла?

    Как бы вы сделали строку, разделенную запятыми, из списка?

    в веб-драйвере селена, как выбрать правильный iframe

    Можете ли вы пропустить пиксели в изображении без загрузки всего изображения?

    Python работает под управлением Windows: OSError: Недопустимый дескриптор

    Как присоединиться к двум wav-файлам с помощью python?

    Django загрузить изображение – Из формы в Rackspace / S3 без манипуляций

    Найдите две пары пар, которые суммируются с одинаковым значением

    Python: разделите строку, соблюдайте и сохраните цитаты

    В чем разница между смежными и несмежными массивами?

    найти числовые столбцы в pandas (python)

    Как получить ранее не объявленный массив как выход функции в Fortran

    Я получаю ошибку в python3 при импорте механизации

    Эффективное вычисление согласованного по границе среднего значения окрестности

    Python - лучший язык программирования в мире.