可以看到,原來的一列Continent字段變成了三列,分別代表[ 'AM', 'EP', 'LA' ],取值1表明是,取值0表明否。這就是常說的one-hot編碼。如果類別變量的取值是整數(shù),則直接用sklearn.preprocessing.OneHotEncoder()即可,把上面代碼中LabelBinarizer()替換掉
注意我們必須將對(duì)訓(xùn)練集上的變換原封不動(dòng)的作用到測試集,而不能重新對(duì)測試集的數(shù)據(jù)做變換(詳見我之前寫的『新手?jǐn)?shù)據(jù)挖掘中的幾個(gè)常見誤區(qū)』第一節(jié))。
4.3.2. 處理數(shù)值變量
一般而言,數(shù)值變量不用做太多處理,只需做正規(guī)化(normalization)和標(biāo)準(zhǔn)化(standardization)即可,分別對(duì)應(yīng)scikit-learn中的Normalizer和StandardScaler。不過對(duì)于稀疏變量,在做標(biāo)準(zhǔn)化的時(shí)候要注意,選擇不去均值。
其實(shí)數(shù)值型變量最好也進(jìn)行離散化,離散手段從基本的等距離散法、按分隔點(diǎn)人為指定,到聚類、輸入樹模型等,手段很多,在此不詳細(xì)展開,我會(huì)在后續(xù)文章中提及。