一、Pandas處理丟失數據
(一)判斷缺失值
??isnull()函數??:用于判斷數據框(DataFrame)中各個單元格是否為空,可幫助我們識別出存在缺失數據的單元格位置。
(二)處理缺失值的方法
??刪除包含空字段的行??
??dropna()函數??
??語法格式??:
DataFrame.dropna(axis = 0, how = 'any', thresh = None, subset = None, inplace = False)
。??作用??:通過該函數可以刪除包含空字段(缺失值)的行,可根據具體需求設置參數,如
axis
指定刪除行還是列(0為行,1為列),how
決定刪除規則(如'any'
表示只要存在缺失值就刪除該行/列,'all'
表示該行/列全部為缺失值才刪除等),thresh
可設置保留行/列所需的最少非缺失值數量等。
??填充空字段??
??fillna()函數??:用指定內容來替換數據框中的空字段,可根據實際情況選擇合適的填充值,如固定數值、均值、中位數等。
??mean()函數??:計算列的均值,常可將該均值作為填充值,用于替換對應列中的空單元格,使數據在數值上保持一定的統計特性。
??median()函數??:計算列的中位數,同樣可作為填充空單元格的合適值,尤其適用于數據存在偏態分布等情況,能避免極端值對填充結果的影響。
二、缺失值處理(Impute.SimpleImputer()相關)
(一)使用均值填補
通過
Impute.SimpleImputer()
相關功能,可采用數據列的均值來填補缺失值,在數據整體分布相對較為均衡、無明顯偏態且缺失值不是集中在某一特殊群體等情況下,使用均值填補能在一定程度上維持數據的整體統計特征,使后續分析或建模不受缺失值的過多干擾。
(二)使用中位數填補
利用
Impute.SimpleImputer()
以數據列的中位數進行缺失值填補,當數據存在一定偏態分布或者有少數極端值時,中位數相較于均值受極端值影響更小,用其填補缺失值可使填補后的數據更能代表數據的中間水平,保證數據在后續處理過程中的穩定性和可靠性。
(三)使用常數填補
借助
Impute.SimpleImputer()
,能夠選擇一個特定的常數來填充缺失值,這個常數可以根據業務背景、數據含義等來靈活確定,比如對于某些表示狀態或分類相關的變量,若缺失值有其特定的默認狀態含義,就可以用對應的常數進行填補。
(四)使用眾數填補
通過
Impute.SimpleImputer()
采用數據列的眾數(即出現頻率最高的數值)來填補缺失值,對于一些離散型變量或者具有明顯集中趨勢的變量,眾數能很好地反映數據的常見取值情況,用眾數填補缺失值可以讓數據在填補后更符合數據原本的集中特征,有助于后續分析的準確性。
三、數據標準化
(一)標準化定義及原因
??標準化定義??:對數據進行標準化處理,主要是為了消除不同特征之間因量綱、數量級等差異而可能對數據分析、模型訓練等造成的不良影響,使各個特征處于同一尺度下,提升模型性能以及數據分析結果的可靠性。
??原因??:不同特征可能具有不同的單位(如身高用厘米、體重用千克)、不同的取值范圍(如年齡范圍是0 - 100,收入范圍可能是幾萬到上百萬)等,如果不進行標準化,這些差異可能會導致在模型訓練過程中某些特征對結果的影響過大,而標準化后能讓各個特征公平地參與到后續的分析和建模過程中。
(二)無量綱化相關概念
??無量綱化定義??:將不同規格的數據轉換到同一規格,或不同分布的數據轉換到某個特定分布的需求,稱為將數據“無量綱化”,其目的是讓數據在統一的標準下進行分析和處理。
??無量綱化類型??
??線性無量綱化??:包括中心化處理和縮放處理。
??中心化本質??:讓所有記錄減去一個固定值,也就是讓數據樣本數據平移到某個位置,通常是將數據的均值作為這個固定值,使得處理后的數據均值為0,便于后續分析和比較。
??縮放本質??:通過除以一個固定值,將數據固定在某個范圍之中,比如常見的將數據縮放到0 - 1范圍等,取對數也算是一種縮放處理,可對數據的分布形態進行調整,使其更符合后續處理要求。
(三)具體的標準化方法
??preprocessing.MinMaxScaler()(最大最小值標準化)??
該方法通過對數據進行線性變換,將數據縮放到指定的范圍(通常是0 - 1范圍),其計算方式是先找出數據列中的最小值和最大值,然后根據公式將每個數據點映射到指定區間內,使得數據在不同特征之間具有可比性,常用于需要將數據限制在特定范圍的情況,比如神經網絡等模型的輸入數據要求。
??preprocessing.StandardScaler()(Z值數據標準化)??
該方法也稱為Z - score標準化,它會將數據轉換為均值為0、標準差為1的標準正態分布,計算時是先求出數據列的均值和標準差,然后根據公式對每個數據點進行轉換,使得數據在各個特征維度上具有相同的均值和方差,這種標準化方式在很多機器學習算法中廣泛應用,尤其是那些對數據的分布形態較為敏感的算法。
四、特征編碼
(一)特征類型介紹
??名義變量??
數值之間相互獨立,彼此沒有聯系,例如性別(男、女),這些不同的取值只是類別標識,不存在大小、順序關系,不能進行常規的數學計算。
??有序變量??
數值之間有順序,但不能進行計算,比如學歷(小學、初中、高中),雖然有從低到高的順序關系,但不同學歷之間的差值等數學運算沒有實際意義。
??有距變量??
數值之間有聯系且可以計算,例如分數(100、90、60),這些數值之間不僅可以比較大小,還能進行諸如求差值、平均值等數學運算,反映了數據在數值上的實際關聯和可度量性。
(二)特征編碼方法
??獨熱編碼(OneHotEncoder)??
主要用于處理名義變量等類型的數據,它將每個類別轉換為一個獨立的二進制特征(0或1),從而將類別型數據轉換為適合機器學習模型處理的形式,避免了模型將類別數值誤當作具有數學意義的數值進行處理,保證了模型對這類數據的正確理解和處理。
??序號編碼??
針對有序變量,按照其順序關系為每個類別賦予一個序號,使得數據在保留順序信息的同時,能夠以數值形式參與到后續的分析和建模中,序號的賦予要遵循其原本的順序邏輯,以便模型能正確捕捉到這種順序關系。
??目標標簽編碼??
通常用于將目標變量(標簽)進行編碼,將其轉換為適合模型訓練和評估的數值形式,根據目標變量的具體類型(如分類目標變量等)和模型要求,選擇合適的編碼方式,以便模型能夠準確地對目標進行學習和預測。
??數據二值化??
根據數值是否大于某個閾值,將數據分為兩類0或1,這種編碼方式常用于將連續型數據或具有一定取值范圍的數據轉換為簡單的二分類形式,便于在一些只關注數據是否超過特定界限等場景下進行后續分析和建模,比如判斷某個指標是否達標等情況。
五、課堂總結
本次內容主要圍繞機器學習中的數據處理展開,涵蓋了使用Pandas處理數據缺失值(判斷、刪除、填充等),利用Impute.SimpleImputer()進行多種方式的缺失值填補,闡述數據標準化(包括定義、原因、無量綱化概念及具體的最大最小值標準化、Z值數據標準化等方法),介紹特征編碼(不同特征類型及對應的獨熱編碼、序號編碼、目標標簽編碼、數據二值化等編碼方法),這些數據處理技巧是機器學習流程中至關重要的前期準備工作,能為后續的模型訓練、分析和預測提供高質量、可靠的數據基礎,幫助提升整個機器學習項目的效果和準確性。