資料是機器學習的原料,機器學習是通過對資料的訓練才得到某種特性的。因此正確的預處理資料對模型結果的輸出尤為重要。
-一、資料可能存在的問題資料一開始可能有資料重複,資料缺失,資料存在異常值等情況。
二、資料預處理的步驟
資料處理主要包括資料的清洗,資料的轉化.資料描述,特徵選擇和特徵抽取這幾個步驟。
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 使用最可能的值填充缺失值 可由回歸 貝葉斯形式化的基於推理的工具或決策樹歸納確定...