[Jenks natural breaks optimization - Wikipedia](https://en.wikipedia.org/wiki/Jenks_natural_breaks_optimization)
> ジェンクス最適化法は、ジェンクス自然休息分類法とも呼ばれ、異なるクラスへの値の最適な配置を決定するために設計されたデータクラスタリング法である。これは、各クラスの平均値からの偏差を最小化し、他のクラスの平均値からの偏差を最大化することによって行われます。言い換えれば、この方法はクラス内の分散を減らし、クラス間の分散を最大にすることを目指すものである[1][2]。
> Jenksの最適化手法は、大津の方法とFisherの判別分析に直接関連している。
> この方法は、繰り返しプロセスを必要とする。つまり,クラス内分散が最小になる区切りのセットを決定するために,データセットの異なる区切りを使って計算を繰り返さなければならない.このプロセスは,順序付きデータを任意の方法でクラスに分割することで開始される.繰り返されなければならない2つのステップがある。
>
> クラス平均からの2乗偏差の合計(SDCM)を計算する。
データをクラスに分割する新しい方法を選ぶ。おそらく1つまたは複数のデータポイントを1つのクラスから別のクラスに移動する。
そして、新しいクラス偏差が計算され、クラス内偏差の合計が最小値に達するまでこのプロセスが繰り返されます[1][5]。
>
> あるいは、すべてのブレークの組み合わせを調べ、それぞれの組み合わせについてSDCMを計算し、最も低いSDCMを持つ組み合わせを選択することもできる。すべてのブレークの組み合わせを調べるので、SDCMが最も低いものが見つかることが保証される。
>
> 最後に、完全なデータセットの平均からの2乗偏差の合計(SDAM)と分散適合度(GVF)を計算することができる。GVFは、(SDAM - SDCM) / SDAMと定義されます。GVFは0(最悪の適合)から1(完全な適合)までの範囲である。
[Jenks’ Natural Breaks Algorithm in Python – Volunteered Geographic Information](https://web.archive.org/web/20100711083657/http://danieljlewis.org/2010/06/07/jenks-natural-breaks-algorithm-in-python/)
> アルゴリズムの詳細は、グループ内の分散が最小になるようにk個のクラスを作成することを目的としており、そのような数値的最適化の問題である。
---
[Finding Natural Breaks in Data with the Fisher-Jenks Algorithm - Practical Business Python](https://pbpython.com/natural-breaks.html)
- [[jenkspy]]にPython実装
> この記事は、Peter Baumgartner氏のツイートに触発されたものです。そのツイートの中で彼は、Fisher-Jenksアルゴリズムに言及し、そのアルゴリズムを使ってデータを自然な区切りにランク付けする簡単な例を示しました。私はそのことを初めて知ったので、少し調べてみました。
> 詳しく調べてみると、以前書いたBinning Dataの記事と非常に相性が良く、直感的で標準的なpandasの分析で簡単に使えることが分かりました。この存在を知っていれば、間違いなく過去に使っていたであろうアプローチです。
> 多くの人が私と同じように、natural breaksのコンセプトを聞いたことがなくても、おそらく自分のデータで似たようなことをしたことがあるのではないかと思います。この記事によって、このシンプルで有用なアプローチを他の人に知ってもらい、彼らのPythonツールボックスに追加してもらえればと思います。
> この記事の残りの部分では、Jenks最適化法(またはFisher-Jenksアルゴリズム)とは何か、そして「自然の切れ目」を使ってデータをクラスタリングする簡単なツールとしてどのように使用できるのかについて説明します。