機器學習中資料清洗的藝術
作者:George Seif
編譯:ronghuaiyang
導讀
資料清洗是大資料處理的第一步,很多同學對這一步感到沒有頭緒,不知道哪些該清洗掉,哪些不該,看看這篇文章,是不是能有點啟發?
像奧巴馬丟掉麥克風一樣丟掉壞資料
清理資料應該是資料科學(DS)或機器學習(ML)工作流的第一步。如果沒有清晰的資料,你將很難看到探索中真正重要的部分。一旦你最終開始訓練ML模型,那麼訓練它們就會變得不必要地更具挑戰性。主要的一點是,如果你希望最大限度地利用資料,那麼它應該是乾淨的。
在資料科學和機器學習的上下文中,資料清理意味著過濾和修改資料,使其更易於探索、理解和建模。過濾掉你不想要或不需要的部分,這樣你就不需要檢視或處理它們。修改你確實需要的部分,但它們的格式不是您需要的,以便您可以正確地使用它們。
在這裡,我們將瞭解一些我們通常希望在資料中清理的東西,以及你可以使用的panda程式碼!
資料缺失
大型資料集很少是完全完整的。這裡的完整指的是所有資料點的所有特徵變數都有值。通常會丟失一些值,當在panda中載入類似“pd.read_csv()”的值時,這些值被標記為NaN或None。有許多非常實際的原因可以解釋為什麼這些資料會丟失。收集資料的人可能只是忘記了,或者他們直到資料收集過程的一半才開始收集該特性變數。
在使用資料集之前,需要處理丟失的資料。例如,假設你正在做資料探索,發現關於資料的一些關鍵資訊來自某個特性變數,例如“變數F”。但之後你會發現資料集中95%的變數F值都是NaNs,你不可能從一個僅恰當地表示資料的5%的變數中對資料集作出任何具體的結論!當你開始訓練你的ML模型時,你的程式也可能將NaNs視為0或無窮大,從而導致了你的訓練出現問題!
在pandas中有一些方法可以處理丟失的資料:
檢查NANs: pd.isnull(object) 檢測資料中缺失的值,它同時檢測“NaN”和“None”
刪除丟失的資料: df.dropna(axis=0,how='any')返回資料幀,其中刪除了包含NaNs的任何資料點。
替換缺少的資料: df.replace(to_replace=None,value=None)如果你知道希望這個特性變數是什麼值,那麼這是非常有用的。
刪除一個特徵: df.drop('feature_variable_name',axis=1)如果你發現某個特性變數在資料集中有>90%的NaN,那麼從你的資料中刪除整個特徵是有意義的。
離群值
資料集中的異常值是混合的。一方面,它們可能包含關鍵資訊,因為它們與主要的群體非常不同。另一方面,他們拋棄了我們對主要群體的看法,因為我們必須看得如此之遠,只是為了看到離群值!在ML方面,包含異常值的訓練可以使你的模型很好地一般化,但也可以將其從你的大多數資料所在的主要群體中剔除。
一般來說,通常建議從兩個方面來考慮。研究有或沒有異常值的資料。如果你決定你的ML模型需要它們,那麼選擇一個足夠健壯的方法來處理它們。如果你發現這些離群值確實存在,並且對於獲取全域性資訊和資料建模沒有幫助,那麼最好像上一節所示的那樣刪除它們。
此外,如果你希望過濾出這些異常值,可以使用以下方法:
# Get the 98th and 2nd percentile as the limits of our outliers
upper_limit = np.percentile(train_df.logerror.values, 98)
lower_limit = np.percentile(train_df.logerror.values, 2)
# Filter the outliers from the dataframe
data[‘target’].loc[train_df[‘target’]>upper_limit] = upper_limit data[‘target’].loc[train_df[‘target’]<lower_limit] = lower_limit
壞資料和重複資料
壞資料是指任何不應該存在的資料點或值,或者是完全錯誤的資料點或值。例如,假設你的一個特徵變數名為“gender”,其中大多數值是“male”或“female”。但是,當你瀏覽資料集時,您會注意到有幾個資料點的性別值為67.3 !顯然,67.3在這個變數中沒有任何意義。此外,如果你嘗試將“gender”特徵變數轉換為分類浮點數:male = 0.0, female = 1.0,那麼您將得到一個額外的浮點數:67.3 = 2.0!
重複僅僅是資料集中重複的資料點。如果有太多這樣的特徵,就會影響ML模型的訓練。正如我們前面看到的,重複資料可以簡單地從資料中刪除。
壞資料可以通過刪除或使用一些智慧替換來處理。例如,我們可以檢視性別為67.3的資料點,發現所有這些資料點的正確值都應該是“女性”。因此,我們只需將所有67.3值轉換為“女性”。這樣做的好處是,我們有效地為ML訓練重新獲得了這些資料點,而不是將它們丟棄。你可以使用pandas做這樣的轉換:
value_map = {'male': 'male', 'female': 'female', '67.3': 'female'}
pd_dataframe['gender'].map(value_map)
小心重複的Loki資料
不相關的特徵
並非所有的特徵都是相同的。有些東西你可能根本不需要!例如,你可能正在檢視過去一年從Amazon購買的圖書的資料集,其中一個特性變數稱為“font-type”,表示書中使用的字型型別。這和預測一本書的銷量是毫無關係的!你可以安全地把這個功能丟棄,就像這樣:
df.drop('feature_variable_name', axis=1)
這樣做使你的資料探索更容易,因為你不需要檢視那麼多東西。由於你沒有處理那麼多的資料,它還有助於使ML模型的訓練變得更容易和更快。如果你不確定變數是否重要,那麼你可以一直等到開始研究資料集時再決定。計算特徵變數與目標輸出之間的相關矩陣有助於確定該變數的重要性。
標準化
每個特徵變數中的所有資料都應該採用相同的標準化格式。它將使資料探索和建模的技術方面更加容易。例如,讓我們再次以“gender”變數為例,它的值是“male”或“female”。如果資料是由人類收集的,你可能會得到許多你沒有預料到的不同的值:
- male, female(這個不錯)
- MALE, FEMALE(帶大寫鎖定)
- Male, Female (有些人會大寫)
- Make,Femall(拼寫錯誤!)
如果我們直接將特徵變數轉換為分類浮點數,我們會得到比我們想要的0和1更多的值!我們會得到這樣的結果:
{
'male': 0,
'female': 1,
'MALE': 2,
'FEMALE': 3,
'Male': 4,
'Female': 5,
'Make': 6,
'Femall': 7
}
處理這種情況有兩種方法。如果是一些簡單的事情,比如把第一個字母大寫或者小寫,就像這樣做:
# Make the whole string lower case
s.lower()
# Make the first letter capitalised
s.capitalize()
如果有拼寫錯誤,你會想要使用我們之前看到的對映函式:
value_map = {'Make': 'male', 'Femall': 'female'}
pd_dataframe['gender'].map(value_map)
英文原文:https://towardsdatascience.com/the-art-of-cleaning-your-data-b713dbd49726
https://www.toutiao.com/a6727984298994958855/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29829936/viewspace-2654662/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 機器學習-資料清洗機器學習
- 八個機器學習資料清洗機器學習
- 資料的採集,清洗,資料機器自動標註及轉化為深度學習格式深度學習
- Scikit-Learn 與 TensorFlow 機器學習實用指南學習筆記 3 —— 資料獲取與清洗機器學習筆記
- 解析機器學習中的資料漂移問題機器學習
- 小資料在機器學習中的重要性機器學習
- 機器學習 大資料機器學習大資料
- 機器學習中的元學習機器學習
- 機器學習中資料缺失的處理及建模方法機器學習
- 機器學習-- 資料轉換機器學習
- 機器學習之清理資料機器學習
- 做資料分析需要學習機器學習嗎?機器學習
- 雜談---資料庫連線中的藝術資料庫
- 爬蟲中資料清洗的選擇爬蟲
- 中電金信:資料管理的“工藝”和“柔”性藝術
- 機器視覺軟體中的深度學習技術視覺深度學習
- 機器學習中的 CatBoost機器學習
- 機器學習:處理不平衡資料的5個重要技術機器學習
- 機器學習 # 為什麼機器學習要求資料是獨立同分布的?機器學習
- 機器學習中的有標註資料集和無標註資料集機器學習
- 機器學習之資料集的劃分機器學習
- 機器學習主要術語機器學習
- 「雜談」GitHub上最全的機器學習和深度學習資料Github機器學習深度學習
- 機器學習:探索資料和資料預處理機器學習
- 資料視覺化的藝術視覺化
- 機器學習一:資料預處理機器學習
- 機器學習筆記——資料集分割機器學習筆記
- 機器學習基礎-資料降維機器學習
- 33個機器學習常用資料集機器學習
- 分散式機器學習常用資料集分散式機器學習
- 藝術中蘊含的數學原理
- (資料科學學習手札98)純Python繪製滿滿藝術感的山脊地圖資料科學Python地圖
- 大資料之路 ——(一)演算法建模中的資料清洗大資料演算法
- Anovos解決了機器學習中資料的漂移和穩定性 – thenewstack機器學習
- 大規模機器學習在愛奇藝視訊分析理解中的實踐機器學習
- 資料庫內機器學習是資料分析的未來 - BDAN資料庫機器學習
- tensorflow資料清洗
- 機器學習中學習曲線的 bias vs variance 以及 資料量m機器學習