Я нашел эту реализацию Python в Дженкс Natural Breaks алгоритма , и я мог бы сделать его запустить на моем компьютере Windows 7. Это довольно быстро, и он находит разрывы за короткое время, учитывая размер моих геоданных. Прежде чем использовать этот алгоритм кластеризации для моих данных, я использовал sklearn.clustering.KMeans
(здесь) алгоритм. Проблема, с которой я столкнулся с KMeans, заключалась в поиске оптимального параметра значения K, но я «решил» его, запустив алгоритм для различных значений K и используя sklearn.metrics.silhouette_score
(здесь), чтобы найти лучший K.
Мой вопрос: если я скажу алгоритму Natural Breaks найти 5 классов (это будет K), как я могу быть уверен, что это количество классов, которые лучше всего соответствуют моим данным? Как проверить, что я выбираю лучшее количество перерывов?
Благодарность!
источник
Ответы:
Jenks Natural Breaks работает, оптимизируя Goodness of Variance Fit, значение от 0 до 1, где 0 = No Fit и 1 = Perfect Fit. Ключ при выборе количества классов - найти баланс между обнаружением различий и переоснащением ваших данных. Чтобы определить оптимальное количество классов, я предлагаю вам использовать желаемое пороговое значение GVF и сначала использовать количество классов, которое удовлетворяет этому значению.
Ниже приведена функция для вычисления Goodness of Variance Fit с учетом массива значений для классификации и количества выбранных классов:
Например, предположим, вы решили, что GVF должен быть не менее 0,8, тогда вы можете увеличивать количество классов, пока GVF не будет удовлетворен:
источник