Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
学ぶ 複数特徴量によるK-NN | セクション
Pythonによる分類

book複数特徴量によるK-NN

メニューを表示するにはスワイプしてください

k-NNが単一の特徴量でどのように動作するかを理解しました。次は、weight(重さ)とwidth(幅)という2つの特徴量を使う、やや複雑な例に進みます。

この場合、幅と重さの両方に基づいて近傍を探す必要があります。しかし、ここで小さな問題が発生します。お菓子のデータをプロットして、何が問題なのか見てみましょう:

重さは12から64までの範囲ですが、幅は5から12の間だけです。幅の範囲がはるかに小さいため、お菓子はほぼ垂直に並んでいるように見えます。この状態で距離を計算すると、主に重さの違いだけが反映され、幅を考慮していないのと同じになります。

しかし、解決策があります。それはデータのスケーリングです。

これで重さと幅の両方が同じスケールになり、ゼロを中心とした値になります。これはStandardScalersklearnクラスで実現できます。StandardScalerサンプルの平均を引き、その結果をサンプルの標準偏差で割るだけです:

Xscaled=XxˉsX_{scaled} = \frac{X - \bar x}{s}

StandardScaler はデータをゼロ付近に中心化します。k-NN では中心化は必須ではありませんが、「重みが負になるのはなぜか」といった混乱を招くことがあります。これは単にコンピュータにデータを提示する方法の一つです。一部のモデルでは中心化が必要となるため、デフォルトで StandardScaler を用いてスケーリングすることが推奨されます。

実際には、k-Nearest Neighbors を使用する前に必ずデータをスケーリングする必要があります。データがスケーリングされた状態で、近傍を見つけることができます。

特徴量が2つの場合、k-NN は所定の数の近傍を含む円形の近傍領域を定義します。特徴量が3つの場合は、これが球体になります。より高次元では、近傍領域は可視化できない複雑な形状となりますが、基礎となる計算は変わりません

question mark

正しい記述を選択してください。

正しい答えを選んでください

すべて明確でしたか?

どのように改善できますか?

フィードバックありがとうございます!

セクション 1.  3

AIに質問する

expand

AIに質問する

ChatGPT

何でも質問するか、提案された質問の1つを試してチャットを始めてください

セクション 1.  3
some-alt