Python networkx kütüphanesi

Umar Igan
3 min readApr 23, 2020
https://networkx.github.io/documentation/networkx-1.5/

Karmaşık ağlar, çok geniş sayıda düğümlerin birbirine bağlanmasıyla oluşur. Doğal hayatta örnekleri internet, sinir sistemi, protein ağları, ulaşım ağları, sosyal ağlar sayılabilir.

Networkx kütüphanesi bu karmaşık ağlar ile çalışmak için python’da tasarlanan oldukça güçlü bir kütüphanedir. Burada networkx kullanarak türkiyedeki illerin arasındaki mesafeyi grafik ile göstermeye çalışacağız

Önce gerekli kütüphaneleri import ediyoruz. Görselleştirmeyi networkz desteğinden dolayı bokeh ile yapacağız. İllerin enlem boylam bilgilerini github’tan json dosyası olarak alacağımız içi olası hatalar ile yüzleşmemek için ssl kütüphanesini de import edip altındaki komutu yazacağız.

Veri konusunda dosya indirip okumak ile uğraşmamak için genelde github’tan ararım. Burada kullandığım enlem ve boylam verisini de aynı şekilde github ile çektim.

Enlem ve boylam kullanarak daire üstünde iki nokta arasındaki mesafenin ölçümünde haversine uzaklık formülü kullanılır. Enlem ve boylam değerleri dereceyi ifade eder onları radyan değerini çevirmek için pi değeri ile çarpıp 180'e bölmemiz yeterli olur. numpy radian fonksiyonu ile kolayca yapabiliriz.

Sklearn DistanceMetric sınıfı bize bize birçok aralık ölçüm fonksiyonu sağlamaktadır haversine’i buradan kolayca kullanabiliriz . Belirtilen 6373 dünyanın yarıçabını ifade eder. Çıkacak sonuç tüm iller için km cinsinden aralarındaki mesafeyi gösteren aşağıdaki gibi bir dataframe olması beklenir.

unstack() fonksiyonun kullanarak bu verimizi iller ve aralarındaki mesafe olacak şekilde güncelleyelim ve bunu bir text dosyası olarak kaydedelim..

unstacked.sample(5) yazarsanız, aşağıdaki gibi bir sonuç görmelisiniz.

Artık network’umuzu oluşturabiliriz. networkx’te edge için node’ların bağlantısı diyebiliriz bu örneğimizde (adana antalya) edge olur, node ise buğum ya da düğüm anlamına gelir örneğimizde adana bir node olur .

Görüntülemeye başlamadan önce node’larımız boyutunu aşağıda yazan formül ile normalize ediyoruz.

Burada oluşturacağımız diyagramın görselleştirilmesi için bokeh kütüphanesi ile parametreleri belirtiyoruz.

Bunun sonucunda aşağıdaki. gibi interaktif bir görsel elde edebilirsiniz.

Networkx’in mekanizması günlük hayatta biyoloji, harita bilimi gibi alanlarda kullanılır ayrıca google page rank algoritmasının derinlerinde de yine bu mekanizma yatar. Eğer kendiniz için bu alanda ilginç bir proje arıyorsanız linkini bıraktığım çalışmayı inceleyebilirsiniz.

Github: https://github.com/pytmar/Python-Networkx-/blob/master/Python%20%20ile%20kompleks%20network%20.ipynb

--

--