這篇文章給大家介紹怎么用Python做數(shù)據(jù)預(yù)處理,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。

前戲
在拿到一份數(shù)據(jù)準(zhǔn)備做挖掘建模之前,首先需要進(jìn)行初步的數(shù)據(jù)探索性分析(你愿意花十分鐘系統(tǒng)了解數(shù)據(jù)分析方法嗎?),對(duì)數(shù)據(jù)探索性分析之后要先進(jìn)行一系列的數(shù)據(jù)預(yù)處理步驟。因?yàn)槟玫降脑紨?shù)據(jù)存在不完整、不一致、有異常的數(shù)據(jù),而這些“錯(cuò)誤”數(shù)據(jù)會(huì)嚴(yán)重影響到數(shù)據(jù)挖掘建模的執(zhí)行效率甚至導(dǎo)致挖掘結(jié)果出現(xiàn)偏差,因此首先要數(shù)據(jù)清洗。數(shù)據(jù)清洗完成之后接著進(jìn)行或者同時(shí)進(jìn)行數(shù)據(jù)集成、轉(zhuǎn)換、歸一化等一系列處理,該過(guò)程就是數(shù)據(jù)預(yù)處理。一方面是提高數(shù)據(jù)的質(zhì)量,另一方面可以讓數(shù)據(jù)更好的適應(yīng)特定的挖掘模型,在實(shí)際工作中該部分的內(nèi)容可能會(huì)占整個(gè)工作的70%甚至更多。
01 缺失值處理由于人員錄入數(shù)據(jù)過(guò)程中或者存儲(chǔ)器損壞等原因,缺失值在一份數(shù)據(jù)中或多或少存在,所以首先就需要對(duì)缺失值進(jìn)行處理,缺失值處理總的原則是:使用最可能的值代替缺失值,使缺失值與其他數(shù)值之間的關(guān)系保持大。具體的常用方法如下:
刪除缺失值(缺失值占比很小的情況)
人工填充 (數(shù)據(jù)集小,缺失值少)
用全局變量填充(將缺失值填充一常數(shù)如“null”)
使用樣本數(shù)據(jù)的均值或中位數(shù)填充
用插值法(如拉格朗日法、牛頓法)
Python缺失值處理實(shí)例代碼:
判斷刪除缺失值- -isnull,notnull
判斷缺失值可以用來(lái)計(jì)算缺失值占比整個(gè)數(shù)據(jù)的大小,如果占比很小可以刪除缺失值。
填充替換缺失值--fillna
如果缺失值不可以占比很多,就不能能夠輕易的刪除缺失值,可以用上述的插值方法填充缺失值。
核心代碼和結(jié)果圖


02 異常值處理
異常值是數(shù)據(jù)集中偏離大部分?jǐn)?shù)據(jù)的數(shù)據(jù)。從數(shù)據(jù)值上表現(xiàn)為:數(shù)據(jù)集中與平均值的偏差超過(guò)兩倍標(biāo)準(zhǔn)差的數(shù)據(jù),其中與平均值的偏差超過(guò)三倍標(biāo)準(zhǔn)差的數(shù)據(jù)(3σ原則),稱為高度異常的異常值。
異常值分析方法
3σ原則 (數(shù)據(jù)分布為正態(tài)分布)
箱型圖分析(內(nèi)限or外限)。
常用處理方法如下:
直接刪除 (異常值占比小)
暫且保留,待結(jié)合整體模型綜合分析
利用現(xiàn)有樣本信息的統(tǒng)計(jì)量填充(均值等)
Python異常值處理實(shí)例代碼:
檢驗(yàn)是否符合正態(tài)分布,符合用3σ原則判斷并處理,核心代碼結(jié)果如下:


2. 當(dāng)不符合正態(tài)分布時(shí)可用箱型圖分析處理,核心結(jié)果代碼如下:


03 數(shù)據(jù)標(biāo)準(zhǔn)化處理
數(shù)據(jù)的標(biāo)準(zhǔn)化(normalization)是將數(shù)據(jù)按比例縮放,使之落入一個(gè)小的特定區(qū)間。在某些比較和評(píng)價(jià)的指標(biāo)處理中經(jīng)常會(huì)用到,去除數(shù)據(jù)的單位限制,將其轉(zhuǎn)化為無(wú)量綱的純數(shù)值,便于不同單位或量級(jí)的指標(biāo)能夠進(jìn)行比較和加權(quán),最典型的就是數(shù)據(jù)歸一化處理就是將數(shù)據(jù)統(tǒng)一映射到[0,1]區(qū)間上 。
常用數(shù)據(jù)標(biāo)準(zhǔn)化方法:
MIN- MAX標(biāo)準(zhǔn)化(x - x_min)/(x_max-x_min)
z-score標(biāo)準(zhǔn)化(x-x_mean)/x_std
小數(shù)定標(biāo)標(biāo)準(zhǔn)化
向量歸一化
線性比例變換法
平均值法
指數(shù)轉(zhuǎn)換法
歸一化的目的:
使得預(yù)處理的數(shù)據(jù)被限定在一定的范圍
消除奇異樣本數(shù)據(jù)導(dǎo)致的不良影響
在大佬Ng的視頻課中聽過(guò)一句話,歸一化會(huì)加快梯度下降的求解速度。
應(yīng)用場(chǎng)景說(shuō)明:
SVM、線性回歸之類的最優(yōu)化問題需要?dú)w一化,是否歸一化主要在于是否關(guān)心變量取值;
神經(jīng)網(wǎng)絡(luò)需要標(biāo)準(zhǔn)化處理,一般變量的取值在-1到1之間,這樣做是為了弱化某些變量的值較大而對(duì)模型產(chǎn)生影響。一般神經(jīng)網(wǎng)絡(luò)中的隱藏層采用tanh激活函數(shù)比sigmod激活函數(shù)要好些,因?yàn)閠anh雙曲正切函數(shù)的取值[-1,1]之間,均值為0;
在K近鄰算法中,如果不對(duì)解釋變量進(jìn)行標(biāo)準(zhǔn)化,那么具有小數(shù)量級(jí)的解釋變量的影響就會(huì)微乎其微。
注意:沒有一種數(shù)據(jù)標(biāo)準(zhǔn)化的方法,放在每一個(gè)問題,放在每一個(gè)模型,都能提高算法精度和加快算法的收斂速度。所以對(duì)于不同的問題可能會(huì)有不同的歸一化方法。在分類、聚類算法中,需要使用距離來(lái)度量相似性的時(shí)候、或者使用PCA技術(shù)進(jìn)行降維的時(shí)候,Z-score standardization表現(xiàn)更好。
04 數(shù)據(jù)連續(xù)屬性離散化
一些數(shù)據(jù)挖掘算法,特別是分類算法,要求數(shù)據(jù)是分類屬性形式。常常需要將連續(xù)屬性變換成分類屬性,即連續(xù)屬性離散化。 常用的離散化方法:
等寬法:將屬性值域分成具有相同寬度的區(qū)間,區(qū)間的個(gè)數(shù)由數(shù)據(jù)本身的特點(diǎn)決定,或者由用戶指定,類似于制作頻率分布表。
等頻法:將相同數(shù)量的記錄放進(jìn)每個(gè)區(qū)間。
基于聚類分析的方法。 通過(guò)分箱離散化、通過(guò)直方圖分析離散化、通過(guò)聚類、決策樹和相關(guān)分析離散化、標(biāo)稱數(shù)據(jù)的概念分層產(chǎn)生。
筆者在學(xué)習(xí)數(shù)據(jù)分析過(guò)程中記錄下來(lái)的一些通用的數(shù)據(jù)預(yù)處理步驟,并且用Numpy、Pandas、Matplotlib等實(shí)現(xiàn)了每一種處理方法并可視化了處理結(jié)果。
關(guān)于怎么用Python做數(shù)據(jù)預(yù)處理就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
本文標(biāo)題:怎么用Python做數(shù)據(jù)預(yù)處理-創(chuàng)新互聯(lián)
標(biāo)題URL:http://chinadenli.net/article38/digcsp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)、網(wǎng)站改版、電子商務(wù)、企業(yè)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容