筆記—數(shù)據(jù)預(yù)處理

前言(~廢話)

為了建立一個(gè)好的機(jī)器學(xué)習(xí)模型蓄诽,對(duì)數(shù)據(jù)進(jìn)行一定的處理是十分有必要的睛低,接下來簡(jiǎn)單介紹幾種初級(jí)的處理方法淘邻,后續(xù)將補(bǔ)充其他的數(shù)據(jù)處理的操作

線性回歸之多項(xiàng)式轉(zhuǎn)換

先來看一張圖:

image

對(duì)于很多場(chǎng)景下扑庞,對(duì)樣本直接進(jìn)行線性回歸可能并不能達(dá)到很好的效果兵琳,比如圖1

可能你已經(jīng)想到可以對(duì)數(shù)據(jù)集進(jìn)行多項(xiàng)式轉(zhuǎn)換,圖1中硕噩,我們的數(shù)學(xué)模型為:

image

多項(xiàng)式轉(zhuǎn)換后我們的數(shù)學(xué)模型可以為m次方程:

image

通過多項(xiàng)式轉(zhuǎn)換假残,我們便可以對(duì)圖1的數(shù)據(jù)進(jìn)行擬合從而得到一個(gè)相對(duì)直接進(jìn)行線性回歸好很多的數(shù)學(xué)模型


#簡(jiǎn)單的多項(xiàng)式轉(zhuǎn)換demo如下

import numpy as np

from sklearn.preprocessingimport PolynomialFeatures    #多項(xiàng)式轉(zhuǎn)換模塊

X = np.arange(6).reshape(3,2)

poly1 = PolynomialFeatures(2)    #進(jìn)行2元多項(xiàng)式轉(zhuǎn)換

poly1.fit(X)

poly1.transform(X)

多項(xiàng)式轉(zhuǎn)化后對(duì)數(shù)據(jù)擬合后的效果根據(jù)函數(shù)的次數(shù)達(dá)到不同的效果:

image

數(shù)據(jù)的缺失值處理

樣本中存在缺失值是很常見的情況,對(duì)于缺失值的處理常見的有一下幾種方法:

1)樣本確實(shí)嚴(yán)重情況下直接drop含有缺失值的樣本

2)采用上一個(gè)樣本或者后一個(gè)樣本的的對(duì)應(yīng)值來進(jìn)行填充

3)使用數(shù)據(jù)集中該屬性的平均值炉擅,眾數(shù)進(jìn)行填充

4)新增一個(gè)判斷是否含有‘‘該屬性缺失’’的屬性

5)用一個(gè)固定的數(shù)(經(jīng)驗(yàn)值)進(jìn)行填充

6)根據(jù)結(jié)果分組辉懒,不同組采用各自組的均值或者眾數(shù)進(jìn)行填充

7)把缺失值作為新的label,建立模型得到預(yù)測(cè)值谍失,然后進(jìn)行填充眶俩。


One-Hot編碼

在很多的數(shù)據(jù)集當(dāng)中,某一屬性的不同類別可能采用數(shù)字來表示快鱼,但并沒有數(shù)字的意義颠印,比如性別屬性(男:0,女:1)抹竹,但是沒有了0<1這樣的意義线罕,但是建立模型去擬合這樣的數(shù)據(jù)可能效果會(huì)很糟糕。這是One-Hot便有了用武之地柒莉。

大部分算法是基于向量空間中的度量來進(jìn)行計(jì)算的闻坚,為了使非偏序關(guān)系的變量取值不具有偏序性,并且到圓點(diǎn)是等距的兢孝。使用one-hot編碼窿凤,將離散特征的取值擴(kuò)展到了歐式空間,離散特征的某個(gè)取值就對(duì)應(yīng)歐式空間的某個(gè)點(diǎn)跨蟹。將離散型特征使用one-hot編碼雳殊,會(huì)讓特征之間的距離計(jì)算更加合理。離散特征進(jìn)行one-hot編碼后窗轩,編碼后的特征夯秃,其實(shí)每一維度的特征都可以看做是連續(xù)的特征。


#一個(gè)簡(jiǎn)單的demo

from sklearn.preprocessing import OneHotEncoder 

enc = OneHotEncoder() 

enc.fit([[0, 0, 3], [1, 1, 0], [0, 2, 1], [1, 0, 2],[1,1,1]]) 

enc.transform([[0, 1, 3]]).toarray()


LabelEncoder

利用LabelEncoder() 將轉(zhuǎn)換成連續(xù)的數(shù)值型變量。即是對(duì)不連續(xù)的數(shù)字或者文本進(jìn)行編號(hào)例如仓洼,比如性別特征中(“男”介陶,“女”),需要使用LabelEncoder將它們轉(zhuǎn)換成數(shù)值型


#一個(gè)簡(jiǎn)單的demo

from sklearn.preprocessing import LabelEncoder

le = LabelEncoder()

le.fit([1,5,67,100])

le.transform([1,1,100,67,5])


二值化

顧名思義色建,設(shè)置一個(gè)閾值將數(shù)據(jù)分為兩部分(大于這個(gè)值的哺呜,小于這個(gè)值的)


#一個(gè)簡(jiǎn)單的demo
import numpy as np

from sklearn.preprocessing import Binarizer

arr = np.array([

    [1.5, 1.3, 1.9],

    [0.5, 0.5, 1.6],

    [1.1, 2.1, 0.2]

])

binarizer = Binarizer(threshold=1.0).fit_transform(arr)    #設(shè)置閾值,大于的編碼為1箕戳,小于的編碼為0


標(biāo)準(zhǔn)化

去均值和方差歸一化某残。且是針對(duì)每一個(gè)特征維度來做的,而不是針對(duì)樣本陵吸。

其公式為:(x - x.mean() ) / x.std()

注意:

1)本方法要求原始數(shù)據(jù)的分布可以近似為高斯分布玻墅,否則歸一化的效果會(huì)變得很糟糕

*2)應(yīng)用場(chǎng)景:在分類、聚類算法中壮虫,需要使用距離來度量相似性的時(shí)候澳厢、或者使用PCA技術(shù)進(jìn)行降維的時(shí)候 *

3) 并不是所有的標(biāo)準(zhǔn)化都能給模型帶來好處

作用:

評(píng)價(jià)指標(biāo)(即特征向量中的不同特征就是所述的不同評(píng)價(jià)指標(biāo))往往具有不同的量綱和量綱單位,這樣的情況會(huì)影響到數(shù)據(jù)分析的結(jié)果旨指,為了消除指標(biāo)之間的量綱影響赏酥,需要進(jìn)行數(shù)據(jù)標(biāo)準(zhǔn)化處理,以解決數(shù)據(jù)指標(biāo)之間的可比性谆构。原始數(shù)據(jù)經(jīng)過數(shù)據(jù)標(biāo)準(zhǔn)化處理后,各指標(biāo)處于同一數(shù)量級(jí)框都,適合進(jìn)行綜合對(duì)比評(píng)價(jià)搬素。


#一個(gè)簡(jiǎn)單的demo

from sklearn.preprocessing import StandardScaler

X = [

    [1, 2, 3, 2],

    [7, 8, 9, 2.01],

    [4, 8, 2, 2.01],

    [9, 5, 2, 1.99],

    [7, 5, 3, 1.99],

    [1, 4, 9, 2]

]

ss = StandardScaler(with_mean=True, with_std=True)

ss.fit(X)

ss.transform(X)


區(qū)間縮放法

計(jì)算公式:X - X.mean() / ( X.max() - X.min() )

1)適用比較適用在數(shù)值比較集中的情況

2)缺陷:如果max和min不穩(wěn)定,很容易使得歸一化結(jié)果不穩(wěn)定魏保,使得后續(xù)使用效果也不穩(wěn)定熬尺。實(shí)際使用中可以用經(jīng)驗(yàn)常量來替代max和min。

3)應(yīng)用場(chǎng)景:在不涉及距離度量谓罗、協(xié)方差計(jì)算粱哼、數(shù)據(jù)不符合正太分布的時(shí)候,可以使用第一種方法或其他歸一化方法(不包括Z-score方法)檩咱。比如圖像處理中揭措,將RGB圖像轉(zhuǎn)換為灰度圖像后將其值限定在[0 255]的范圍


#一個(gè)簡(jiǎn)單的demo

import numpy as np

from sklearn.preprocessing import MinMaxScaler

X = np.array([

    [1, -1, 2, 3],

    [2, 0, 0, 3],

    [0, 1, -1, 3]

], dtype=np.float64)

scaler = MinMaxScaler(feature_range=(1,5))        #每一列數(shù)據(jù)都在在1-5直接之間進(jìn)行縮放

scaler.fit(X)

#查看參數(shù)縮放后MinMaxScaler的屬性

print (scaler.data_max_)

print (scaler.data_min_)

print (scaler.data_range_)


特征選擇

選擇方法1:移除方差較低的特征

導(dǎo)入特征選擇庫(kù)中的VarianceThreshold用于通過方差選擇特征。方差為0的特征會(huì)被自動(dòng)移除刻蚯。剩下的特征按設(shè)定的方差的閾值進(jìn)行選擇绊含。

選擇方法2:?jiǎn)巫兞刻卣鬟x擇-卡方檢驗(yàn)


#一個(gè)簡(jiǎn)單的demo

import numpy as np

from sklearn.feature_selection import VarianceThreshold

X = np.array([

    [0, 2, 0, 3],

    [0, 1, 4, 3],

    [0.1, 1, 1, 3]

], dtype=np.float64)

Y = np.array([1,2,1])

print(X.std(axis=0))

#方差篩選

variance = VarianceThreshold(threshold=0.1) ##設(shè)置方差的閾值為0.1

print (variance)

variance.fit(X)

print (variance.transform(X)) #選擇方差大于0.1的特征

#相關(guān)性篩選

from sklearn.feature_selection import chi2,SelectKBest

sk2 = SelectKBest(chi2, k=2) #選擇相關(guān)性最高的前2個(gè)特征

sk2.fit(X, Y)

print (sk2)

print (sk2.scores_)

print (sk2.transform(X))

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市炊汹,隨后出現(xiàn)的幾起案子躬充,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件充甚,死亡現(xiàn)場(chǎng)離奇詭異以政,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)伴找,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門妙蔗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人疆瑰,你說我怎么就攤上這事眉反。” “怎么了穆役?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵寸五,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我耿币,道長(zhǎng)梳杏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任淹接,我火速辦了婚禮十性,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘塑悼。我一直安慰自己劲适,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布厢蒜。 她就那樣靜靜地躺著霞势,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斑鸦。 梳的紋絲不亂的頭發(fā)上愕贡,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音巷屿,去河邊找鬼固以。 笑死,一個(gè)胖子當(dāng)著我的面吹牛嘱巾,可吹牛的內(nèi)容都是我干的憨琳。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼浓冒,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼栽渴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起稳懒,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤闲擦,失蹤者是張志新(化名)和其女友劉穎慢味,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體墅冷,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡纯路,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了寞忿。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片驰唬。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖腔彰,靈堂內(nèi)的尸體忽然破棺而出叫编,到底是詐尸還是另有隱情,我是刑警寧澤霹抛,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布搓逾,位于F島的核電站,受9級(jí)特大地震影響杯拐,放射性物質(zhì)發(fā)生泄漏霞篡。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一端逼、第九天 我趴在偏房一處隱蔽的房頂上張望朗兵。 院中可真熱鬧,春花似錦顶滩、人聲如沸余掖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)浊吏。三九已至,卻和暖如春救氯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背歌憨。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工着憨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人务嫡。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓甲抖,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親心铃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子准谚,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 以西瓜書為主線,以其他書籍作為參考進(jìn)行補(bǔ)充去扣,例如《統(tǒng)計(jì)學(xué)習(xí)方法》柱衔,《PRML》等 第一章 緒論 1.2 基本術(shù)語(yǔ) ...
    danielAck閱讀 4,519評(píng)論 0 6
  • 首頁(yè) 資訊 文章 資源 小組 相親 登錄 注冊(cè) 首頁(yè) 最新文章 IT 職場(chǎng) 前端 后端 移動(dòng)端 數(shù)據(jù)庫(kù) 運(yùn)維 其他...
    Helen_Cat閱讀 3,874評(píng)論 1 10
  • 前任唆铐,是每個(gè)人心里的一根刺哲戚,平時(shí)沒什么感覺,但猛聽到一首歌艾岂、看一場(chǎng)電影顺少、路過一條街道,胸口就不禁的被扎了一下王浴,至此...
    艾笑宇閱讀 8,778評(píng)論 16 47
  • 我想氓辣,在夢(mèng)里和你談一場(chǎng)不分手的戀愛秒裕, 只要是,能和你在一起筛婉,那么簇爆,哪怕是場(chǎng)夢(mèng),又何妨K觥H肭! 1硕勿、《夢(mèng)》— 好妹妹樂...
    音曼實(shí)驗(yàn)室閱讀 420評(píng)論 0 0
  • 窗外的雨在心里流 心如苦海翻滾 五月的風(fēng)在樹梢間纏繞 讓整個(gè)季節(jié)眩暈 奔向遠(yuǎn)方的路已傾覆 疲憊不堪的腳 不得不停下...
    納蘭胡楊o閱讀 324評(píng)論 0 3