Saya menemukan implementasi Python ini dari algoritma Jenks Natural Breaks dan saya bisa membuatnya berjalan di mesin Windows 7 saya. Ini cukup cepat dan menemukan jeda dalam beberapa waktu, mengingat ukuran geodata saya. Sebelum menggunakan algoritma pengelompokan ini untuk data saya, saya menggunakan algoritma sklearn.clustering.KMeans
(di sini) . Masalah yang saya miliki dengan KMeans, adalah menemukan parameter nilai K optimal, tetapi saya "memecahkan" itu meluncurkan algoritma untuk nilai K yang berbeda dan menggunakan sklearn.metrics.silhouette_score
(di sini) untuk menemukan K. terbaik
Pertanyaan saya adalah: jika saya memberi tahu algoritma Natural Breaks untuk menemukan 5 kelas (yang akan menjadi K), bagaimana saya bisa yakin bahwa ini adalah jumlah kelas yang paling cocok dengan data saya? Bagaimana cara memvalidasi bahwa saya memilih jumlah istirahat terbaik?
Terima kasih!
sumber
Jawaban:
Jenks Natural Breaks bekerja dengan mengoptimalkan Goodness of Variance Fit, nilai dari 0 hingga 1 di mana 0 = Tidak Sesuai dan 1 = Sempurna. Kunci dalam memilih jumlah kelas adalah menemukan keseimbangan antara mendeteksi perbedaan dan melengkapi data Anda. Untuk menentukan jumlah kelas optimal, saya sarankan Anda menggunakan nilai ambang GVF yang Anda inginkan dan menggunakan jumlah kelas yang memenuhi nilai ini terlebih dahulu.
Di bawah ini adalah fungsi untuk menghitung Goodness of Variance Fit diberikan array nilai untuk mengklasifikasikan dan jumlah kelas yang dipilih:
Misalnya, anggap Anda memutuskan GVF setidaknya harus 0,8, maka Anda bisa menambah jumlah kelas sampai GVF puas:
sumber