1. 程式人生 > >資料處理之one-hot

資料處理之one-hot

分類方法,通常需要把資料的各個屬性轉換為一個向量表示,這樣每條資料的特徵就是一個向量,向量上的每個維度就表示了一個特徵屬性。

但是如果要轉換的資料包含了3種屬性,比如身高,體重,年齡。A是女,168cm,70kg,30歲;B是男,180cm,90kg,20歲,那麼直接用數值做向量就變成了,0,168,70,30;1,180,90,20。而168和70或者30是不同的屬性,更明顯的是0或1表示的性別和其他維度差距更大。
有一種是對每個維度的數值進行無量綱的歸一化,也就是說每個維度的數值都歸一化處理到0-1或者-0.5-+0.5之間。
但是這樣依然不好,比如表示性別的0,1與其他維度依然關聯不大,所以有一種叫one-hot的編碼方式,就是表示一項屬性的特徵編碼,同一時間只有一個啟用點(不為0)。這樣A的性別變為【1,0】,B的性別編碼為【0,1】。年齡,體重,身高等可以用更多數量的enum表示(數量不是一定要滿足所有列舉,而是滿足實際資料出現的類別就可以了,比如只有三種身高,那麼身邊表示的只需要[0,0,1]就可以)
然後將各個屬性,串聯起來,構建了一個非常稀疏的特徵向量,比如性別和身高串聯為【0,1,0,0,1】,保證了各種資料的離散性。