為什麼我們需要數據預處理?

2020-12-17 騰訊網

作者 | 邱雅婷

責編| 郭芮

數據挖掘的核心是什麼?這個的答案是算法應該沒什麼疑問。那數據挖掘的基石又是什麼呢?那就是今天我們要來說的數據預處理。

什麼是數據預處理?

數據科學家們一直想為數據預處理賦予一個定義。其實簡單地說,數據預處理就是一種數據挖掘技術,本質就是為了將原始數據轉換為可以理解的格式或者符合我們挖掘的格式。

為什麼需要數據預處理?

在真實世界中,數據通常是不完整的(缺少某些感興趣的屬性值)、不一致的(包含代碼或者名稱的差異)、極易受到噪聲(錯誤或異常值)的侵擾的。因為資料庫太大,而且數據集經常來自多個異種數據源,低質量的數據將導致低質量的挖掘結果。就像一個大廚現在要做美味的蒸魚,如果不將魚進行去鱗等處理,一定做不成我們口中美味的魚。

數據預處理就是解決上面所提到的數據問題的可靠方法。

那它是怎麼做到的呢?

就像大廚準備處理魚的刀具一樣,數據預處理也是如此。它準備原始數據以便進一步處理。下面是數據預處理要採取的步驟,如圖:

數據清洗: 填寫缺失的值,光滑噪聲數據,識別或刪除離群點,並解決不一致性來「清理數據」;

數據集成:使用多個資料庫,數據立方體或文件;

數據歸約: 用替代的,較小的數據表示形式替換元數據,得到信息內容的損失最小化,方法包括維規約,數量規約和數據壓縮;

數據變換:將數據變換成使用挖掘的形式。

下面這張圖很形象得把這四個步驟的作用表現出來,挺有意思的。

應用

是時候採取一些簡單的實際應用來了解數據預處理是如何完成的。

下面的例子我們用 Python 來處理,還需要用到兩個庫,分別是 Numpy、Pandas。

準備數據

在這裡,我們有一個數據集,其中包括IT專業人員的信息,比如國家、工資、性別,如下:

我們可以隨意創建此數據集的副本。

我們可以觀察到上面的數據集包含一些空值,這是故意的。後面很快可以看到它發揮的作用

導入庫

簡單說下 Numpy、Pandas 這兩個庫的作用:Numpy 庫包含數學工具,它可以用於在我們代碼中的任何類型的數學;Pandas 庫用於導入和管理數據集。

下面是我們導入庫的方法:

導入數據集

我們已經導入庫了,接下來我們需要獲取數據集。在我本地裡,我將我的數據集文件命名為『profess』,它的格式為.csv。

導入數據集後,我們輸出看下它的格式如何:

Good!我們成功得將數據集導入測試環境中。

數據清洗——查看缺失值

為了成功管理數據,缺失值的概念很重要。如果工程師沒有正確處理缺失值,可能最後得出關於數據的推斷是不準確的。我們再來仔細看下我們的數據的缺失值情況,用 Pandas 庫的 isnull 函數來看看。

我們可以發現 Age,Salary 列都有缺失值(就是為空的值),缺失值數量都為1。處理缺失值有7種處理方法,我們這裡說說比較常用的兩種。

1、此方法經常用於處理空值,如果某行有特定特徵d的空值,就刪除此行。如果特定列具有超過75%的缺失值,就刪除特定列。不過我們要在確保樣本數據足夠多的情況下,採用這個方法。因為我們要確保刪除數據後,不會增加偏差。

2、這個方法適用於具有年份或者年齡,金額等數字數據的功能。我們可以計算特徵的均值,中值或眾數,將其替換為缺失值。與第一種方法相比,這種可以抵消數據的缺失,產生更好的效果。

我們用來看一下操作:

我們成功替換掉了。

數據歸約

為了滿足挖掘需求,我們需要知道這些工程師們的薪水分布區間,但是我們只有『Salary』 薪水這一列,所以為了方便挖掘,我們給我們的數據集增加『薪水等級』 level 這一列,通過 Salary 列進行區間歸約,這種方法叫做「屬性構造」。我們看看操作:

我們定義一個『數據變換』的函數給,根據 Salary 判斷選擇區間進行變換並賦值給 level。

數據變換

我們可以看到 Salary 列也有空值,從業務上理解它應該是數字數值才是。但是我們發現我們的數據集中是貨幣格式,我們需要對它進行『數據變換』,轉換成我們所需的數字格式。來看下實際操作:

變換成功:

我們定義一個「數據變換」的函數,然後將它應用再 Salary 列上,最後同數據清洗那一步同樣的替換操作,我們這裡用平均值替換。

寫在最後

至此我們算走完數據預處理的一個基本流程。

這是比較基礎的一個小應用,但是相信我們以後處理數據的時候能有一個基本清晰的解決思路,以及如何選擇處理方法以及為什麼選擇有所了解。

數據挖掘一路走來也有幾十年的歷史了,數據預處理每個步驟都開發出很多的方法。由於不一致或髒數據的數量巨大,以及問題本身的複雜性,數據預處理仍然是一個活躍的研究領域。篇幅所限,無法一一敘述,以後會再深入。

作者:邱雅婷,就職於信用行業的網際網路公司,數據工程師,愛好讀書,思考。本文為作者投稿,版權歸其個人所有。

熱 文推 薦

相關焦點

  • Python數據預處理
    ,首先需要進行初步的數據探索性分析,對數據探索性分析之後要先進行一系列的數據預處理步驟。因為拿到的原始數據存在不完整、不一致、有異常的數據,而這些「錯誤」數據會嚴重影響到數據挖掘建模的執行效率甚至導致挖掘結果出現偏差,因此首先要數據清洗。數據清洗完成之後接著進行或者同時進行數據集成、轉換、歸一化等一系列處理,該過程就是數據預處理。一方面是提高數據的質量,另一方面可以讓數據更好的適應特定的挖掘模型,在實際工作中該部分的內容可能會佔整個工作的70%甚至更多。
  • python數據科學-數據預處理
    數據預處理是我們在做機器學習之前必經的一個過程,在機器學習中常見的數據預處理包括缺失值處理,縮放數據以及對數據進行標準化處理這三個過程
  • 數據預處理之「數據清理」
    鑑於高質量數據可生成更好的模型和預測,數據預處理的重要性與日俱增,並且已經成為數據科學、機器學習、AI 管道中的基本步驟。在本文中,我們將探討數據處理需求,並討論用於完成此流程中每個步驟的不同方法。在數據收集過程中,存在三個影響數據質量的主要因素:準確率:與期望值之間存在偏差的錯誤值。
  • 使用scikit-learn進行數據預處理
    但是,這些算法不能直接用於原始數據。 原始數據需要事先進行預處理。 因此,除了機器學習算法之外,scikit-learn還提供了一套預處理方法。此外,scikit-learn提供用於流水線化這些估計器的連接器(即變壓器,回歸器,分類器,聚類器等)。在本教程中,將C,允許流水線估計器、評估這些流水線、使用超參數優化調整這些流水線以及創建複雜的預處理步驟。
  • 使用scikit-learn對數據進行預處理
    數據的質量決定了模型的上限,在真實的數據分析中,輸入的數據會存在缺失值,不同特徵的取值範圍差異過大等問題,所以首先需要對數據進行預處理。
  • 數據挖掘非常重要的一步:數據預處理
    為什麼數據處理很重要對數據挖掘熟悉的小夥伴,數據處理相關佔據了整個項目的工作時間60%以上的。數據的質量,直接決定了模型的預測和泛化能力的好壞。它涉及很多因素,包括:準確性、完整性、一致性、可信性和解釋性。
  • 強大的dplyr包實現數據預處理
    工作中的數據分析或挖掘任務都需要進行各種各樣的數據預處理,包括數據整合、關聯、排序、篩選等。
  • 大數據的預處理、離散化要點羅列
    大數據預處理技術1.目前存在四種主流的數據預處理技術:數據清理、數據集成、數據規約和數據變換。2.數據處理的主要任務(1)數據處理的主要步驟:數據清理、數據集成、數據規約和數據變換。(5)數據變換使用規範化、數據離散化和概念分層等方法使得數據的挖掘可以在多個抽象層上進行。數據變換操作是引導數據挖掘過程成功的附加預處理過程。3.數據清理(1)缺失值對於缺失值的處理一般是想法設法把它補上,或者乾脆棄之不用。
  • Nature Methods:fMRIPrep: 一個穩定的fMRI數據預處理工具
    fMRIPrep能夠自動地而不需要人工幹預地將最佳處理流程適應到任何特定數據集,同時保證預處理的高質量。總之,fMRIPrep提供了易操作且透明的預處理流程,有助於確保推論的有效性及結果的可解釋性。影像數據的預處理應該有效識別幹擾源以減少其對數據的影響,並且能夠對信號進行解剖定位。在神經影像領域,許多工具可以完成大部分的預處理步驟(如表1所示)。這些工具主要被包含在AFNI、ANTs、FreeSurfer、FSL和SPM等分析軟體中。儘管擁有豐富的可利用的軟體以及預處理最佳操作的多次研究,但是,大量不同的數據採集協議導致了幾乎每一項研究都要定製預處理流程。
  • Python數據分析之scikit-learn與數據預處理​
    當然,數據預處理絕對也是耗時最長的一個過程,這一過程不僅要求洞悉整個數據集結構分布,還要探查每一個特徵屬性細節情況,並作出應對處理,使數據以最適合的狀態傳輸給模型。針對預處理操作,sklearn中提供了許多模塊工具,靈活使用工具可以讓數據預處理輕鬆很多。本文簡要介紹數據預處理中的一些主要方法,並結合sklearn中提供的模塊進行實踐。
  • 一份SPSS回歸分析與數據預處理的心得體會
    關於SPSS數據預處理拿到一份數據,或者在看到國內外某個學者的文章有想法而自己手裡的數據剛好符合這個想法可以做時
  • 利用 Scikit Learn的Python數據預處理實戰指南
    有更多的選擇來進行預處理,這將是我們要探索的。讀完本文,你將具備數據預處理的基本技能並對其有更深入的理解。為了方便起見,我附上了進一步學習機器學習算法的一些資源,並且為更好地掌握這些概念,設計了幾個小練習。
  • 題庫 | 神經網絡數據預處理方法有哪些?
    題目3:神經網絡數據預處理方法有哪些?1、0 均值是最常用的預處理方法,就是把數據的每一維 - 每一維的均值,這樣數據就變成 0 均值的了。在 numpy 中,這個操作可以寫成:X -= np.mean (X, axis = 0)。
  • Tweets的預處理
    與數字數據不同,NLP主要處理文本。探索和預處理文本數據需要不同的技術和庫,本教程將演示基礎知識。然而,預處理不是一個算法過程。在數據科學任務中,數據的上下文通常決定了數據的哪些方面是有價值的,哪些方面是不相關的或不可靠的。在本教程中,我們將探討tweets上下文中的文本預處理,或者更廣泛地說,社交媒體中的預處理。
  • 機器學習模型必不可少的5種數據預處理技術
    如果您曾經參與過數據科學項目,那麼您可能會意識到數據挖掘的第一步和主要步驟是數據預處理。在現實生活問題中,我們得到的原始數據往往非常混亂,機器學習模型無法識別模式並從中提取信息。1.處理null值:null值是數據中任何行或列中缺失的值。
  • 英文文本挖掘預處理流程總結
    比如「countries」和"country","wolf"和"wolves",我們期望是有一個詞。後面的預處理中,我們會重點講述第三點和第四點的處理。2. 英文文本挖掘預處理一:數據收集這部分英文和中文類似。
  • 入門 | 三行Python代碼,讓數據預處理速度提高2到6倍
    本文可以教你僅使用 3 行代碼,大大加快數據預處理的速度。Python 是機器學習領域內的首選程式語言,它易於使用,也有很多出色的庫來幫助你更快處理數據。但當我們面臨大量數據時,一些問題就會顯現……目前,大數據(Big Data)這個術語通常用於表示包含數十萬數據點的數據集。在這樣的尺度上,工作進程中加入任何額外的計算都需要時刻注意保持效率。
  • 教你使用caret包(一)--數據預處理
    雖然該caret包含了N多種函數,但概括之,我認為其涉及如下6方面的內容:1)數據預處理2)數據分割3)特徵選擇4)模型搭建及評估5)變量重要性估計6)其他函數部分這6個部分,我爭取在3期中逐一講解,本篇僅涉及caret包中的數據預處理和數據分割兩個部分。
  • R 機器學習 | 數據預處理
    本文為 機器學習實戰 | 數據預處理(基於 Python) 的姊妹篇 R 語言實現。1.
  • Python數據預處理:徹底理解標準化和歸一化
    數據預處理數據中不同特徵的量綱可能不一致,數值間的差別可能很大,不進行處理可能會影響到數據分析的結果,因此,需要對數據按照一定比例進行縮放,使之落在一個特定的區域,便於進行綜合分析。為什麼要標準化/歸一化?提升模型精度:標準化/歸一化後,不同維度之間的特徵在數值上有一定比較性,可以大大提高分類器的準確性。加速模型收斂:標準化/歸一化後,最優解的尋優過程明顯會變得平緩,更容易正確的收斂到最優解。