機器學習之資料預處理

2021-08-31 20:52:57 字數 1639 閱讀 8371

1. 為什麼需要資料預處理?

原始資料來自於現實場景,常常有以下幾個特徵:髒、亂、差、缺。髒體現在原始資料裡混雜許多雜訊資料,亂體現在原始資料各維度量綱不同一。差體現在資料錯誤、出現不尋常不一致,這和髒相似。缺體現在原始資料的某些資料段值的缺失。

2. 資料預處理的方法。

歸一化、標準化和中心化是資料預處理中重要的方法:

歸一化和標準化的區別:歸一化是將樣本的特徵值轉換到同一量綱下把資料對映到[0,1]或者[-1, 1]區間內,僅由變數的極值決定,因區間放縮法是歸一化的一種。標準化是依照特徵矩陣的列處理資料,其通過求z-score的方法,轉換為標準正態分佈,和整體樣本分佈相關,每個樣本點都能對標準化產生影響。它們的相同點在於都能取消由於量綱不同引起的誤差;都是一種線性變換,都是對向量x按照比例壓縮再進行平移

標準化和中心化的區別:標準化是原始分數減去平均數然後除以標準差,中心化是原始分數減去平均數。 所以一般流程為先中心化再標準化。

什麼時候用歸一化?什麼時候用標準化?

(1)如果對輸出結果範圍有要求,用歸一化。

(2)如果資料較為穩定,不存在極端的最大最小值,用歸一化。

(3)如果資料存在異常值和較多噪音,用標準化,可以間接通過中心化避免異常值和極端值的影響。

有些模型必須歸一化或標準化,比如svm,knn、神經網路、pca,這些模型的迭代求解過程中都會受資料量綱不同而影響巨大,而且往往僅僅歸一化是不夠的,還需要標準化。歸一化適用於小資料場景,標準化適用於現如今的嘈雜大資料場景,所以建議優先使用標準化。

基於模型檢測:比如用邏輯回歸來進行擬合**,異常值則是那些原理擬合結果的點。

基於距離:通過在物件之間定義臨近性度量,異常物件是那些遠離其它物件的物件,缺點是效率為o(n2), 並且基於所有樣本來定乙個閾值,沒有處理密度不同資料樣本,無法捕捉密度變化

基於密度: 當區域性密度大於它的近鄰時認為時離群點,捕捉密度變化,適用於密度分布不均勻的樣本。缺點是效率為o(n2),和密度聚類演算法有一樣的問題,就是引數確定的問題。

異常值的處理方法:

刪除異常值----明顯看出是異常且數量較少可以直接刪除

不處理—如果演算法對異常值不敏感則可以不處理,但如果演算法對異常值敏感,則最好不要用這種方法,如基於距離計算的一些演算法,包括kmeans,knn之類的。

平均值替代----損失資訊小,簡單高效。

視為缺失值----可以按照處理缺失值的方法來處理

異常值的出現我覺得往往是由於兩個原因,一是資料本身錯誤,雜訊過大導致與其他樣本分佈不同。二是原資料本身的分布偏好,這個資料本身是真實可靠的,但由於與其他資料分布都完全不同,被認為是「異常值、離群點」

常由兩個思路,(1)通過其他維度的資訊補全。(2)通過前後資訊補全。

(1)是通過其他的維度來推理補全該預設資料,跟資料中的其他樣本關係巨大。(2)比如時序資料,我們可以用前後值的均值對其進行平均,來平滑資料。

主要方法有:(1)插補法主要有隨機插補法,多重插補法,熱平台插補法,以及拉格朗日插值法與牛頓插值法。

機器學習之資料預處理

from sklearn.preprocessing import standardscaler x scaler standardscaler y scaler standardscaler x train x scaler.fit transform x train y train y scal...

機器學習之資料預處理

資料預處理方法 均值移除 範圍縮放 二值化歸一化 獨熱編碼 標籤編碼 直接呼叫api介面進行處理 輸入 輸出 0.5 5.0 0.6 5.5 0.8 6.0 1.1 6.8 1.4 7.0 y f x 函式 y w0 w1x x 輸入 y 輸出 w0和w1 模型引數 所謂模型訓練,就是根據已知的x和...

Python機器學習之資料預處理

coding utf 8 created on sat sep 29 22 39 26 2018 author lxiao217 email lxiao217 163.com 資料預處理 csv comma srpared values,以逗號為分隔符的數值 如果資料以csv檔案的形式儲存在硬碟上,...