數據預處理之「數據清理」

2021-02-25 程式設計師學習室

由於當今數據的數量龐大且來自於各種不同類型的來源,因此出現數據異常的可能性不斷增加。鑑於高質量數據可生成更好的模型和預測,數據預處理的重要性與日俱增,並且已經成為數據科學、機器學習、AI 管道中的基本步驟。在本文中,我們將探討數據處理需求,並討論用於完成此流程中每個步驟的不同方法。

在數據收集過程中,存在三個影響數據質量的主要因素:

準確率:與期望值之間存在偏差的錯誤值。數據不準確的原因多種多樣,包括:

數據輸入和傳輸期間發生的人為錯誤、計算機錯誤

用戶有意提交錯誤值(稱為「偽裝缺失數據」)

輸入欄位格式錯誤

訓練示例重複

完整性:缺少屬性值、特徵值或者關聯值。數據集可能因以下原因而不完整:

一致性:數據聚合不一致。

影響數據質量的一些其他特徵還包括及時性(在某些時間段之後但在提交所有相關信息之前數據不完整)、可信度(用戶信任的數據量)以及可解釋性(所有利益相關方是否都能輕鬆理解數據)。

為確保獲得高質量的數據,對數據進行預處理就顯得至關重要。為了簡化此流程,數據預處理分為四個階段:數據清理、數據集成、數據縮減和數據轉換。

數據清理

「數據清理」是指用於「清理」數據的方法,具體包括移除異常值、替換缺失值、將幹擾數據進行平滑處理以及糾正不一致數據。在執行上述每一項任務的過程中會使用到多種不同方法,將根據用戶偏好或問題集來確定具體使用的方法。下面從問題解決方法的角度介紹了每一項任務。

缺失值

為了解決缺失數據的問題,可採用多種方法。讓我們來逐一了解這些方法。

移除訓練示例:如果缺少輸出標籤(如果這屬於分類問題),那麼可以忽略訓練示例。通常不鼓勵採用此方法,因為它會導致數據丟失,因為移除的屬性值也可以為數據集帶來價值。

手動填充缺失值:此方法較為耗時。對於大型數據集,建議不要採用此方法。

使用標準值來替換缺失值:缺失值可替換為全局常量(例如「N/A」或「Unknown」)。這是一種簡單方法,但並非萬無一失。

使用屬性的集中趨勢(平均值、中間值、眾數)來替換缺失值:根據數據分布,可使用平均值(適用於正態分布)或中間值(適用於非正態分布)來填充缺失值。

使用同類屬性的集中趨勢(平均值、中間值、眾數)來替換缺失值:此方法與方法 4 相同,但集中趨勢的度量值因每個類而異。

使用最可能的值來填充缺失值:可使用回歸和決策樹等算法來預測並替換缺失值。

幹擾數據

幹擾定義為所度量的變量中的隨機方差。對於數字值,可使用箱線圖和散點圖來識別異常值。為處理這些異常值,可按下述方式應用數據平滑技術。

往期閱讀:

線程優先級的實現

輕便線程:更好的線程管理

Python HTTP框架之變體

相關焦點

  • 大數據的預處理、離散化要點羅列
    大數據預處理技術1.目前存在四種主流的數據預處理技術:數據清理、數據集成、數據規約和數據變換。2.數據處理的主要任務(1)數據處理的主要步驟:數據清理、數據集成、數據規約和數據變換。(2)數據清理例程通過填寫缺失值、光滑噪聲數據、識別或者刪除離群點並且解決不一致性來「清理數據」。(3)數據集成過程將來自多個數據源的數據集成到一起。(4)數據規約的目的是得到數據集的簡化表示。數據規約包括維規約和數值規約。
  • 為什麼我們需要數據預處理?
    作者 | 邱雅婷責編| 郭芮數據挖掘的核心是什麼?這個的答案是算法應該沒什麼疑問。那數據挖掘的基石又是什麼呢?那就是今天我們要來說的數據預處理。什麼是數據預處理?數據科學家們一直想為數據預處理賦予一個定義。其實簡單地說,數據預處理就是一種數據挖掘技術,本質就是為了將原始數據轉換為可以理解的格式或者符合我們挖掘的格式。
  • Python數據預處理
    ,首先需要進行初步的數據探索性分析,對數據探索性分析之後要先進行一系列的數據預處理步驟。因為拿到的原始數據存在不完整、不一致、有異常的數據,而這些「錯誤」數據會嚴重影響到數據挖掘建模的執行效率甚至導致挖掘結果出現偏差,因此首先要數據清洗。數據清洗完成之後接著進行或者同時進行數據集成、轉換、歸一化等一系列處理,該過程就是數據預處理。一方面是提高數據的質量,另一方面可以讓數據更好的適應特定的挖掘模型,在實際工作中該部分的內容可能會佔整個工作的70%甚至更多。
  • Python數據分析之scikit-learn與數據預處理​
    當然,數據預處理絕對也是耗時最長的一個過程,這一過程不僅要求洞悉整個數據集結構分布,還要探查每一個特徵屬性細節情況,並作出應對處理,使數據以最適合的狀態傳輸給模型。針對預處理操作,sklearn中提供了許多模塊工具,靈活使用工具可以讓數據預處理輕鬆很多。本文簡要介紹數據預處理中的一些主要方法,並結合sklearn中提供的模塊進行實踐。
  • python數據科學-數據預處理
    數據預處理是我們在做機器學習之前必經的一個過程,在機器學習中常見的數據預處理包括缺失值處理,縮放數據以及對數據進行標準化處理這三個過程
  • 強大的dplyr包實現數據預處理
    工作中的數據分析或挖掘任務都需要進行各種各樣的數據預處理,包括數據整合、關聯、排序、篩選等。
  • 使用scikit-learn對數據進行預處理
    數據的質量決定了模型的上限,在真實的數據分析中,輸入的數據會存在缺失值,不同特徵的取值範圍差異過大等問題,所以首先需要對數據進行預處理。
  • 數據挖掘非常重要的一步:數據預處理
    為什麼數據處理很重要對數據挖掘熟悉的小夥伴,數據處理相關佔據了整個項目的工作時間60%以上的。數據的質量,直接決定了模型的預測和泛化能力的好壞。它涉及很多因素,包括:準確性、完整性、一致性、可信性和解釋性。
  • 數據清理的關鍵性:更好的數據勝過更高級的算法
    圖源:towardsdatascience數據清理佔到數據科學家工作時間的很大一部分,原始數據必須經過處理才能使用,因而數據準備是數據科學中最重要也是首要的部分,它包括數據預處理和數據整理對於未清理的數據集,無論嘗試什麼類型的算法,都無法獲得準確的結果。更好的數據勝過更高級的算法不過,數據清理的步驟和技術因每個數據集而異,但有一套步驟可作為任何數據集清理的標準方法。運行一個基本的描述性統計測試可以對數據的初始意義進行檢查,包括缺失值、特徵的變化、特徵的基數。
  • 使用scikit-learn進行數據預處理
    1.基本用例:訓練和測試分類器練習2.更高級的用例:在訓練和測試分類器之前預處理數據2.1 標準化您的數據2.2 錯誤的預處理模式2.3 保持簡單,愚蠢:使用scikit-learn的管道連接器練習3.當更多優於更少時:交叉驗證而不是單獨拆分練習4.超參數優化:微調管道內部練習5.總結:我的scikit-learn管道只有不到10行代碼(跳過import語句)6.異構數據:當您使用數字以外的數據時練習
  • Nature Methods:fMRIPrep: 一個穩定的fMRI數據預處理工具
    fMRIPrep能夠自動地而不需要人工幹預地將最佳處理流程適應到任何特定數據集,同時保證預處理的高質量。總之,fMRIPrep提供了易操作且透明的預處理流程,有助於確保推論的有效性及結果的可解釋性。影像數據的預處理應該有效識別幹擾源以減少其對數據的影響,並且能夠對信號進行解剖定位。在神經影像領域,許多工具可以完成大部分的預處理步驟(如表1所示)。這些工具主要被包含在AFNI、ANTs、FreeSurfer、FSL和SPM等分析軟體中。儘管擁有豐富的可利用的軟體以及預處理最佳操作的多次研究,但是,大量不同的數據採集協議導致了幾乎每一項研究都要定製預處理流程。
  • 一份SPSS回歸分析與數據預處理的心得體會
    關於SPSS數據預處理拿到一份數據,或者在看到國內外某個學者的文章有想法而自己手裡的數據剛好符合這個想法可以做時
  • 機器學習模型必不可少的5種數據預處理技術
    如果您曾經參與過數據科學項目,那麼您可能會意識到數據挖掘的第一步和主要步驟是數據預處理。在現實生活問題中,我們得到的原始數據往往非常混亂,機器學習模型無法識別模式並從中提取信息。1.處理null值:null值是數據中任何行或列中缺失的值。
  • 使用Python和Pandas的最簡單的數據清理方法
    在本文中,我們將學習如何使用Python包Pyjanitor簡化數據預處理工作。
  • R 機器學習 | 數據預處理
    本文為 機器學習實戰 | 數據預處理(基於 Python) 的姊妹篇 R 語言實現。1.
  • 用pandas進行簡單的數據預處理
    首先看這樣的數據。這是kaggle上的關於員工離職的數據,現在要根據滿意度,工作項目, 薪水等指標判斷一個員工是否會離職。在進行機器學習之前,我們首先要進行數據的清理及預處理。數據下載https://github.com/ardendertat/Applied-Deep-Learning-with-Keras/blob/master/data/HR.csv1、查看統計數據csv文件讀取拿到數據以後,一般都要先看看數據長啥樣,有多大,都有什麼特徵,用pandas
  • 題庫 | 神經網絡數據預處理方法有哪些?
    題目3:神經網絡數據預處理方法有哪些?1、0 均值是最常用的預處理方法,就是把數據的每一維 - 每一維的均值,這樣數據就變成 0 均值的了。在 numpy 中,這個操作可以寫成:X -= np.mean (X, axis = 0)。
  • 利用 Scikit Learn的Python數據預處理實戰指南
    本文主要關注在Python中進行數據預處理的技術。學習算法的出眾表現與特定的數據類型有密切關係。而對於沒有經過縮放或非標準化的特徵,學習算法則會給出魯莽的預測。像XGBoost這樣的算法明確要求虛擬編碼數據,而決策樹算法在有些情況下好像完全不關心這些!簡而言之,預處理是指在你將數據「餵給」算法之前進行的一系列轉換操作。在Python中,scikit-learn庫在sklearn.preprocessing下有預裝的功能。
  • 3D目標檢測深度學習方法數據預處理綜述
    關注 極市平臺 公眾號 ,回復 加群,立刻申請入群~前言這一篇的內容主要要講一點在深度學習的3D目標檢測網絡中,我們都採用了哪些數據預處理的方法,主要講兩個方面的知識,第一個是representation,第二個數據預處理內容是數據增廣。
  • 【精華原創】Python數據分析:一文掌握數據預處理的全過程
    在統計分析領域,進行數據處理之前,預處理工作的重要性不言而喻,也是大家提問比較集中的問題之一。今天針對數據預處理流程做出整理,每一部分都做了代碼示例和詳細的注釋,大家可以參考。三、數據合併(集成)數據合併是將多個數據源合併存放為統一格式的過程。這個步驟要根據我們的目標進行處理,課程中有詳細講解,這裡就不再贅述。四、數據變換數據變化是對數據進行規範化處理的過程。例如連續變量的離散化、變量屬性的構造等。目標是將數據轉換成我們所需要的適當形式,以以進一步滿足挖掘任務或者代碼算法的需要。