0

Matlab で KNN メソッドを使用してデータ セットを分類したいのですが、データ型が異なるデータ ポイントの距離の計算に問題があります。

私のデータセットの各ポイントには、数値型と文字列型のさまざまな機能がありますX{Size,Lenght,Age,Coating,PipeType,Location} 。最初の 3 つの機能には数値があり、次の 3 つの機能には文字列 (1 つまたは 2 つの単語) 値があります。

文字列の特徴をバイナリ コードにマップする場合、たとえばコーティング値の{Concrete encased,Gunite,Tar Coating,Poliken Coating}場合、次{00,01,10,11} のように X と Y の距離を計算すると論理的ですか?

X:{Size,Lenght,Age,Coating,PipeType,Location}
Y:{Size,Lenght,Age,Coating,PipeType,Location}

Distance= Euclidean Distance (X,Y) on {Size,Lenght,Age} 
            + Hamming Distance (X,Y) on {Coating}
            + Hamming Distance (X,Y) on {PipeType}
            + Hamming Distance (X,Y) on {Location}

また

Distance= Euclidean Distance (X,Y) on {Size,Lenght,Age} 
          + {1 if a x and y have similar coating values and 0 otherwise}
          + ...

あなたの提案に本当に感謝します。この分野で提案された記事やドキュメントも役に立ちます。

ありがとうマサ

4

1 に答える 1

0

バイナリ ベクトルの場合、ハミング距離とユークリッド距離は実際には同じです。したがって、feature を長さ 4のバイナリベクトル
に 変換できます。'Coating'

coating_vec( ii ) == 1 iff instance_coating == Coating_type{ii}

つまり、コーティング値「Tar」(3 番目に可能なコーティング値) を持つインスタンスの場合、コーティングのバイナリ特徴ベクトルは になります[0 0 1 0]

と について同じことを行うPipeTypeLocation、長さ の特徴ベクトルが得られます3 + 4 + numPossible(PipeType) + numPossible(Location)。これらの結合された特徴ベクトル間のユースライド距離を取ると、うまくいくはずです。

于 2013-10-17T05:45:26.823 に答える