Isi kandungan:
Video: What REALLY is Data Science? Told by a Data Scientist 2024
Kebanyakan saintis data mesti berfungsi dengan data graf pada satu ketika. Python memberi anda fungsinya. Bayangkan titik data yang disambungkan ke titik data lain, seperti bagaimana satu halaman web disambungkan ke laman web lain melalui hiperpautan. Setiap titik data adalah nod . Node bersambung ke satu sama lain menggunakan pautan .
Tidak semua pautan nod ke setiap nod lain, jadi sambungan nod menjadi penting. Dengan menganalisis nod dan pautan mereka, anda boleh melakukan pelbagai tugas menarik dalam sains data, seperti menentukan cara terbaik untuk mendapatkan dari kerja ke rumah anda menggunakan jalan-jalan dan lebuh raya.
Memahami matriks bersebelahan
Matriks Matriks mewakili sambungan antara nod grafik. Apabila terdapat sambungan di antara satu nod dan yang lain, matriks menunjukkan ia sebagai nilai yang lebih besar daripada 0. Perwakilan tepat sambungan dalam matriks bergantung kepada sama ada grafik diarahkan (di mana arah sambungan itu penting) atau tidak diarahkan.
Masalah dengan banyak contoh dalam talian adalah bahawa para penulis membuatnya mudah untuk tujuan penerangan. Walau bagaimanapun, graf dunia sebenar sering kali besar dan menentang analisis mudah semata-mata melalui visualisasi. Cukup fikirkan bilangan nod yang mungkin ada bandar kecil ketika mempertimbangkan jalan persilangan. Ramai grafik lain jauh lebih besar, dan hanya melihat mereka tidak akan mendedahkan apa-apa corak yang menarik. Ahli sains data memanggil masalah dalam membentangkan mana-mana graf yang kompleks menggunakan matriks adjacency a hairball .
Satu kunci untuk menganalisis matriks persekitaran adalah untuk menyusunnya dengan cara tertentu. Sebagai contoh, anda mungkin memilih menyusun data mengikut sifat selain daripada sambungan sebenar. Grafik sambungan jalan mungkin termasuk tarikh jalan yang terakhir diturap dengan data, membolehkan anda mencari corak yang mengarahkan seseorang berdasarkan jalan-jalan yang dalam pembaikan yang terbaik. Ringkasnya, membuat data grafik berguna menjadi perkara yang memanipulasi organisasi data tersebut dengan cara tertentu.
Menggunakan asas NetworkX
Bekerjasama dengan grafik boleh menjadi sukar jika anda perlu menulis semua kod dari awal. Mujurlah, pakej NetworkX untuk Python memudahkan untuk membuat, memanipulasi, dan mengkaji struktur, dinamik, dan fungsi rangkaian kompleks (atau graf). Anda boleh menggunakan pakej ini untuk bekerja dengan digraphs dan multigraphs juga.
Penekanan utama NetworkX adalah untuk mengelakkan keseluruhan masalah bola rambut.Penggunaan panggilan mudah menyembunyikan banyak kerumitan bekerja dengan graf dan matriks adjacency dari pandangan. Contoh berikut menunjukkan cara mencipta matriks jejak asas dari salah satu graf yang disediakan oleh NetworkX:
networkx import sebagai nx G = nx. cycle_graph (10) A = nx. adjacency_matrix (G) print (A todense ())
Contoh bermula dengan mengimport pakej yang diperlukan. Ia kemudiannya membuat grafik menggunakan template cycle_graph (). Grafik mengandungi sepuluh nod. Memanggil adjacency_matrix () mencipta matriks adjacency dari graf. Langkah terakhir ialah mencetak output sebagai matriks, seperti ditunjukkan di sini:
[[0 1 0 0 0 0 0 0 1] [1 0 1 0 0 0 0 0 0] [0 1 0 1 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 0] [0 0 0 0 0 0 0 1 0 0] [0 0 0 0 0 0 1 0 1 0] [0 0 0 0 0 0 0 1 0 1] [1 0 0 0 0 0 0 0 1 0]]
Anda tidak perlu membina graf anda sendiri dari awal untuk tujuan ujian. Laman NetworkX menyalin beberapa jenis grafik standard yang boleh anda gunakan, semuanya boleh didapati dalam IPython.
Sangat menarik untuk melihat bagaimana graf kelihatan selepas anda menjana. Kod berikut memaparkan graf untuk anda.
Merancang graf asal.import matplotlib. pyplot sebagai plx nx. draw_networkx (G) plt. tunjukkan ()
Plot menunjukkan bahawa anda boleh menambah tepi antara node 1 dan 5. Berikut adalah kod yang diperlukan untuk melakukan tugas ini menggunakan fungsi add_edge ().
Merancang penambahan grafik.G. add_edge (1, 5) nx. draw_networkx (G) plt. tunjukkan ()