大部分機器學習模型處理的都是特徵,是實際工作中最耗時的一部分。大部分情況下,收集到的資料需要經過預處理後才能被後續的機器學習演算法所使用。
一、資料預處理包括以下幾個步驟
1、資料過濾
比如使用者id是乙個唯一值,當出現兩個相同的使用者id就需要過濾掉乙個。
2、處理資料缺失
如果有500個樣本,其中第230個樣本的某個資料缺失,我們可以考慮使用總體樣本的平均值、中位數(mediam,所有資料值從大到小排序最中間的那個值)、眾數(mode,資料**現次數最多的那個值) 來代替該樣本的缺失的值。
當特徵是離散型資料的時候,多數用眾數來填補缺失值。比如一組資料為(1,1,1,1,nan,0,1,1) 用什麼值來填充nan比較合適呢?也許這組資料體現的是姓別(0=男、1=女),顯然使用中位數或均值都不能代表樣本的特性,因此選擇眾數。
3、處理可能的異常值、錯誤值
手機號的資料**現了乙個中文,那麼考慮將這組樣本刪除。
4、合併多個資料來源資料
租房**模型中,待租房屋的特徵中包含長度和寬度,那麼如果將這兩組資料合併成面積或許更能體現特徵的價值。
二、資料預處理的方法
1、啞編碼
功能:分類編碼,將非數值型的特徵值轉化為數值型的資料。
描述:假設變數的取值有k個,如果對這些值用1到k編號,則可用k的向量來表示乙個變數的值。在這樣的向量裡,該取值所對應的需要所在的元素為1,其他元素為0。
樣本/特徵
t1t2
t3r1a1
2r2a2
3r3b3
3r4c2
2r5c1
2 t1特徵有三種分類:a、b、c,但無法確定哪種分類更好。在t1的基礎上生成三個新的特徵 t1-a 、t1-b 、t1-c。於是在原有的t1維度上進行了擴張,將1維變成了3維。
向量/型別
t1-a
t1-b
t1-ca1
00b0
10c0
01生成的新資料集刪除了原本的t1特徵,新增了 t1-a 、t1-b 、t1-c特徵:
樣本/特徵
t1-a
t1-b
t1-c
t2t3r11
0012
r2100
23r30
1033
r4001
22r50
0112
啞編碼是乙個將資料集從低維變成高維的過程,是對資料的一種擴充。但該方法既有正向的影響也有負向的影響,具體的問題在後續欠擬合與過擬合的問題中進一步敘述。
2、文字資料提取
詞袋法(bow):將文字當作乙個無序的資料集合,文字特徵可以採用文字中的詞條t進行體現,那麼文字**現的所有詞條及其出現的次數就可以體現文件的特徵。
詞袋法有幾個關鍵點:
1、每個公司的詞庫是不同的,詞條t可以理解為片語,比如「人工智慧」、「爬蟲」、「機器學習」,「大資料」 這詞條出現得多了,可以預設文章屬於it類的,更細分可以規定為ai分類。
所以詞頻的重要性,有時候和出現的頻率成正比,有時候成反比。於是引入了tf-idf演算法。
tf-idf:
1、tf:詞頻。指某個詞條出在文字中的次數,一般會將其進行歸一化操作 (該詞條數量/該文件中所有詞條的數量)。
2、idf:逆向檔案頻率。指乙個詞條重要性的度量= 總檔案數/包含詞語的檔案數。有時候得到的商還會取對數操作。
3、tf-idf = tf*idf
舉個栗子:
文件1的內容:a(2)、b(1)、c(3)、d(9)、e(1)
文件2的內容:a(1)、b(5)、c(2)、d(10)
bow模型:
樣本/特徵ab
cde文件121
391文件215
2100 tf(a|文件1的總詞條) = 2/(2+1+3+9+1)=1/8
...tf(e|文件2的總詞條) = 0/(1+5+2+10)=0/18=0
idf(a) = idf(b) = idf(c) = idf(d) = 2/2
idf(e) = 1/2
a、b、c、d字條在文件1和文件2中都有出現,而e詞條只在文件2**現。
最後計算 tf*idf 得到模型:
樣本/tf-idf(x)ab
cde文件1
1/81/16
3/16
9/16
1/8文件2
1/18
5/18
1/95/9
0 3、傅利葉變換。
處理影象或音訊(畫素、聲波、音訊、振幅)
4、數值資料轉換為類別資料,以減少變數的值
比如:年齡分段
1.童年---0歲—6歲。
2.少年---7歲—17歲。
3.青年---18歲—40歲。
4.中年---41—65歲。
5、數值資料進行轉換:對數轉換
這組資料斜率非常大,需要利用統計或數學變換來減輕資料分布傾斜的影響。使原本密集的區間的值盡可能的分散,原本分散的區間的值盡量的聚合。
對數轉化前的資料
log變換通常用來建立單調的資料變換。它的主要作用在於幫助穩定方差,始終保持分布接近於正態分佈並使得資料與分布的平均值無關。
y=logc(1+λx)。λ 通常設定為1,c通常設定為變換資料的最大值。
資料收入log變換後結構
log變換傾向於拉伸那些落在較低的幅度範圍內自變數值的範圍,壓縮或減少較高幅度範圍內的自變數值的範圍。從而使得傾斜分布盡可能的接近正態分佈。
log變換後的資料直方圖
對數轉換部分參考文獻:
資料清洗和轉換
實際生產環境中機器學習比較耗時的一部分 大部分的機器學習模型所處理的都是特徵,特徵通常是輸入變數所對應的可用於模型的 數值表示 大部分情況下 收集得到的資料需要經過預處理後才能夠為演算法所使用,預處理的操作 主要包括以下幾個部分 對資料進行初步的預處理,需要將其轉換為一種適合機器學習模型的表示形式,...
資料清洗(二) 資料轉換
這個比較簡單,基本上用軟體開啟電子 後選擇另存為就可以定義另存檔案的格式和編碼了,這是比較簡單快捷的。不過也有一些地方需要注意 電子 轉換為json資料稍微麻煩一點,但是也有很多方法解決了 使用mysql的命令列輸出csv檔案 select concat firstname,lastname as ...
資料清洗之資料轉換
1.日期格式資料處理 import numpy as np import pandas as pd import os os.chdir r f csdn 課程內容 和資料 df pd.read csv baby trade history.csv encoding utf 8 dtype df.h...