【数据分析】数据缺失影响模型效果?是时候需要missingno工具包来帮你了!
數(shù)據(jù)探索和預(yù)處理是任何數(shù)據(jù)科學(xué)或機(jī)器學(xué)習(xí)工作流中的重要步驟。在使用教程或訓(xùn)練數(shù)據(jù)集時(shí),可能會(huì)出現(xiàn)這樣的情況:這些數(shù)據(jù)集的設(shè)計(jì)方式使其易于使用,并使所涉及的算法能夠成功運(yùn)行。然而,在現(xiàn)實(shí)世界中,數(shù)據(jù)是混亂的!它可能有錯(cuò)誤的值、不正確的標(biāo)簽,并且可能會(huì)丟失部分內(nèi)容。
丟失數(shù)據(jù)可能是處理真實(shí)數(shù)據(jù)集時(shí)最常見的問題之一。數(shù)據(jù)丟失的原因很多,包括傳感器故障、數(shù)據(jù)過時(shí)、數(shù)據(jù)管理不當(dāng),甚至人為錯(cuò)誤。丟失的數(shù)據(jù)可能以單個(gè)值、一個(gè)要素中的多個(gè)值或整個(gè)要素丟失的形式出現(xiàn)。
重要的是,在進(jìn)行數(shù)據(jù)分析或機(jī)器學(xué)習(xí)之前,需要我們對(duì)缺失的數(shù)據(jù)進(jìn)行適當(dāng)?shù)淖R(shí)別和處理。許多機(jī)器學(xué)習(xí)算法不能處理丟失的數(shù)據(jù),需要?jiǎng)h除整行數(shù)據(jù),其中只有一個(gè)丟失的值,或者用一個(gè)新值替換(插補(bǔ))。
根據(jù)數(shù)據(jù)的來源,缺失值可以用不同的方式表示。最常見的是NaN(不是數(shù)字),但是,其他變體可以包括“NA”、“None”、“999”、“0”、“ ”、“-”。如果丟失的數(shù)據(jù)是由數(shù)據(jù)幀中的非NaN表示的,那么應(yīng)該使用np.NaN將其轉(zhuǎn)換為NaN,如下所示。
df.replace('',?np.NaN)missingno 庫(kù)
Missingno 是一個(gè)優(yōu)秀且簡(jiǎn)單易用的 Python 庫(kù),它提供了一系列可視化,以了解數(shù)據(jù)幀中缺失數(shù)據(jù)的存在和分布。這可以是條形圖、矩陣圖、熱圖或樹狀圖的形式。
從這些圖中,我們可以確定缺失值發(fā)生的位置、缺失的程度以及是否有缺失值相互關(guān)聯(lián)。通常,缺失的值可能被視為沒有貢獻(xiàn)任何信息,但如果仔細(xì)分析,可能有潛在的故事。
missingno庫(kù)可以使用pip命令安裝:
pip?install?missingno數(shù)據(jù)集
在本教程中,我們將使用 Xeek and FORCE 2020舉辦的機(jī)器學(xué)習(xí)競(jìng)賽中公開可用數(shù)據(jù)集的一個(gè)子集。競(jìng)賽的目的是根據(jù)現(xiàn)有的標(biāo)記數(shù)據(jù)預(yù)測(cè)巖性。數(shù)據(jù)集包括來自挪威海的118口井。
這些數(shù)據(jù)包含了測(cè)井儀器采集的一系列電測(cè)量數(shù)據(jù)。測(cè)量結(jié)果用于描述地下地質(zhì)特征和確定合適的油氣藏。本文的數(shù)據(jù)和筆記本可以在 GitHub 中找到
https://github.com/andymcdgeo/missingno_tutorial導(dǎo)入庫(kù)和加載數(shù)據(jù)
該過程的第一步是導(dǎo)入庫(kù)。在本文中,我們將使用 pandas 來加載和存儲(chǔ)我們的數(shù)據(jù),并使用 missingno 來可視化數(shù)據(jù)完整性。
將pandas導(dǎo)入為 pd
import?pandas?as?pd import?missingno?as?msno df?=?pd.read_csv('xeek_train_subset.csv')Pandas 快速分析
在使用 missingno 庫(kù)之前,pandas庫(kù)中有一些特性可以讓我們初步了解丟失了多少數(shù)據(jù)。
第一種是使用.descripe()方法。這將返回一個(gè)表,其中包含有關(guān)數(shù)據(jù)幀的匯總統(tǒng)計(jì)信息,例如平均值、最大值和最小值。在表的頂部是一個(gè)名為counts的行。在下面的示例中,我們可以看到數(shù)據(jù)幀中的每個(gè)特性都有不同的計(jì)數(shù)。這提供了并非所有值都存在的初始指示。
我們可以進(jìn)一步使用.info()方法。這將返回?cái)?shù)據(jù)幀的摘要以及非空值的計(jì)數(shù)。
從上面的例子中我們可以看出,我們對(duì)數(shù)據(jù)的狀態(tài)和數(shù)據(jù)丟失的程度有了更簡(jiǎn)明的總結(jié)。
我們可以使用的另一種快速方法是:
df.isna().sum()這將返回?cái)?shù)據(jù)幀中包含了多少缺失值的摘要。isna()部分檢測(cè)dataframe中缺少的值,并為dataframe中的每個(gè)元素返回一個(gè)布爾值。sum()部分對(duì)真值的數(shù)目求和。
此行返回以下信息從這個(gè)總結(jié)中,我們可以看到許多列,即WELL、DEPTH、GROUP、GR 和 LITHOFACIES ?沒有空值。所有其他的都有大量不同程度的缺失值。
使用 missingno 識(shí)別缺失數(shù)據(jù)
在missingno庫(kù)中,有四種類型的圖用于可視化數(shù)據(jù)完整性:條形圖、矩陣圖、熱圖和樹狀圖。在識(shí)別缺失數(shù)據(jù)方面,每種方法都有自己的優(yōu)勢(shì)。
讓我們依次看一下這些。
條形圖
條形圖提供了一個(gè)簡(jiǎn)單的繪圖,其中每個(gè)條形圖表示數(shù)據(jù)幀中的一列。條形圖的高度表示該列的完整程度,即存在多少個(gè)非空值。它可以通過調(diào)用:
msno.bar(df)在繪圖的左側(cè),y軸比例從0.0到1.0,其中1.0表示100%的數(shù)據(jù)完整性。如果條小于此值,則表示該列中缺少值。
在繪圖的右側(cè),用索引值測(cè)量比例。右上角表示數(shù)據(jù)幀中的最大行數(shù)。
在繪圖的頂部,有一系列數(shù)字表示該列中非空值的總數(shù)。
在這個(gè)例子中,我們可以看到許多列(DTS、DCAL和RSHA)有大量的缺失值。其他列(如WELL、DEPTH_MD和GR)是完整的,并且具有最大的值數(shù)。
矩陣圖
如果使用深度相關(guān)數(shù)據(jù)或時(shí)間序列數(shù)據(jù),矩陣圖是一個(gè)很好的工具。它為每一列提供顏色填充。有數(shù)據(jù)時(shí),繪圖以灰色(或您選擇的顏色)顯示,沒有數(shù)據(jù)時(shí),繪圖以白色顯示。
通過調(diào)用以下命令可以生成矩陣圖:
msno.matrix(df)如結(jié)果圖所示,DTS、DCAL和RSHA列顯示了大量缺失數(shù)據(jù)。這是在條形圖中確定的,但附加的好處是您可以「查看丟失的數(shù)據(jù)在數(shù)據(jù)框中的分布情況」。繪圖的右側(cè)是一個(gè)迷你圖,范圍從左側(cè)的0到右側(cè)數(shù)據(jù)框中的總列數(shù)。上圖為特寫鏡頭。當(dāng)一行的每列中都有一個(gè)值時(shí),該行將位于最右邊的位置。當(dāng)該行中缺少的值開始增加時(shí),該行將向左移動(dòng)。
熱圖
熱圖用于確定不同列之間的零度相關(guān)性。換言之,它可以用來標(biāo)識(shí)每一列之間是否存在空值關(guān)系。
接近正1的值表示一列中存在空值與另一列中存在空值相關(guān)。
接近負(fù)1的值表示一列中存在空值與另一列中存在空值是反相關(guān)的。換句話說,當(dāng)一列中存在空值時(shí),另一列中存在數(shù)據(jù)值,反之亦然。
接近0的值表示一列中的空值與另一列中的空值之間幾乎沒有關(guān)系。
有許多值顯示為<-1。這表明相關(guān)性非常接近100%負(fù)。
熱圖可由以下代碼生成:
msno.heatmap(df)在這里我們可以看到ROP柱與RHOB、NPHI和PEF柱呈輕微的負(fù)相關(guān),與RSHA呈輕微的正相關(guān)。如果我們看一下DRHO,它的缺失與RHOB、NPHI和PEF列中的缺失值高度相關(guān)。
熱圖方法更適合于較小的數(shù)據(jù)集。
樹狀圖
樹狀圖提供了一個(gè)通過層次聚類生成的樹狀圖,并將空相關(guān)度很強(qiáng)的列分組在一起。
如果在零級(jí)將多個(gè)列組合在一起,則其中一列中是否存在空值與其他列中是否存在空值直接相關(guān)。樹中的列越分離,列之間關(guān)聯(lián)null值的可能性就越小。
樹狀圖可通過以下方式生成:
msno.dendrogram(df)在上面的樹狀圖中,我們可以看到我們有兩個(gè)不同的組。第一個(gè)是在右側(cè)(DTS、RSHA和DCAL),它們都具有高度的空值。第二列在左邊,其余的列比較完整。
LITHOFACIES, GR, GROUP, WELL, 和 DEPTH_MD 都?xì)w為零,表明它們是完整的。
RDEP、Z?LOC、X?LOC和Y?LOC組合在一起,接近于零。RMED位于同一個(gè)較大的分支中,這表明該列中存在的一些缺失值可以與這四列相關(guān)聯(lián)。
摘要
在應(yīng)用機(jī)器學(xué)習(xí)之前識(shí)別缺失是數(shù)據(jù)質(zhì)量工作的一個(gè)關(guān)鍵組成部分。這可以通過使用missingno庫(kù)和一系列可視化來實(shí)現(xiàn),以了解有多少缺失數(shù)據(jù)存在、發(fā)生在哪里,以及不同數(shù)據(jù)列之間缺失值的發(fā)生是如何關(guān)聯(lián)的。
往期精彩回顧適合初學(xué)者入門人工智能的路線及資料下載機(jī)器學(xué)習(xí)及深度學(xué)習(xí)筆記等資料打印機(jī)器學(xué)習(xí)在線手冊(cè)深度學(xué)習(xí)筆記專輯《統(tǒng)計(jì)學(xué)習(xí)方法》的代碼復(fù)現(xiàn)專輯 AI基礎(chǔ)下載機(jī)器學(xué)習(xí)的數(shù)學(xué)基礎(chǔ)專輯溫州大學(xué)《機(jī)器學(xué)習(xí)課程》視頻 本站qq群851320808,加入微信群請(qǐng)掃碼:總結(jié)
以上是生活随笔為你收集整理的【数据分析】数据缺失影响模型效果?是时候需要missingno工具包来帮你了!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win10如何屏蔽删除电脑右下角的广告
- 下一篇: 搜狗输入法为什么按空格出字 搜狗输入法按