【數據挖掘】【筆記】數據預處理之類別特徵編碼

定義

類別特徵:如['male', 'female']等,模型不能直接識別的數據。處理的目的是將不能夠定量處理的變量量化。
特別的比如星期[1, 2, ... , 7]雖然是數字,但是數值之間沒有大小順序關係,需要視爲類別特徵。

處理

編碼爲模型可識別的數值型特徵。

根據模型處理能力的不同,需要考慮單純映射爲數值或啞變量編碼。(尤其是線型模型和SVMs with standard kernels, knn?)

sklearn.preprocessing.OneHotEncder

This estimator transforms each categorical feature with m possible values into m binary features, with only one active.

把所有可能取值轉換爲二進制表示,只含一個一的那種?

結果

  • dt, rf, gb, ada等對於縮放,編碼等不敏感,結果差異不大
  • svr, knn結果縮放有提高,編碼還會變差?

pandas.get_dummies

啞變量編碼,適用於pd.DataFrame。

功能和OneHot類似,有額外的drop_first功能。

總結

  • 啞變量編碼對於sklearn中的sklearn模型的意義不大。尤其是基於樹模型沒有影響。
  • 線性模型有影響
  • svm影響不大,甚至默認參數時因爲特徵增加,表現下降
  • knn不受影響(knn受冗餘特徵的影響較大)

爲什麼無關緊要的特徵會損害KNN?
image
答:如上圖,橫軸爲無關緊要特徵,因爲橫軸特徵的出現,將原本鮮明的聚類特徵模糊化,縱軸權重被橫軸稀釋,從而得到錯誤的聚類結果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章