一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

為什么要進(jìn)行數(shù)據(jù)清洗呢?

lviY_AI_shequ ? 來(lái)源:未知 ? 作者:李倩 ? 2018-07-27 17:17 ? 次閱讀

按照我做項(xiàng)目的經(jīng)驗(yàn),來(lái)了項(xiàng)目,首先是分析項(xiàng)目的目的和需求,了解這個(gè)項(xiàng)目屬于什么問(wèn)題,要達(dá)到什么效果。然后提取數(shù)據(jù),做基本的數(shù)據(jù)清洗。第三步是特征工程,這個(gè)屬于臟活累活,需要耗費(fèi)很大的精力,如果特征工程做的好,那么,后面選擇什么算法其實(shí)差異不大,反之,不管選擇什么算法,效果都不會(huì)有突破性的提高。第四步,是跑算法,通常情況下,我會(huì)把所有能跑的算法先跑一遍,看看效果,分析一下precesion/recall和f1-score,看看有沒(méi)有什么異常(譬如有好幾個(gè)算法precision特別好,但是recall特別低,這就要從數(shù)據(jù)中找原因,或者從算法中看是不是因?yàn)樗惴ú贿m合這個(gè)數(shù)據(jù)),如果沒(méi)有異常,那么就進(jìn)行下一步,選擇一兩個(gè)跑的結(jié)果最好的算法進(jìn)行調(diào)優(yōu)。調(diào)優(yōu)的方法很多,調(diào)整參數(shù)的話(huà)可以用網(wǎng)格搜索、隨機(jī)搜索等,調(diào)整性能的話(huà),可以根據(jù)具體的數(shù)據(jù)和場(chǎng)景進(jìn)行具體分析。調(diào)優(yōu)后再跑一邊算法,看結(jié)果有沒(méi)有提高,如果沒(méi)有,找原因,數(shù)據(jù) or 算法?是數(shù)據(jù)質(zhì)量不好,還是特征問(wèn)題還是算法問(wèn)題。一個(gè)一個(gè)排查,找解決方法。

特征問(wèn)題就回到第三步再進(jìn)行特征工程,數(shù)據(jù)質(zhì)量問(wèn)題就回到第一步看數(shù)據(jù)清洗有沒(méi)有遺漏,異常值是否影響了算法的結(jié)果,算法問(wèn)題就回到第四步,看算法流程中哪一步出了問(wèn)題。如果實(shí)在不行,可以搜一下相關(guān)的論文,看看論文中有沒(méi)有解決方法。這樣反復(fù)來(lái)幾遍,就可以出結(jié)果了,寫(xiě)技術(shù)文檔和分析報(bào)告,再向業(yè)務(wù)人員或產(chǎn)品講解我們做的東西,然后他們?cè)偬峤ㄗh/該需求,不斷循環(huán),最后代碼上線(xiàn),改bug,直到結(jié)項(xiàng)。

直觀來(lái)看,可以用一個(gè)流程圖來(lái)表示:

今天講數(shù)據(jù)清洗,為什么要進(jìn)行數(shù)據(jù)清洗呢?我們?cè)跁?shū)上看到的數(shù)據(jù),譬如常見(jiàn)的iris數(shù)據(jù)集,房?jī)r(jià)數(shù)據(jù),電影評(píng)分?jǐn)?shù)據(jù)集等等,數(shù)據(jù)質(zhì)量都很高,沒(méi)有缺失值,沒(méi)有異常點(diǎn),也沒(méi)有噪音,而在真實(shí)數(shù)據(jù)中,我們拿到的數(shù)據(jù)可能包含了大量的缺失值,可能包含大量的噪音,也可能因?yàn)槿斯や浫脲e(cuò)誤導(dǎo)致有異常點(diǎn)存在,對(duì)我們挖據(jù)出有效信息造成了一定的困擾,所以我們需要通過(guò)一些方法,盡量提高數(shù)據(jù)的質(zhì)量。數(shù)據(jù)清洗一般包括以下幾個(gè)步驟:

一.分析數(shù)據(jù)

二.缺失值處理

三.異常值處理

四.去重處理

五.噪音數(shù)據(jù)處理

六.一些實(shí)用的數(shù)據(jù)處理小工具

一.分析數(shù)據(jù)

在實(shí)際項(xiàng)目中,當(dāng)我們確定需求后就會(huì)去找相應(yīng)的數(shù)據(jù),拿到數(shù)據(jù)后,首先要對(duì)數(shù)據(jù)進(jìn)行描述性統(tǒng)計(jì)分析,查看哪些數(shù)據(jù)是不合理的,也可以知道數(shù)據(jù)的基本情況。如果是銷(xiāo)售額數(shù)據(jù)可以通過(guò)分析不同商品的銷(xiāo)售總額、人均消費(fèi)額、人均消費(fèi)次數(shù)等,同一商品的不同時(shí)間的消費(fèi)額、消費(fèi)頻次等等,了解數(shù)據(jù)的基本情況。此外可以通過(guò)作圖的方式了解數(shù)據(jù)的質(zhì)量,有無(wú)異常點(diǎn),有無(wú)噪音等。舉個(gè)例子(這里數(shù)據(jù)較少,就直接用R作圖了):

#一組年薪超過(guò)10萬(wàn)元的經(jīng)理收入 pay=c(11,19,14,22,14,28,13,81,12,43,11,16,31,16,23.42,22,26,17,22,13,27,180,16,43,82,14,11,51,76,28,66,29,14,14,65,37,16,37,35,39,27,14,17,13,38,28,40,85,32,25,26,16,12,54,40,18,27,16,14,33,29,77,50,19,34) par(mfrow=c(2,2))#將繪圖窗口改成2*2,可同時(shí)顯示四幅圖 hist(pay)#繪制直方圖 dotchart(pay)#繪制點(diǎn)圖 barplot(pay,horizontal=T)#繪制箱型圖 qqnorm(pay);qqline(pay)#繪制Q-Q圖

上面四幅圖可以很清楚的看出,180是異常值,即第23個(gè)數(shù)據(jù)需要清理。

python中也包含了大量的統(tǒng)計(jì)命令,其中主要的統(tǒng)計(jì)特征函數(shù)如下圖所示:

二.缺失值處理

缺失值在實(shí)際數(shù)據(jù)中是不可避免的問(wèn)題,有的人看到有缺失的數(shù)據(jù)就直接刪除了,有的人直接賦予0值或者某一個(gè)特殊的值,那么到底該怎么處理呢?對(duì)于不同的數(shù)據(jù)場(chǎng)景應(yīng)該采取不同的策略,首先應(yīng)該判斷缺失值的分布情況:

1 import scipy as sp 2 data = sp.genfromtxt("web_traffic.tsv",delimiter = "\t")

數(shù)據(jù)情況如下:

>>>data array([[ 1.00000000e+00, 2.27200000e+03], [ 2.00000000e+00, nan], [ 3.00000000e+00, 1.38600000e+03], ..., [ 7.41000000e+02, 5.39200000e+03], [ 7.42000000e+02, 5.90600000e+03], [ 7.43000000e+02, 4.88100000e+03]]) >>> print data[:10] [[ 1.00000000e+00 2.27200000e+03] [ 2.00000000e+00 nan] [ 3.00000000e+00 1.38600000e+03] [ 4.00000000e+00 1.36500000e+03] [ 5.00000000e+00 1.48800000e+03] [ 6.00000000e+00 1.33700000e+03] [ 7.00000000e+00 1.88300000e+03] [ 8.00000000e+00 2.28300000e+03] [ 9.00000000e+00 1.33500000e+03] [ 1.00000000e+01 1.02500000e+03]] >>> data.shape (743, 2)

可以看到,第2列已經(jīng)出現(xiàn)了缺失值,現(xiàn)在我們來(lái)看一下缺失值的數(shù)量:

1 >>> x = data[:,0] 2 >>> y = data[:,1] 3 >>> sp.sum(sp.isnan(y)) 4 8

在743個(gè)數(shù)據(jù)里只有8個(gè)數(shù)據(jù)缺失,所以刪除它們對(duì)于整體數(shù)據(jù)情況影響不大。當(dāng)然,這是缺失值少的情況下,在缺失值值比較多,而這個(gè)維度的信息還很重要的時(shí)候(因?yàn)槿笔е等绻剂?5%以上,可以直接去掉這個(gè)維度的數(shù)據(jù)了),直接刪除會(huì)對(duì)后面的算法跑的結(jié)果造成不好的影響。我們常用的方法有以下幾種:

1.直接刪除----適合缺失值數(shù)量較小,并且是隨機(jī)出現(xiàn)的,刪除它們對(duì)整體數(shù)據(jù)影響不大的情況。

2.使用一個(gè)全局常量填充---譬如將缺失值用“Unknown”等填充,但是效果不一定好,因?yàn)樗惴赡軙?huì)把它識(shí)別為一個(gè)新的類(lèi)別,一般很少用。

3.使用均值或中位數(shù)代替----優(yōu)點(diǎn):不會(huì)減少樣本信息,處理簡(jiǎn)單。缺點(diǎn):當(dāng)缺失數(shù)據(jù)不是隨機(jī)數(shù)據(jù)時(shí)會(huì)產(chǎn)生偏差.對(duì)于正常分布的數(shù)據(jù)可以使用均值代替,如果數(shù)據(jù)是傾斜的,使用中位數(shù)可能更好。

4.插補(bǔ)法

1)隨機(jī)插補(bǔ)法----從總體中隨機(jī)抽取某個(gè)樣本代替缺失樣本

2)多重插補(bǔ)法----通過(guò)變量之間的關(guān)系對(duì)缺失數(shù)據(jù)進(jìn)行預(yù)測(cè),利用蒙特卡洛方法生成多個(gè)完整的數(shù)據(jù)集,在對(duì)這些數(shù)據(jù)集進(jìn)行分析,最后對(duì)分析結(jié)果進(jìn)行匯總處理

3)熱平臺(tái)插補(bǔ)----指在非缺失數(shù)據(jù)集中找到一個(gè)與缺失值所在樣本相似的樣本(匹配樣本),利用其中的觀測(cè)值對(duì)缺失值進(jìn)行插補(bǔ)。

優(yōu)點(diǎn):簡(jiǎn)單易行,準(zhǔn)去率較高

缺點(diǎn):變量數(shù)量較多時(shí),通常很難找到與需要插補(bǔ)樣本完全相同的樣本。但我們可以按照某些變量將數(shù)據(jù)分層,在層中對(duì)缺失值實(shí)用均值插補(bǔ)

4)拉格朗日差值法和牛頓插值法(簡(jiǎn)單高效,數(shù)值分析里的內(nèi)容,數(shù)學(xué)公式以后再補(bǔ) = =)

5.建模法

可以用回歸、使用貝葉斯形式化方法的基于推理的工具或決策樹(shù)歸納確定。例如,利用數(shù)據(jù)集中其他數(shù)據(jù)的屬性,可以構(gòu)造一棵判定樹(shù),來(lái)預(yù)測(cè)缺失值的值。

以上方法各有優(yōu)缺點(diǎn),具體情況要根據(jù)實(shí)際數(shù)據(jù)分分布情況、傾斜程度、缺失值所占比例等等來(lái)選擇方法。一般而言,建模法是比較常用的方法,它根據(jù)已有的值來(lái)預(yù)測(cè)缺失值,準(zhǔn)確率更高。

三.異常值處理

異常值我們通常也稱(chēng)為“離群點(diǎn)”。在講分析數(shù)據(jù)時(shí),我們舉了個(gè)例子說(shuō)明如何發(fā)現(xiàn)離群點(diǎn),除了畫(huà)圖(畫(huà)圖其實(shí)并不常用,因?yàn)閿?shù)據(jù)量多時(shí)不好畫(huà)圖,而且慢),還有很多其他方法:

1.簡(jiǎn)單的統(tǒng)計(jì)分析

拿到數(shù)據(jù)后可以對(duì)數(shù)據(jù)進(jìn)行一個(gè)簡(jiǎn)單的描述性統(tǒng)計(jì)分析,譬如最大最小值可以用來(lái)判斷這個(gè)變量的取值是否超過(guò)了合理的范圍,如客戶(hù)的年齡為-20歲或200歲,顯然是不合常理的,為異常值。

在python中可以直接用pandas的describe():

>>> import pandas as pd >>> data = pd.read_table("web_traffic.tsv",header = None) >>> data.describe() 0 1 count 743.000000 735.000000 mean 372.000000 1962.165986 std 214.629914 860.720997 min 1.000000 472.000000 25% 186.500000 1391.000000 50% 372.000000 1764.000000 75% 557.500000 2217.500000 max 743.000000 5906.000000

2.3?原則

如果數(shù)據(jù)服從正態(tài)分布,在3?原則下,異常值為一組測(cè)定值中與平均值的偏差超過(guò)3倍標(biāo)準(zhǔn)差的值。如果數(shù)據(jù)服從正態(tài)分布,距離平均值3?之外的值出現(xiàn)的概率為P(|x-u| > 3?) <= 0.003,屬于極個(gè)別的小概率事件。如果數(shù)據(jù)不服從正態(tài)分布,也可以用遠(yuǎn)離平均值的多少倍標(biāo)準(zhǔn)差來(lái)描述。

3.箱型圖分析

箱型圖提供了識(shí)別異常值的一個(gè)標(biāo)準(zhǔn):如果一個(gè)值小于QL01.5IQR或大于OU-1.5IQR的值,則被稱(chēng)為異常值。QL為下四分位數(shù),表示全部觀察值中有四分之一的數(shù)據(jù)取值比它?。籕U為上四分位數(shù),表示全部觀察值中有四分之一的數(shù)據(jù)取值比它大;IQR為四分位數(shù)間距,是上四分位數(shù)QU與下四分位數(shù)QL的差值,包含了全部觀察值的一半。箱型圖判斷異常值的方法以四分位數(shù)和四分位距為基礎(chǔ),四分位數(shù)具有魯棒性:25%的數(shù)據(jù)可以變得任意遠(yuǎn)并且不會(huì)干擾四分位數(shù),所以異常值不能對(duì)這個(gè)標(biāo)準(zhǔn)施加影響。因此箱型圖識(shí)別異常值比較客觀,在識(shí)別異常值時(shí)有一定的優(yōu)越性。

4.基于模型檢測(cè)

首先建立一個(gè)數(shù)據(jù)模型,異常是那些同模型不能完美擬合的對(duì)象;如果模型是簇的集合,則異常是不顯著屬于任何簇的對(duì)象;在使用回歸模型時(shí),異常是相對(duì)遠(yuǎn)離預(yù)測(cè)值的對(duì)象

優(yōu)缺點(diǎn):1.有堅(jiān)實(shí)的統(tǒng)計(jì)學(xué)理論基礎(chǔ),當(dāng)存在充分的數(shù)據(jù)和所用的檢驗(yàn)類(lèi)型的知識(shí)時(shí),這些檢驗(yàn)可能非常有效;2.對(duì)于多元數(shù)據(jù),可用的選擇少一些,并且對(duì)于高維數(shù)據(jù),這些檢測(cè)可能性很差。

5.基于距離

通??梢栽趯?duì)象之間定義鄰近性度量,異常對(duì)象是那些遠(yuǎn)離其他對(duì)象的對(duì)象

優(yōu)缺點(diǎn):1.簡(jiǎn)單;2.缺點(diǎn):基于鄰近度的方法需要O(m2)時(shí)間,大數(shù)據(jù)集不適用;3.該方法對(duì)參數(shù)的選擇也是敏感的;4.不能處理具有不同密度區(qū)域的數(shù)據(jù)集,因?yàn)樗褂萌珠撝担荒芸紤]這種密度的變化。

6.基于密度

當(dāng)一個(gè)點(diǎn)的局部密度顯著低于它的大部分近鄰時(shí)才將其分類(lèi)為離群點(diǎn)。適合非均勻分布的數(shù)據(jù)。

優(yōu)缺點(diǎn):1.給出了對(duì)象是離群點(diǎn)的定量度量,并且即使數(shù)據(jù)具有不同的區(qū)域也能夠很好的處理;2.與基于距離的方法一樣,這些方法必然具有O(m2)的時(shí)間復(fù)雜度。對(duì)于低維數(shù)據(jù)使用特定的數(shù)據(jù)結(jié)構(gòu)可以達(dá)到O(mlogm);3.參數(shù)選擇困難。雖然算法通過(guò)觀察不同的k值,取得最大離群點(diǎn)得分來(lái)處理該問(wèn)題,但是,仍然需要選擇這些值的上下界。

7.基于聚類(lèi):

基于聚類(lèi)的離群點(diǎn):一個(gè)對(duì)象是基于聚類(lèi)的離群點(diǎn),如果該對(duì)象不強(qiáng)屬于任何簇。離群點(diǎn)對(duì)初始聚類(lèi)的影響:如果通過(guò)聚類(lèi)檢測(cè)離群點(diǎn),則由于離群點(diǎn)影響聚類(lèi),存在一個(gè)問(wèn)題:結(jié)構(gòu)是否有效。為了處理該問(wèn)題,可以使用如下方法:對(duì)象聚類(lèi),刪除離群點(diǎn),對(duì)象再次聚類(lèi)(這個(gè)不能保證產(chǎn)生最優(yōu)結(jié)果)。

優(yōu)缺點(diǎn):1.基于線(xiàn)性和接近線(xiàn)性復(fù)雜度(k均值)的聚類(lèi)技術(shù)來(lái)發(fā)現(xiàn)離群點(diǎn)可能是高度有效的;2.簇的定義通常是離群點(diǎn)的補(bǔ),因此可能同時(shí)發(fā)現(xiàn)簇和離群點(diǎn);3.產(chǎn)生的離群點(diǎn)集和它們的得分可能非常依賴(lài)所用的簇的個(gè)數(shù)和數(shù)據(jù)中離群點(diǎn)的存在性;4.聚類(lèi)算法產(chǎn)生的簇的質(zhì)量對(duì)該算法產(chǎn)生的離群點(diǎn)的質(zhì)量影響非常大。

處理方法:

1.刪除異常值----明顯看出是異常且數(shù)量較少可以直接刪除

2.不處理---如果算法對(duì)異常值不敏感則可以不處理,但如果算法對(duì)異常值敏感,則最好不要用,如基于距離計(jì)算的一些算法,包括kmeans,knn之類(lèi)的。

3.平均值替代----損失信息小,簡(jiǎn)單高效。

4.視為缺失值----可以按照處理缺失值的方法來(lái)處理

四.去重處理

以DataFrame數(shù)據(jù)格式為例:

#創(chuàng)建數(shù)據(jù),data里包含重復(fù)數(shù)據(jù) >>> data = pd.DataFrame({'v1':['a']*5+['b']* 4,'v2':[1,2,2,2,3,4,4,5,3]}) >>> data v1 v2 0 a 1 1 a 2 2 a 2 3 a 2 4 a 3 5 b 4 6 b 4 7 b 5 8 b 3 #DataFrame的duplicated方法返回一個(gè)布爾型Series,表示各行是否是重復(fù)行 >>> data.duplicated() 0 False 1 False 2 True 3 True 4 False 5 False 6 True 7 False 8 False dtype: bool #drop_duplicates方法用于返回一個(gè)移除了重復(fù)行的DataFrame >>> data.drop_duplicates() v1 v2 0 a 1 1 a 2 4 a 3 5 b 4 7 b 5 8 b 3 #這兩個(gè)方法默認(rèn)會(huì)判斷全部列,你也可以指定部分列進(jìn)行重復(fù)項(xiàng)判斷。假設(shè)你還有一列值,且只希望根據(jù)v1列過(guò)濾重復(fù)項(xiàng): >>> data['v3']=range(9) >>> data v1 v2 v3 0 a 1 0 1 a 2 1 2 a 2 2 3 a 2 3 4 a 3 4 5 b 4 5 6 b 4 6 7 b 5 7 8 b 3 8 >>> data.drop_duplicates(['v1']) v1 v2 v3 0 a 1 0 5 b 4 5 #duplicated和drop_duplicates默認(rèn)保留的是第一個(gè)出現(xiàn)的值組合。傳入take_last=True則保留最后一個(gè): >>> data.drop_duplicates(['v1','v2'],take_last = True) v1 v2 v3 0 a 1 0 3 a 2 3 4 a 3 4 6 b 4 6 7 b 5 7 8 b 3 8

如果數(shù)據(jù)是列表格式的,有以下幾種方法可以刪除

list0=['b','c', 'd','b','c','a','a'] 方法1:使用set() list1=sorted(set(list0),key=list0.index) # sorted output print( list1) 方法2:使用 {}.fromkeys().keys() list2={}.fromkeys(list0).keys() print(list2) 方法3:set()+sort() list3=list(set(list0)) list3.sort(key=list0.index) print(list3) 方法4:迭代 list4=[] for i in list0: if not i in list4: list4.append(i) print(list4) 方法5:排序后比較相鄰2個(gè)元素的數(shù)據(jù),重復(fù)的刪除 def sortlist(list0): list0.sort() last=list0[-1] for i in range(len(list0)-2,-1,-1): if list0[i]==last: list0.remove(list0[i]) else: last=list0[i] return list0 print(sortlist(list0))

五.噪音處理

噪音,是被測(cè)量變量的隨機(jī)誤差或方差。我們?cè)谏衔闹刑岬竭^(guò)異常點(diǎn)(離群點(diǎn)),那么離群點(diǎn)和噪音是不是一回事呢?我們知道,觀測(cè)量(Measurement) = 真實(shí)數(shù)據(jù)(True Data) + 噪聲 (Noise)。離群點(diǎn)(Outlier)屬于觀測(cè)量,既有可能是真實(shí)數(shù)據(jù)產(chǎn)生的,也有可能是噪聲帶來(lái)的,但是總的來(lái)說(shuō)是和大部分觀測(cè)量之間有明顯不同的觀測(cè)值。。噪音包括錯(cuò)誤值或偏離期望的孤立點(diǎn)值,但也不能說(shuō)噪聲點(diǎn)包含離群點(diǎn),雖然大部分?jǐn)?shù)據(jù)挖掘方法都將離群點(diǎn)視為噪聲或異常而丟棄。然而,在一些應(yīng)用(例如:欺詐檢測(cè)),會(huì)針對(duì)離群點(diǎn)做離群點(diǎn)分析或異常挖掘。而且有些點(diǎn)在局部是屬于離群點(diǎn),但從全局看是正常的。

我在quora上看到過(guò)一個(gè)解釋噪音與離群點(diǎn)的有趣的例子:

Outlier: you are enumerating meticulously everything you have. You found 3 dimes, 1 quarter and wow a 100 USD bill you had put there last time you bought some booze and had totally forgot there. The 100 USD bill is an outlier, as it's not commonly expected in a pocket.

Noise: you have just come back from that club and are pretty much wasted. You try to find some money to buy something to sober up, but you have trouble reading the figures correctly on the coins. You found 3 dimes, 1 quarter and wow a 100 USD bill. But in fact, you have mistaken the quarter for a dime: this mistake introduces noise in the data you have access to.

To put it otherwise, data = true signal + noise. Outliers are part of the data.

翻譯過(guò)來(lái)就是:

離群點(diǎn): 你正在從口袋的零錢(qián)包里面窮舉里面的錢(qián),你發(fā)現(xiàn)了3個(gè)一角,1個(gè)五毛,和一張100元的毛爺爺向你微笑。這個(gè)100元就是個(gè)離群點(diǎn),因?yàn)椴⒉粦?yīng)該常出現(xiàn)在口袋里..

噪聲: 你晚上去三里屯喝的酩酊大醉,很需要買(mǎi)點(diǎn)東西清醒清醒,這時(shí)候你開(kāi)始翻口袋的零錢(qián)包,嘛,你發(fā)現(xiàn)了3個(gè)一角,1個(gè)五毛,和一張100元的毛爺爺向你微笑。但是你突然眼暈,把那三個(gè)一角看成了三個(gè)1元...這樣錯(cuò)誤的判斷使得數(shù)據(jù)集中出現(xiàn)了噪聲

那么對(duì)于噪音我們應(yīng)該如何處理呢?有以下幾種方法:

1.分箱法

分箱方法通過(guò)考察數(shù)據(jù)的“近鄰”(即,周?chē)闹担﹣?lái)光滑有序數(shù)據(jù)值。這些有序的值被分布到一些“桶”或箱中。由于分箱方法考察近鄰的值,因此它進(jìn)行局部光滑。

用箱均值光滑:箱中每一個(gè)值被箱中的平均值替換。

用箱中位數(shù)平滑:箱中的每一個(gè)值被箱中的中位數(shù)替換。

用箱邊界平滑:箱中的最大和最小值同樣被視為邊界。箱中的每一個(gè)值被最近的邊界值替換。

一般而言,寬度越大,光滑效果越明顯。箱也可以是等寬的,其中每個(gè)箱值的區(qū)間范圍是個(gè)常量。分箱也可以作為一種離散化技術(shù)使用.

2. 回歸法

可以用一個(gè)函數(shù)擬合數(shù)據(jù)來(lái)光滑數(shù)據(jù)。線(xiàn)性回歸涉及找出擬合兩個(gè)屬性(或變量)的“最佳”直線(xiàn),使得一個(gè)屬性能夠預(yù)測(cè)另一個(gè)。多線(xiàn)性回歸是線(xiàn)性回歸的擴(kuò)展,它涉及多于兩個(gè)屬性,并且數(shù)據(jù)擬合到一個(gè)多維面。使用回歸,找出適合數(shù)據(jù)的數(shù)學(xué)方程式,能夠幫助消除噪聲。

六.一些實(shí)用的數(shù)據(jù)處理小工具

1.去掉文件中多余的空行

空行主要指的是(\n,\r,\r\n,\n\r等),在python中有個(gè)strip()的方法,該方法可以去掉字符串兩端多余的“空白”,此處的空白主要包括空格,制表符(\t),換行符。不過(guò)親測(cè)以后發(fā)現(xiàn),strip()可以匹配掉\n,\r\n,\n\r等,但是過(guò)濾不掉單獨(dú)的\r。為了萬(wàn)無(wú)一失,我還是喜歡用麻煩的辦法,如下:

#-*- coding :utf-8 -*- #文本格式化處理,過(guò)濾掉空行 file = open('123.txt') i = 0 while 1: line = file.readline().strip() if not line: break i = i + 1 line1 = line.replace('\r','') f1 = open('filename.txt','a') f1.write(line1 + '\n') f1.close() print str(i)

2.如何判斷文件的編碼格式

#-*- coding:utf8 -*- #批量處理編碼格式轉(zhuǎn)換(優(yōu)化) import os import chardet path1 = 'E://2016txtutf/' def dirlist(path): filelist = os.listdir(path) for filename in filelist: filepath = os.path.join(path, filename) if os.path.isdir(filepath): dirlist(filepath) else: if filepath.endswith('.txt'): f = open(filepath) data = f.read() if chardet.detect(data)['encoding'] != 'utf-8': print filepath + "----"+ chardet.detect(data)['encoding'] dirlist(path1)

3.文件編碼格式轉(zhuǎn)換,gbk與utf-8之間的轉(zhuǎn)換

這個(gè)主要是在一些對(duì)文件編碼格式有特殊需求的時(shí)候,需要批量將gbk的轉(zhuǎn)utf-8的或者將utf-8編碼的文件轉(zhuǎn)成gbk編碼格式的。

#-*- coding:gbk -*- #批量處理編碼格式轉(zhuǎn)換 import codecs import os path1 = 'E://dir/' def ReadFile(filePath,encoding="utf-8"): with codecs.open(filePath,"r",encoding) as f: return f.read() def WriteFile(filePath,u,encoding="gbk"): with codecs.open(filePath,"w",encoding) as f: f.write(u) def UTF8_2_GBK(src,dst): content = ReadFile(src,encoding="utf-8") WriteFile(dst,content,encoding="gbk") def GBK_2_UTF8(src,dst): content = ReadFile(src,encoding="gbk") WriteFile(dst,content,encoding="utf-8") def dirlist(path): filelist = os.listdir(path) for filename in filelist: filepath = os.path.join(path, filename) if os.path.isdir(filepath): dirlist(filepath) else: if filepath.endswith('.txt'): print filepath #os.rename(filepath, filepath.replace('.txt','.doc')) try: UTF8_2_GBK(filepath,filepath) except Exception,ex: f = open('error.txt','a') f.write(filepath + '\n') f.close() dirlist(path1)

剛寫(xiě)完比較粗糙,以后會(huì)不斷修改。下篇寫(xiě)數(shù)據(jù)轉(zhuǎn)換方面的內(nèi)容,包括標(biāo)準(zhǔn)化,歸一化正則化等。如果有錯(cuò)誤,歡迎指正!

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 噪音
    +關(guān)注

    關(guān)注

    1

    文章

    170

    瀏覽量

    24101
  • 數(shù)據(jù)處理
    +關(guān)注

    關(guān)注

    0

    文章

    625

    瀏覽量

    28957

原文標(biāo)題:機(jī)器學(xué)習(xí)基礎(chǔ)與實(shí)踐(一)----數(shù)據(jù)清洗

文章出處:【微信號(hào):AI_shequ,微信公眾號(hào):人工智能愛(ài)好者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    不同應(yīng)用程序怎樣進(jìn)行數(shù)據(jù)交換

    有兩個(gè)使用labview編寫(xiě)的上位機(jī),把他們整合成一個(gè)程序太麻煩了,有什么方法可以在不同的應(yīng)用程序進(jìn)行數(shù)據(jù)交換?
    發(fā)表于 01-17 13:41

    多列列表框數(shù)據(jù)行數(shù),請(qǐng)問(wèn)怎么獲取最新一行數(shù)據(jù)行數(shù)?

    各位大神,我用多列列表框顯示更新的數(shù)據(jù),請(qǐng)問(wèn)怎么獲取最新一行數(shù)據(jù)行數(shù),我想通過(guò)該行數(shù)索引數(shù)組元素。。。
    發(fā)表于 07-09 11:23

    請(qǐng)問(wèn)通過(guò)DSP5416的MCBSP口進(jìn)行數(shù)據(jù)采集,怎樣進(jìn)行配置

    我是新手,想通過(guò)DSP5416的MCBSP口進(jìn)行數(shù)據(jù)采集,然后發(fā)回PC。通過(guò)4路麥克風(fēng)采集四路話(huà)音信號(hào),經(jīng)過(guò)PCM4204進(jìn)行AD轉(zhuǎn)換后把四路合成2個(gè)兩路,但是對(duì)MCBSP這一塊不熟悉,怎樣進(jìn)行配置
    發(fā)表于 07-31 07:14

    PCB為什么進(jìn)行清洗

    挫敗或困惑。我也曾經(jīng)經(jīng)歷過(guò)這種痛苦。為避免鉆進(jìn)類(lèi)似的死胡同,我向大家介紹一個(gè)簡(jiǎn)單而又非常重要的小技巧:為其保持清潔!我這么說(shuō)是什么意思?就是說(shuō)如果PCB 沒(méi)有保持適當(dāng)?shù)那鍧崳?PCB 裝配或修改
    發(fā)表于 09-20 15:08

    PCB為什么進(jìn)行清洗

    。為避免鉆進(jìn)類(lèi)似的死胡同,我向大家介紹一個(gè)簡(jiǎn)單而又非常重要的小技巧:為其保持清潔!  我這么說(shuō)是什么意思?就是說(shuō)如果PCB 沒(méi)有保持適當(dāng)?shù)那鍧?,?PCB 裝配或修改過(guò)程中使用的某些材料可導(dǎo)致嚴(yán)重
    發(fā)表于 09-20 10:30

    STM32 USART串口是如何進(jìn)行數(shù)據(jù)處理的

    STM32 USART串口接收數(shù)據(jù)的具體步驟有哪些?STM32 USART串口是如何進(jìn)行數(shù)據(jù)處理的?
    發(fā)表于 11-25 08:56

    怎樣使用STM32的串口進(jìn)行數(shù)據(jù)的接收或者發(fā)送

    STM32串口通信可分為哪幾類(lèi)?怎樣使用STM32的串口進(jìn)行數(shù)據(jù)的接收或者發(fā)送?
    發(fā)表于 12-06 07:09

    DMA進(jìn)行數(shù)據(jù)傳輸和CPU進(jìn)行數(shù)據(jù)傳輸?shù)囊蓡?wèn)

    原先的總線(xiàn)矩陣+仲裁器結(jié)構(gòu)中的數(shù)據(jù)總線(xiàn)進(jìn)行數(shù)據(jù)傳輸?shù)模?接上一個(gè)問(wèn)題,如果是的話(huà),那么當(dāng)進(jìn)行DMA數(shù)據(jù)傳輸時(shí),必定是需要占用數(shù)據(jù)總線(xiàn)的,那么
    發(fā)表于 05-25 17:18

    如何更好地進(jìn)行數(shù)據(jù)采集

    如何更好地進(jìn)行數(shù)據(jù)采集 工程師經(jīng)常需要進(jìn)行數(shù)據(jù)采集來(lái)驗(yàn)證產(chǎn)品的性能和指標(biāo),或者對(duì)一些特定的應(yīng)用進(jìn)行監(jiān)測(cè)和控制,以便確定其物理參數(shù),例如溫度、應(yīng)力、壓
    發(fā)表于 01-04 10:32 ?1691次閱讀
    如何更好地<b class='flag-5'>進(jìn)行數(shù)據(jù)</b>采集

    什么是信號(hào)處理?如何進(jìn)行數(shù)字信號(hào)處理

    什么是信號(hào)處理?如何進(jìn)行數(shù)字信號(hào)處理? 在我們的周?chē)嬖谥鵀閿?shù)眾多的"信號(hào)"。如:從茫茫宇宙中的天體發(fā)出的微弱電波信號(hào),移動(dòng)電話(huà)發(fā)出
    發(fā)表于 03-06 10:13 ?3422次閱讀

    為什么發(fā)動(dòng)機(jī)臟了清洗_發(fā)動(dòng)機(jī)艙能不能直接用水槍沖洗_發(fā)動(dòng)機(jī)清洗方法

    清洗發(fā)動(dòng)機(jī)艙可不是一件隨意的事情,許多車(chē)輛的使用說(shuō)明書(shū)都有明文規(guī)定。為什么發(fā)動(dòng)機(jī)臟了清洗?發(fā)動(dòng)機(jī)怎樣清洗,注意事項(xiàng)有些什么
    發(fā)表于 01-08 18:28 ?8747次閱讀

    Python在音頻(Audio)領(lǐng)域中,如何進(jìn)行數(shù)據(jù)擴(kuò)充?

    經(jīng)典的深度學(xué)習(xí)網(wǎng)絡(luò)AlexNet使用數(shù)據(jù)擴(kuò)充(Data Augmentation)的方式擴(kuò)大數(shù)據(jù)集,取得較好的分類(lèi)效果。在深度學(xué)習(xí)的圖像領(lǐng)域中,通過(guò)平移、 翻轉(zhuǎn)、加噪等方法進(jìn)行數(shù)據(jù)擴(kuò)充。但是,在音頻(Audio)領(lǐng)域中,如何
    的頭像 發(fā)表于 04-15 10:35 ?1.1w次閱讀

    如何用R處理進(jìn)行數(shù)據(jù)清洗

    R是進(jìn)行運(yùn)算、清洗、匯總及生成概率統(tǒng)計(jì)等數(shù)據(jù)處理的一個(gè)絕佳選擇。此外,由于它獨(dú)立于平臺(tái)、短期內(nèi)不會(huì)消失,所以生成的程序可以在任何地方運(yùn)行。并且,它具備非常棒的輔助資源。
    發(fā)表于 06-23 09:41 ?1595次閱讀
    如何用R處理<b class='flag-5'>進(jìn)行數(shù)據(jù)</b><b class='flag-5'>清洗</b>

    超聲波清洗設(shè)備能夠?qū)δ男┕ぜ?b class='flag-5'>進(jìn)行有效清洗?

    對(duì)哪些工件進(jìn)行有效清洗? 1、半導(dǎo)體類(lèi)的工件 超聲波清洗設(shè)備可以清洗的半導(dǎo)體類(lèi)工件有集成電路、功率管、硅片、鎵砷化
    的頭像 發(fā)表于 09-02 20:03 ?1626次閱讀
    超聲波<b class='flag-5'>清洗</b>設(shè)備能夠?qū)δ男┕ぜ?b class='flag-5'>進(jìn)行</b>有效<b class='flag-5'>清洗</b><b class='flag-5'>呢</b>?

    如何使用SQL進(jìn)行數(shù)據(jù)分析

    使用SQL進(jìn)行數(shù)據(jù)分析是一個(gè)強(qiáng)大且靈活的過(guò)程,它涉及從數(shù)據(jù)庫(kù)中提取、清洗、轉(zhuǎn)換和聚合數(shù)據(jù),以便進(jìn)行進(jìn)一步的分析和洞察。 1.
    的頭像 發(fā)表于 11-19 10:26 ?970次閱讀