2013-10-17 23 views
0

我想通過Matlab中的KNN方法對數據集進行分類,但是在計算具有不同數據類型的數據點的距離方面存在問題。計算多類型數據點的距離

我的數據集中的每個點都有數字和字符串類型的各種特徵,如X{Size,Lenght,Age,Coating,PipeType,Location} 前三個特徵有數字,其次三個有字符串(一個或兩個字)值。

如果我字符串特徵映射到例如用於塗料值二進制代碼包括{Concrete encased,Gunite,Tar Coating,Poliken Coating}如果我考慮兩個比特{00,01,10,11} 是,如果邏輯I計算這樣的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} 
      + ... 

我真的很感激你的建議。 在這方面建議的文章和文件也很有用。

由於 Mahsa

回答

0

對於二進制矢量,漢明距離和歐幾里德距離實際上是相同的。
所以,可以轉換'Coating'特徵爲二進制矢量長度爲4的

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

即,對於具有塗層的值「焦油」的實例(第三種可能的塗層值)爲二進制特徵矢量塗層將是[0 0 1 0]

PipeTypeLocation做同樣的處理,你將得到一個長度爲3 + 4 + numPossible(PipeType) + numPossible(Location)的特徵向量。這些組合的特徵向量之間的Euslidean距離應該爲你做訣竅。