ソートされたコレクションをインテリジェントにビンに入れようとしています。個のデータのコレクションがあります。しかし、私はこのデータが不等サイズのビンに収まることを知っています。データを適切に合わせるためにエンドポイントをインテリジェントに選択する方法がわかりません。例えば:m
コレクションに12個のアイテムがあり、データが3つのビンに収まることがわかっているとします。
Index: 1 2 3 4 5 6 7 8 9 10 11 12
Value: 1 1 1 3 3 3 3 3 3 5 5 6
i = \ {1-3 \}、\ {4-9 \}、\ {10-12 \}のビンのブレークポイントをインテリジェントに選択するにはどうすればよいですか?
現在の実装では、データを均等なサイズのビンに分割し、エンドポイントの平均をとってビンの終わりのインデックスを見つけます。したがって、次のように機能します。
Index: 1 2 3 4 5 6 7 8 9 10 11 12
Value: 1 1 1 3 3 3 3 3 3 5 5 6
first break evenly: i = 1-4, 5-8, 9-12
mean endpoints: between 4 and 5: (3+3)/2 = 3
between 8 and 9: (3+3)/2 = 3
したがって、3未満の値はビン1に適合し、3を超えて3未満の値はビン2に適合し、3を超える値はビン3に適合します。問題は何ですか。データのビンが等しくない場合、メソッドは失敗します。
友人がk最近傍アルゴリズムに言及しましたが、よくわかりません。