資料預處理方法總結

2021-10-05 08:00:43 字數 2905 閱讀 9011

資料是機器學習的原料,機器學習是通過對資料的訓練才得到某種特性的。因此正確的預處理資料對模型結果的輸出尤為重要。

-一、資料可能存在的問題

資料一開始可能有資料重複,資料缺失,資料存在異常值等情況。

二、資料預處理的步驟

資料處理主要包括資料的清洗,資料的轉化.資料描述,特徵選擇和特徵抽取這幾個步驟。

1、資料清洗主要通過對缺失值,異常值和重複資料的處理來完成的。

對缺失值的處理首先要判斷是否有缺失值,用isnull函式,這個函式返回的是乙個布林型別的結果。其中缺失值為true,非缺失值為flase。

然後再進行缺失值的處理.

缺失值處理主要有以下兩種方式。

一是刪除缺失記錄

刪除資料通過pandas的dropna函式來刪除缺失值。

df.dropna(axis = 0,thresh = 2)
axis = 0代表沿著豎直方向(刪除行),1代表沿著水平方向(刪除列)。使用dropna函式可以直接刪除缺失資料所在行或列(預設是行)

thresh = 2代表保留至少2個非nan資料所在的行。預設是不保留

二是填充資料

填充資料用到的pandas裡的函式是

fillna(value=none, method=none, axis=none, inplace=false, limit=none, downcast=none, **kwargs)

'''vlaue引數指的是填充的值

method指填充的方法 pad/ffill表示用之前的資料填充(列,第一行不填充)backfill/bfill表示用之後的資料填充(列。最後一行不填充)。

limit指限制填充的次數

'''

另外還有平均值填補,拉格朗日插值法。平均值就是用mean()函式求出平均值。

拉格朗日插值法是通過其他存在值的計算,來擬合出缺失的資料,不過在缺失大量資料時,偏差較大。

異常值的處理也主要有兩種方法。

一是利用3σ原則來找出異常值。就是如果資料服從正態分佈,異常值則為與平均值相差超過3倍σ的值。

u = data.mean()#計算均值

std = data.std()#計算標準差

error = data[np.bas(data-u)>3*std]#求出異常值

二是箱型圖分析

箱線圖是一種用於顯示一組資料分散情況的統計圖。箱型圖不受異常值影響,可以以一種相對穩定的方式描述資料的離散分布情況。

下面是python**實現方法。其中的precentile函式是用來求出陣列的上四分位,中位和下四分位數的。

percentile = np.percentile(self.n, (25, 50, 75), interpolation=『midpoint』)

#以下為箱線圖的五個特徵值

q1 = percentile[0]#上四分位數

q3 = percentile[2]#下四分位數

iqr = q3 - q1#四分位距

ulim = q3 + 1.5*iqr#上限 非異常範圍內的最大值

llim = q1 - 1.5*iqr#下限 非異常範圍內的最小值

2、在資料的轉換階段,有對資料進行歸一化,標準化,離散化等操作。

首先,歸一化操作是將資料統一對映到[0,1]區間上。由於資料相差過大,所以一般要做歸一化處理。

range_ = np.max(x) - np.min(x)

num = (x-np.min(x)) / range_

標準化資料,保證每個維度的特徵資料方差為1,均值為0。使得**結果不會被某些維度過大的特徵值而主導。

mu = np.mean(self.x,axis=0)#計算平均數

sigma = np.std(self.x,axis=0)#計算方差

num = (x-mu) / sigma

連續值離散化是將資料按照不同的區間分好類,有等寬法和等頻法。

等寬法是將資料平均分成三個相同的區間。

d1 = pd.cut(df,k, labels = range(k))

#k表示劃分區間的個數

#df表示輸入的dataframe型別的資料

#lables表示表頭

等頻法是按資料出現頻率劃分。將相同數量的記錄放在每個區間,保證每個區間的數量基本一致。即分組後,每個分組的元素個數是一樣的。

k = 4

w = [1.0*i/k for i in range(k+1)]

w = data.describe(percentiles = w)[4:4+k+1]#取幾個分位數的值作為不等長列表,用於cut函式

w[0] = w[0]*(1-1e-10)#浮點化

d2 = pd.cut(data, w, labels = range(k))

#或者直接用qcut(data,k)函式

還有另外一種資料處理操作是離散值處理(獨熱編碼)

獨熱編碼是將同型別的資料分類按照二進位制來變成0或1的數字。例如:

男:01,女:10

學生:001,老師:010,領導:100

date = pd.read_csv(self.n)#讀取csv檔案

date_df = pd.dataframe(date)#轉換成dataframe格式

date_gd = pd.get_dummies(date_df)#進行編碼

資料預處理方法總結

資料是什麼?資料就是一組物件及其屬性的集合,其中屬性定義為物件的特徵或性質。真實資料在應用前基本都有經過預處理,以便在機器學習演算法中使用。本次資料預處理方法的總結是基於推薦系統設計進行展開的,其中包括相似度的度量方法 抽樣以及降維技術這三個尤為重要的問題。d x y k 1 n xk yk 2 x...

資料預處理方法 總結

在工程實踐中,我們得到的資料會存在有缺失值 重複值等,在使用之前需要進行資料預處理。資料預處理沒有標準的流程,通常針對不同的任務和資料集屬性的不同而不同。資料預處理的常用流程為 去除唯一屬性 處理缺失值 屬性編碼 資料標準化正則化 特徵選擇 主成分分析。唯一屬性通常是一些id屬性,這些屬性並不能刻畫...

資料預處理方法

一.資料清理 1.填出缺失值 無記錄值資料 1 忽略元祖 缺少類標號時使用,適用於多個屬性值缺失 2 人工填寫缺失值 3 用屬性的均值填充缺失值 4 用全域性常量填充 unknow 5 用同樣本的屬性均值填充缺失值 6 使用最可能的值填充缺失值 可由回歸 貝葉斯形式化的基於推理的工具或決策樹歸納確定...