現(xiàn)在各行各業(yè)都離不開數(shù)據(jù)庫(kù)的使用,對(duì)于數(shù)據(jù)庫(kù)的管理更是不能懈怠。那么如何做好數(shù)據(jù)清洗和轉(zhuǎn)換呢?當(dāng)然離不開數(shù)據(jù)處理工具,數(shù)據(jù)處理工具在能夠使用數(shù)據(jù)集前可以用于清洗,處理和了解數(shù)據(jù)集。一般一組因?yàn)樘蠖鵁o(wú)法由人工手動(dòng)讀取,檢查還有編輯每個(gè)值的數(shù)據(jù),仍然需要驗(yàn)證其質(zhì)量和適用性,然后我們才可以將其委托給一個(gè)值得花費(fèi)時(shí)間和計(jì)算的模型,下面我們就來(lái)具體看看數(shù)據(jù)處理工具有哪些?如何做好數(shù)據(jù)清洗和轉(zhuǎn)換?
與將大型數(shù)據(jù)集的樣本轉(zhuǎn)儲(chǔ)到電子表格程序中的方法一樣簡(jiǎn)單,只需查看每列中出現(xiàn)的值的類型或范圍,即可識(shí)別諸如不負(fù)責(zé)任的默認(rèn)值之類的錯(cuò)誤(例如,在沒有測(cè)量值的情況下,使用零而不是NULL)或不可能的范圍或不兼容的合并(數(shù)據(jù)似乎來(lái)自多個(gè)來(lái)源,每個(gè)來(lái)源中使用了不同的單位。例如,華氏度與攝氏度)。
數(shù)據(jù)分析工具非常豐富。當(dāng)數(shù)據(jù)集太大而無(wú)法在電子表格程序中打開時(shí),Python腳本或像RStudio這樣的應(yīng)用程序具有可視化、匯總或報(bào)告數(shù)據(jù)的強(qiáng)大功能。使用你熟悉的任何方法,至少要確定不同屬性值的格式和一般分布。
數(shù)據(jù)處理工具,在能夠使用數(shù)據(jù)集之前,有許多工具可以用于清洗、處理和了解數(shù)據(jù)集。Python是這方面的事實(shí)標(biāo)準(zhǔn),它有很多工具來(lái)理解和處理數(shù)據(jù)。Matplotlib之類的包,通常可以非常容易地生成用于可視化檢查的數(shù)據(jù)圖表。
Pillow提供各種處理、轉(zhuǎn)換和操作圖像的功能。Python有一個(gè)用于執(zhí)行統(tǒng)計(jì)的內(nèi)置程序包,如果需要更多功能的話,NumPy也有。Python還具有廣泛的內(nèi)置和第三方支持內(nèi)容,可處理你將要遇到的幾乎所有文件格式,包括CSV、JSON、YAML、XML和HTML,以及更深?yuàn)W的格式(如TOML或INI文件)。
如果這些都不起作用,則有一個(gè)值得搜索的軟件包索引器,可以查看是否有解決你的問題的方法。或者,只需搜索“我想用Python做事情”,大多數(shù)情況下,你會(huì)發(fā)現(xiàn)某人遇到了相同的問題,并為此提供了解決方案,或者至少提供了一些可以查看的指引。
如果你不喜歡Python,那么幾乎所有選擇的編程語(yǔ)言都具有類似的工具和功能。我們之所以喜歡Python,是因?yàn)檫@些工作已經(jīng)為你完成了,而且有很多例子可以作為起點(diǎn)。Python在這方面沒有什么神奇之處,但它是最受歡迎的選擇,所以我們提倡堅(jiān)持使用主流工具。
另一個(gè)不錯(cuò)的選擇是電子表格程序,例如Excel、Numbers或Google Sheets。它們經(jīng)常受到指責(zé),因?yàn)樵谶@些程序中進(jìn)行數(shù)據(jù)準(zhǔn)備可能很麻煩,但在需要使用Python(或你選擇的其他工具)之前,你可以使用它們非常快速地獲得大量有用的洞見和準(zhǔn)備。作為系統(tǒng)附贈(zèng)的工具,你基本上肯定已經(jīng)安裝了其中一個(gè),并且可以在你的機(jī)器上運(yùn)行。
最后,我們不要害怕跳出框架思考像壓縮數(shù)據(jù)集這樣簡(jiǎn)單的東西,甚至不需要看數(shù)據(jù)集內(nèi)部就能大致了解數(shù)據(jù)集的熵大小。如果一個(gè)數(shù)據(jù)集壓縮得非常好,而來(lái)自相同來(lái)源的另一個(gè)數(shù)據(jù)集壓縮得不那么好,那么第二個(gè)數(shù)據(jù)集的數(shù)據(jù)的熵可能比第一個(gè)數(shù)據(jù)集的大。驗(yàn)證數(shù)據(jù)集的適應(yīng)性,到了這一步,你應(yīng)該花更多的時(shí)間仔細(xì)地看看你試圖解決的問題和打算用于任務(wù)的數(shù)據(jù)集。在AI應(yīng)用程序之前的數(shù)據(jù)分析世界中,可能沒有你想要的那么嚴(yán)格的規(guī)則,但你通常會(huì)知道一個(gè)解決方案是否可行,一個(gè)數(shù)據(jù)集是否能講述你想要的故事。相信這個(gè)小小的聲音,因?yàn)槿绻慊仡^看,會(huì)發(fā)現(xiàn)浪費(fèi)的工作是有價(jià)值的。再次探索你的數(shù)據(jù)。瀏覽并可視化它,用少量的數(shù)據(jù)子集測(cè)試你的解決方案—做你需要做的任何事情。如果感覺還是正確的,那就繼續(xù)前進(jìn)。
通過Turi Create了解你的數(shù)據(jù),在了解數(shù)據(jù)集的過程中,你可能會(huì)遇到一些錯(cuò)誤。記錄數(shù)據(jù)可能會(huì)產(chǎn)生錯(cuò)誤。一致值錯(cuò)誤包括可能導(dǎo)致整列或一組值不準(zhǔn)確的情況,例如,使用儀器記錄某個(gè)被統(tǒng)一量校準(zhǔn)錯(cuò)誤的數(shù)據(jù),從產(chǎn)生額外熱量的物體旁邊測(cè)量溫度,使用未提前歸零的天平稱重,等等。這還包括來(lái)自不同來(lái)源的數(shù)據(jù)未經(jīng)轉(zhuǎn)換就被不當(dāng)合并的情況:簡(jiǎn)單壓縮一組來(lái)自美國(guó)和一組來(lái)自英國(guó)的數(shù)據(jù),現(xiàn)在系統(tǒng)認(rèn)為100攝氏度完全合理。單值錯(cuò)誤用于描述離群值或不一致的錯(cuò)誤校準(zhǔn),僅在少數(shù)情況下導(dǎo)致不準(zhǔn)確或完全不合邏輯的值。可能出現(xiàn)的情況,如傳感器超載一天,產(chǎn)生的值比理論可能的高1000%(應(yīng)該是相當(dāng)明顯的)。當(dāng)用于記錄數(shù)據(jù)的方法出現(xiàn)問題,或者數(shù)據(jù)集在其生命周期的某個(gè)時(shí)刻經(jīng)歷了某種畸形的轉(zhuǎn)換時(shí),可能會(huì)出現(xiàn)缺失值。這些可能是簡(jiǎn)單的nil或NULL值,或者一些不太有用的值,例如字符串"NONE"或默認(rèn)值0.有些甚至可能只是無(wú)意義的字符,什么都有可能出現(xiàn)。如果可以識(shí)別出一致誤差,那么這通常可以通過按一致誤差值縮放或轉(zhuǎn)換整個(gè)值集來(lái)糾正。單值錯(cuò)誤和缺失值要求你要么猜測(cè)需要使用某種可行方法替換的值,要么完全刪除行或者觀察值以防止出現(xiàn)誤差。你可以通過以下方法來(lái)猜測(cè)該值:獲取該列中所有其他值的平均值;使用該列中與缺失值最接近的觀察值;使用一些使用其他屬性知識(shí)的特定于應(yīng)用程序的方法。
轉(zhuǎn)換數(shù)據(jù),在使用數(shù)據(jù)之前進(jìn)行轉(zhuǎn)換有兩個(gè)主要原因:為了滿足要使用的算法的格式要求;使用新的推斷屬性改進(jìn)或擴(kuò)展當(dāng)前數(shù)據(jù)。對(duì)于這兩種目的,通常有三種數(shù)據(jù)轉(zhuǎn)換:
歸一化(normalization)一種用于數(shù)值數(shù)據(jù)的方法,它將上界和下界綁定到一個(gè)數(shù)值范圍上,使它們更容易處理。這方面的一個(gè)例子是對(duì)數(shù)值數(shù)據(jù)的觀察值需要與不同的度量進(jìn)行比較。如果你試圖根據(jù)魚的長(zhǎng)度、體重、年齡和失去眼睛的數(shù)量來(lái)評(píng)估不同魚的健康狀況,大概每個(gè)人都會(huì)同意用不同的標(biāo)準(zhǔn)來(lái)比較兩條魚(例如,一只眼睛與一年的魚,或者一厘米長(zhǎng)度的相比較)。如果用同樣的標(biāo)準(zhǔn)來(lái)比較,則會(huì)得出不同的結(jié)果。
歸一為正數(shù)值很簡(jiǎn)單:泛化(generalization)一種將特定值替換為更高級(jí)別的概念,以更好地進(jìn)行群體觀察的方法。當(dāng)記錄某些屬性的方法比需要的更精確時(shí),通常會(huì)發(fā)生這種情況。例如,如果你具有某人運(yùn)動(dòng)的GPS統(tǒng)計(jì)信息,則可以將緯度和經(jīng)度歸納為一個(gè)地址,從而防止系統(tǒng)將每一個(gè)小運(yùn)動(dòng)都視為位置變化。或者,將數(shù)值測(cè)量值轉(zhuǎn)換為人類群體,這意味著相關(guān)因素可能不是將個(gè)人的身高測(cè)量值以毫米為單位,而是將其分為低于、接近或高于平均的身高。
聚合(aggregation)對(duì)某些復(fù)雜屬性進(jìn)行總結(jié)以使分析更有效的一種方法。可以從文本中提取關(guān)鍵字(甚至是單詞頻率),而不是分析文本的段落(Attribute: Text,Classification: Class),只顯示與所給出的分類最相關(guān)或最獨(dú)特的方面。在這些步驟之前、之間或之后,可能會(huì)出現(xiàn)不同類型的數(shù)據(jù)轉(zhuǎn)換,數(shù)據(jù)可能被更改、擴(kuò)展或縮減:特征構(gòu)建(feature construction)一種創(chuàng)建新屬性的方法,通常通過推理或組合已有的其他值來(lái)實(shí)現(xiàn)。這方面的一個(gè)例子是泛化或聚合,其中原始值也被保留,或者更常見的是,當(dāng)存在兩個(gè)或多個(gè)值時(shí)(或允許發(fā)現(xiàn)第三個(gè)值)。例如,如果你有一家公司的名稱和經(jīng)營(yíng)所在國(guó),可以查一下它的商業(yè)登記號(hào);如果你有某人的身高和體重,可以構(gòu)建他們的BMI。數(shù)據(jù)規(guī)約(data reduction)一種刪除某些屬性的方法,這些屬性可能與另一個(gè)屬性相關(guān),也可能與你試圖解決的問題無(wú)關(guān)。例如,如果你有某人的地址、郵編和區(qū)號(hào),這些信息中至少有一條是多余的。也許—就像在特征構(gòu)建的例子中那樣—你由于一些算法的原因想要同時(shí)分析兩者,但這是不可能的。兩個(gè)或多個(gè)屬性之間的高度相關(guān)性表明,它們可能在分析中導(dǎo)致錯(cuò)誤,并可能被刪除。
以上我們介紹了關(guān)于數(shù)據(jù)處理工具和它的清洗和轉(zhuǎn)換,其實(shí)圖像數(shù)據(jù)集不是那么容易觀察到的,但絕對(duì)值得花時(shí)間瀏覽一下圖像的總體質(zhì)量,以及圖像使用了哪些裁剪方法。如果您想了解更多相關(guān)信息,請(qǐng)您繼續(xù)關(guān)注中培偉業(yè)。