使用 Python 進(jìn)行機(jī)器學(xué)習(xí):數(shù)據(jù)預(yù)處理技術(shù)
機(jī)器學(xué)習(xí)仍然是發(fā)展最快、需求量最大的技術(shù)領(lǐng)域之一。機(jī)器學(xué)習(xí)是人工智能的一個(gè)分支,它使計(jì)算機(jī)系統(tǒng)能夠?qū)W習(xí)和采用類似人類的特質(zhì),最終導(dǎo)致人工智能機(jī)器的發(fā)展。 下表列出了人工智能領(lǐng)域中,機(jī)器學(xué)習(xí)可以賦予計(jì)算機(jī)的八種關(guān)鍵類人特質(zhì)。
人力素質(zhì) |
人工智能學(xué)科(使用機(jī)器學(xué)習(xí)方法) |
視覺 |
計(jì)算機(jī)視覺 |
演講 |
自然語言處理 (NLP) |
運(yùn)動(dòng) |
機(jī)器人 |
理解 |
知識(shí)表示與推理 |
觸碰 |
觸覺 |
情商 |
情感計(jì)算(又稱情感人工智能) |
創(chuàng)造力 |
生成對(duì)抗網(wǎng)絡(luò) (GAN) |
決策 |
強(qiáng)化學(xué)習(xí) |
然而,創(chuàng)建人工智能的過程需要大量數(shù)據(jù)。在機(jī)器學(xué)習(xí)中,我們擁有的數(shù)據(jù)越多,用于訓(xùn)練模型的數(shù)據(jù)越多,模型(AI 代理)在處理給定提示或輸入以及最終完成訓(xùn)練任務(wù)方面的表現(xiàn)就越好。
這些數(shù)據(jù)并非以原始形式輸入到機(jī)器學(xué)習(xí)算法中。在輸入到學(xué)習(xí)算法之前,它(數(shù)據(jù))必須先經(jīng)過各種檢查和數(shù)據(jù)清理和準(zhǔn)備階段。我們將機(jī)器學(xué)習(xí)生命周期的這一階段稱為數(shù)據(jù)預(yù)處理階段。顧名思義,此階段包括將應(yīng)用于數(shù)據(jù)集(值的行/列)的所有操作和程序,以使其處于清潔狀態(tài),以便機(jī)器學(xué)習(xí)算法可以接受它并開始訓(xùn)練/學(xué)習(xí)過程。
本文將討論和研究機(jī)器學(xué)習(xí)中最流行的數(shù)據(jù)預(yù)處理技術(shù)。我們將探索各種方法來清理、轉(zhuǎn)換和擴(kuò)展我們的數(shù)據(jù)。所有探索和實(shí)際示例都將使用 Python 代碼片段完成,以指導(dǎo)您親身體驗(yàn)如何有效地將這些技術(shù)應(yīng)用于您的機(jī)器學(xué)習(xí)項(xiàng)目。
為什么要預(yù)處理數(shù)據(jù)?
預(yù)處理數(shù)據(jù)的字面整體原因是為了讓機(jī)器學(xué)習(xí)算法接受數(shù)據(jù),從而開始訓(xùn)練過程。但是,如果我們看看機(jī)器學(xué)習(xí)框架本身的內(nèi)在工作原理,就可以提供更多理由。下表討論了為后續(xù)機(jī)器學(xué)習(xí)任務(wù)預(yù)處理數(shù)據(jù)的 5 個(gè)關(guān)鍵原因(優(yōu)勢(shì))。
原因 |
解釋 |
提高數(shù)據(jù)質(zhì)量 |
數(shù)據(jù)預(yù)處理可確保您的數(shù)據(jù)一致、準(zhǔn)確且可靠。 |
提高模型性能 |
數(shù)據(jù)預(yù)處理允許您的 AI 模型在更深層次、更準(zhǔn)確的層面上捕捉趨勢(shì)和模式。 |
提高準(zhǔn)確性 |
數(shù)據(jù)預(yù)處理可以使模型評(píng)估指標(biāo)更好,并反映 ML 模型更準(zhǔn)確的概述。 |
減少訓(xùn)練時(shí)間 |
通過輸入已清理的算法數(shù)據(jù),您可以讓算法以最佳水平運(yùn)行,從而減少計(jì)算時(shí)間并消除對(duì)計(jì)算資源不必要的壓力。 |
特征工程 |
通過預(yù)處理數(shù)據(jù),機(jī)器學(xué)習(xí)從業(yè)者可以衡量某些特征對(duì)模型的影響。這意味著機(jī)器學(xué)習(xí)從業(yè)者可以選擇與模型構(gòu)建最相關(guān)的特征。 |
我們將利用以下框架來處理數(shù)據(jù)預(yù)處理的實(shí)際示例:
NumPy
熊貓
科學(xué)學(xué)習(xí)
處理缺失值
處理缺失值最流行的技術(shù)是刪除和歸納。值得注意的是,無論您嘗試執(zhí)行什么操作,如果計(jì)算或過程中至少有一個(gè)空值(NaN),則整個(gè)操作將失敗并計(jì)算為 NaN(空/缺失/錯(cuò)誤)值。
移動(dòng)
刪除包含缺失值的行或列。這通常在缺失數(shù)據(jù)占整個(gè)數(shù)據(jù)集的比例相對(duì)較小時(shí)執(zhí)行。
例子
輸出
歸責(zé)
即我們用替代值替換數(shù)據(jù)中的缺失值。替代 值通常是該列數(shù)據(jù)的平均值、中位數(shù)或眾數(shù)。這個(gè)過程的術(shù)語是歸納。
例子
輸出
處理噪聲數(shù)據(jù)
當(dāng)我們的數(shù)據(jù)中有異常值或不相關(guān)的數(shù)據(jù)點(diǎn)時(shí),我們就說我們的數(shù)據(jù)是有噪聲的 。這種噪聲 會(huì)扭曲我們的模型,從而扭曲我們的分析。處理噪聲數(shù)據(jù)的常見預(yù)處理技術(shù)包括平滑和分箱。
平滑
這種數(shù)據(jù)預(yù)處理技術(shù)涉及采用移動(dòng)平均等操作來減少噪音和識(shí)別趨勢(shì)。這樣就可以封裝數(shù)據(jù)的本質(zhì)。
例子
輸出
分箱
這是統(tǒng)計(jì)學(xué)中常見的過程,遵循機(jī)器學(xué)習(xí)數(shù)據(jù)預(yù)處理中的相同底層邏輯。它涉及將數(shù)據(jù)分組,以減少微小觀察誤差的影響。
例子
輸出
數(shù)據(jù)轉(zhuǎn)換
這種數(shù)據(jù)預(yù)處理技術(shù)在幫助塑造和指導(dǎo)需要數(shù)字特征作為輸入的算法以實(shí)現(xiàn)最佳訓(xùn)練方面起著至關(guān)重要的作用。這是因?yàn)閿?shù)據(jù)轉(zhuǎn)換涉及將我們的原始數(shù)據(jù)轉(zhuǎn)換為適合我們的機(jī)器學(xué)習(xí)算法使用的格式或范圍。這是基于距離的機(jī)器學(xué)習(xí)算法的關(guān)鍵步驟。
關(guān)鍵的數(shù)據(jù)轉(zhuǎn)換技術(shù)是規(guī)范化和標(biāo)準(zhǔn)化。正如這些操作的名稱所暗示的那樣,它們用于將我們的特征內(nèi)的數(shù)據(jù)重新縮放到標(biāo)準(zhǔn)范圍或分布。
正常化
這種數(shù)據(jù)預(yù)處理技術(shù)會(huì)將我們的數(shù)據(jù)縮放到 [0, 1](包含兩個(gè)數(shù)字)或 [-1, 1](包含兩個(gè)數(shù)字)的范圍。當(dāng)我們的特征具有不同的范圍并且我們希望將它們帶到一個(gè)共同的范圍內(nèi)時(shí),它很有用。
例子
輸出
標(biāo)準(zhǔn)化
標(biāo)準(zhǔn)化將把我們的數(shù)據(jù)縮放到平均值為 0、標(biāo)準(zhǔn)差為 1。當(dāng)我們的特征中包含的數(shù)據(jù)具有不同的測(cè)量單位或分布時(shí),它很有用。
例子
輸出
編碼分類數(shù)據(jù)
我們的機(jī)器學(xué)習(xí)算法通常要求特征矩陣(輸入數(shù)據(jù))采用數(shù)字形式,即數(shù)值/定量。但是,我們的數(shù)據(jù)集可能包含文本(分類)數(shù)據(jù)。因此,在將數(shù)據(jù)輸入機(jī)器學(xué)習(xí)算法之前,必須將所有分類(文本)數(shù)據(jù)轉(zhuǎn)換為數(shù)字格式。處理分類數(shù)據(jù)最常用的技術(shù)包括獨(dú)熱編碼( OHE )和標(biāo)簽編碼。
獨(dú)熱編碼
這種數(shù)據(jù)預(yù)處理技術(shù)用于將分類值轉(zhuǎn)換為二進(jìn)制向量。這意味著每個(gè)唯一類別都將成為數(shù)據(jù)框中的列,而包含該值的觀察值(行)的存在與否由新列中的二進(jìn)制 1 或 0 表示。
例子
輸出
標(biāo)簽編碼
這是將分類值轉(zhuǎn)換為整數(shù)標(biāo)簽的時(shí)候。本質(zhì)上,每個(gè)唯一類別都被分配一個(gè)唯一的整數(shù)來表示。
例子
輸出
這告訴我們標(biāo)簽編碼如下:
· ‘藍(lán)色’ -> 0
· ‘綠色’ -> 1
· ‘紅色’ -> 2
PS,數(shù)值分配是從零索引的(與 Python 中的所有集合類型一樣)
特征提取與選擇
正如這種數(shù)據(jù)預(yù)處理技術(shù)的名稱所暗示的,特征提取/選擇涉及機(jī)器學(xué)習(xí)從業(yè)者從數(shù)據(jù)中選擇最重要的特征,而特征提取則將數(shù)據(jù)轉(zhuǎn)換為一組簡化的特征。
特征選擇
這種數(shù)據(jù)預(yù)處理技術(shù)有助于我們從數(shù)據(jù)集中識(shí)別和選擇對(duì)模型影響最大的特征。最終,選擇最佳特征將提高我們模型的性能并減少過度擬合。
相關(guān)矩陣
這個(gè)矩陣可以幫助我們識(shí)別高度相關(guān)的特征,從而使我們能夠刪除冗余特征?!跋嚓P(guān)系數(shù)的范圍從 -1 到 1,其中越接近 -1 或 1 的值表示相關(guān)性越強(qiáng),而越接近 0 的值表示相關(guān)性越弱或沒有相關(guān)性”。
例子
輸出 1
輸出 2
卡方統(tǒng)計(jì)量
卡方統(tǒng)計(jì)量是一種衡量兩個(gè)分類變量獨(dú)立性的檢驗(yàn)方法。當(dāng)我們對(duì)分類數(shù)據(jù)進(jìn)行特征選擇時(shí),它非常有用。它計(jì)算特征的 p 值,告訴我們特征對(duì)于當(dāng)前任務(wù)有多大用處。
例子
輸出
卡方分?jǐn)?shù)的輸出由兩個(gè)數(shù)組組成:
· 第一個(gè)數(shù)組包含每個(gè)特征的卡方統(tǒng)計(jì)值。
· 第二個(gè)數(shù)組包含與每個(gè)特征對(duì)應(yīng)的 p 值。
在我們的示例中:
· 對(duì)于第一個(gè)特征:
1. 卡方統(tǒng)計(jì)值為 0.0
2. p 值為 1.0
· 對(duì)于第二個(gè)特征:
1. 卡方統(tǒng)計(jì)值為 3.0
2. p 值約為 0.083
卡方統(tǒng)計(jì)量衡量特征與目標(biāo)變量之間的關(guān)聯(lián)。卡方值越高,表示特征與目標(biāo)之間的關(guān)聯(lián)越強(qiáng)。這告訴我們,所分析的特征對(duì)于引導(dǎo)模型達(dá)到所需的目標(biāo)輸出非常有用。
p 值測(cè)量在特征和目標(biāo)獨(dú)立的零假設(shè)下觀察到卡方統(tǒng)計(jì)量的概率。本質(zhì)上,較低的 p 值(通常 < 0.05)表示特征和目標(biāo)之間的關(guān)聯(lián)具有統(tǒng)計(jì)意義。
對(duì)于我們的第一個(gè)特征,卡方值為 0.0,p 值為 1.0,從而表示與目標(biāo)變量沒有關(guān)聯(lián)。
對(duì)于第二個(gè)特征,卡方值為 3.0,相應(yīng)的 p 值約為 0.083。這表明我們的第二個(gè)特征和目標(biāo)變量之間可能存在某種關(guān)聯(lián)。請(qǐng)記住,我們處理的是虛擬數(shù)據(jù),而在現(xiàn)實(shí)世界中,數(shù)據(jù)會(huì)給你帶來更多的變化和分析點(diǎn)。
特征提取
這是一種數(shù)據(jù)預(yù)處理技術(shù),允許我們通過將數(shù)據(jù)轉(zhuǎn)換為一組新特征來降低數(shù)據(jù)的維度。從邏輯上講,通過采用特征選擇和提取技術(shù)可以大大提高模型性能。
主成分分析(PCA)
PCA 是一種數(shù)據(jù)預(yù)處理降維技術(shù),它將我們的數(shù)據(jù)轉(zhuǎn)換為一組直角(正交)分量,從而捕獲特征中存在的最大差異。
例子
輸出
由此,我們成功探索了 Python 機(jī)器學(xué)習(xí)任務(wù)中最常用的各種數(shù)據(jù)預(yù)處理技術(shù)。
結(jié)論
在本文中,我們探討了使用 Python 進(jìn)行機(jī)器學(xué)習(xí)的流行數(shù)據(jù)預(yù)處理技術(shù)。我們首先了解了數(shù)據(jù)預(yù)處理的重要性,然后研究了與原始數(shù)據(jù)相關(guān)的常見挑戰(zhàn)。然后,我們通過 Python 中的實(shí)際示例深入研究了各種預(yù)處理技術(shù)。
最終,數(shù)據(jù)預(yù)處理是機(jī)器學(xué)習(xí)項(xiàng)目生命周期中不可跳過的一步。即使不需要對(duì)數(shù)據(jù)進(jìn)行任何更改或轉(zhuǎn)換,也值得在適用的情況下將這些技術(shù)應(yīng)用于數(shù)據(jù)。因?yàn)檫@樣做可以確保數(shù)據(jù)得到清理和轉(zhuǎn)換,以適應(yīng)機(jī)器學(xué)習(xí)算法,從而提高后續(xù)機(jī)器學(xué)習(xí)模型開發(fā)因素(例如模型準(zhǔn)確性、計(jì)算復(fù)雜性和可解釋性)的效率。
總之,數(shù)據(jù)預(yù)處理為成功的機(jī)器學(xué)習(xí)項(xiàng)目奠定了基礎(chǔ)。通過關(guān)注數(shù)據(jù)質(zhì)量并采用適當(dāng)?shù)念A(yù)處理技術(shù),我們可以充分發(fā)揮數(shù)據(jù)的潛力,并構(gòu)建能夠提供有意義的見解和可操作結(jié)果的模型。