數(shù)據(jù)無量綱化:
作用:
無量綱化可以加快求解速度(例如:邏輯回歸、支持向量機(jī)、神經(jīng)網(wǎng)絡(luò)等)
無量綱化可以幫 我們提升模型的精度(例如K近鄰、K-Means聚類)
決策樹和樹的集成(隨機(jī)森林、Adaboost)算法比較特殊,對決策樹我們不需要無量綱化,決策樹可以把任意數(shù)據(jù)都處理得很好
無量綱化的兩種方式:
歸一化:對異常值敏感 (preprocessing.MinMaxScaler實現(xiàn)歸一化,參數(shù)feature_range控制數(shù)據(jù)壓縮的范圍,默認(rèn)是[0,1]
標(biāo)準(zhǔn)化:標(biāo)準(zhǔn)化 (preprocessing.StandardScale實現(xiàn)標(biāo)準(zhǔn)化)
歸一化和標(biāo)準(zhǔn)化不會改變數(shù)據(jù)集的分布和信息,線性的處理不會改變數(shù)據(jù)集的分布
sklearn中標(biāo)準(zhǔn)化、歸一化的包必須要在數(shù)據(jù)變?yōu)槎S數(shù)組的時候才可以帶進(jìn)去運(yùn)算,其實幾乎所有的包都需要是二位數(shù)組才可以帶入,除了對標(biāo)簽進(jìn)行離散化的包外(LabelEncoder)
相比歸一化,標(biāo)準(zhǔn)化的結(jié)果更加準(zhǔn)確,更加清晰。利用標(biāo)準(zhǔn)化的公式簡化了算法,從而得到一個比較好的效果,因為標(biāo)準(zhǔn)化用到了均值和方差。
數(shù)據(jù)的無量綱化可以是線性的,也可以是非線性的,線性的無量綱化包括中心化處理或縮放處理。中心化的本質(zhì)是讓所有記錄減去一個固定值,即讓數(shù)據(jù)樣本數(shù)據(jù)平移到某個位置??s放的本質(zhì)是通過除以一個固定值,將數(shù)據(jù)固定在某個范圍之中,取對數(shù)也算是一種縮放處理。
對于連續(xù)型的變量最好是都做一下去量綱的操作
缺失值處理:
均值:mean;中位數(shù):median;眾數(shù):mode
缺失值填充包 impute.SimpleImputer
一般來說離散型的特征用眾數(shù)填充,連續(xù)型變量用均值填充
使用sklearn中進(jìn)行缺失值填充時,首先要進(jìn)行訓(xùn)練集和測試集的切分
在進(jìn)行量綱處理、編碼處理等處理時,首先需要進(jìn)行缺失值處理
缺失值中可能存在千奇百怪的其他非法字符,可以使用value_counts來進(jìn)行查看
當(dāng)數(shù)據(jù)存在兩個相同的列時,放到模型中跑,模型會直接忽略其中一列
離散型變量的編碼:
preprocessing.LabelEncoder,專門對標(biāo)簽進(jìn)行編碼,LabelEncoder這個是一個特例,不要求傳入?yún)?shù)為二維數(shù)組
preprocessing.LabelEncoder包中,對訓(xùn)練集進(jìn)行學(xué)習(xí)之后的模型,可以在calsses_中查看標(biāo)簽和編碼的對應(yīng),標(biāo)簽按照順序編0,1,2……
preprocessing.OrdinalEncoder,特征專用的庫,可以對多個特征同時進(jìn)行轉(zhuǎn)換,categories_中記錄編碼的順序
對于名義變量必須需要使用獨(dú)熱編碼的形式,使特征的每個取值之間相互獨(dú)立。
順序變量可以不做獨(dú)熱編碼,做普通編碼即可
在不確定變量的特征的時候,可以直接全部做獨(dú)熱編碼,可能會對模型的運(yùn)算效果有影響,但是計算的結(jié)果很精確
連續(xù)型變量的離散化:
離散變量的分布比較奇怪時,例如如果是如下分布時,紅色分布可能不能被模型讀取到??梢詫⑦B續(xù)變量離散化,可能會提高模型的效果
連續(xù)型變量編碼可以進(jìn)行二值化(需要通過觀察分布來判斷),或者采用分箱的方式進(jìn)行(等頻分享或者等距分箱或者k-means)
連續(xù)型變量在進(jìn)行離散化之前不需要先對特征進(jìn)行去量綱的操作,因為去量綱的操作不改變數(shù)據(jù)的分布,因此可以在原始數(shù)據(jù)的基礎(chǔ)上直接進(jìn)行離散化








暫無數(shù)據(jù)