最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

【視頻】為什么要處理缺失數(shù)據(jù)?如何R語言中進(jìn)行缺失值填充?

2022-09-22 14:33 作者:拓端tecdat  | 我要投稿

全文鏈接:http://tecdat.cn/?p=8287

原文出處:拓端數(shù)據(jù)部落公眾號

【視頻】為什么要處理缺失數(shù)據(jù)?如何R語言中進(jìn)行缺失值填充?

為什么要處理缺失數(shù)據(jù)?如何R語言中進(jìn)行缺失值填充?

?

在每個現(xiàn)實世界的數(shù)據(jù)集中,缺失數(shù)據(jù)值幾乎是不可避免的,在典型的數(shù)據(jù)收集過程中幾乎不可能避免。

這可能由于各種原因而發(fā)生,例如文件丟失/損壞、數(shù)據(jù)輸入過程中的錯誤、數(shù)據(jù)收集過程中的技術(shù)問題以及許多其他原因。

在任何現(xiàn)實世界的數(shù)據(jù)集中,通常都會有一些數(shù)據(jù)科學(xué)家和機(jī)器學(xué)習(xí)工程師必須處理的缺失數(shù)據(jù),否則,它可能會導(dǎo)致開發(fā)數(shù)據(jù)時出現(xiàn)一些問題。

表中缺少數(shù)據(jù)

因此,在這篇文章中,我將展示一些可用于處理數(shù)據(jù)驅(qū)動項目中丟失數(shù)據(jù)的技術(shù),并可能消除在構(gòu)建數(shù)據(jù)管道時丟失數(shù)據(jù)可能導(dǎo)致的問題。

為什么你應(yīng)該處理丟失的數(shù)據(jù)

在繼續(xù)如何解決問題之前,必須首先了解為什么需要處理丟失的數(shù)據(jù)。

數(shù)據(jù)確實是所有數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)項目的主要驅(qū)動力。它是機(jī)器做出所有決定的所有項目的核心要素。

雖然缺失數(shù)據(jù)的存在確實令人沮喪,但從數(shù)據(jù)集中徹底消除它可能并不總是正確的方法。例如,考慮下圖。

表中缺少數(shù)據(jù)

如果您考慮消除所有至少有一個缺失值的行,它:

#1 減少數(shù)據(jù)集中的數(shù)據(jù)點數(shù)量

下圖所示,完全拒絕包含任何缺失值的行會顯著減少數(shù)據(jù)集中的行數(shù)。

刪除具有至少一個 NaN 值的行

#2 導(dǎo)致我們已經(jīng)擁有的其他有價值(和正確)信息的丟失

在具有至少一個 NaN 值的行中標(biāo)記的非 NaN 值

即使沒有B觀察到的值,我們?nèi)匀豢梢跃_地知道A,C對應(yīng)值,這仍然非常有價值。

處理缺失數(shù)據(jù)

現(xiàn)在您已經(jīng)了解了為什么要處理缺失數(shù)據(jù),讓我們了解處理缺失數(shù)據(jù)的技術(shù)方面。

每當(dāng)您在表格數(shù)據(jù)中遇到缺失值時,您基本上只有三個選項可供選擇,如下圖所示:

處理缺失數(shù)據(jù)的三種方法

下面讓我們詳細(xì)討論這三種方法。

#1 保留缺失的數(shù)據(jù)

顧名思義,這種方法絕對忽略了數(shù)據(jù)集中任何缺失數(shù)據(jù)點的存在。

不對 DataFrame 應(yīng)用任何轉(zhuǎn)換

然而,在這里,本質(zhì)上假設(shè)丟失的數(shù)據(jù)點不會在數(shù)據(jù)管道中造成任何問題,并且所利用的方法擅長處理丟失的數(shù)據(jù)。

因此,數(shù)據(jù)科學(xué)家或機(jī)器學(xué)習(xí)工程師的工作是決定如果丟失的數(shù)據(jù)保持原樣,他們的算法是否可以工作。

#2 刪除缺失的數(shù)據(jù)

接下來,想象一下,如上所述,保留丟失的數(shù)據(jù)對于您的特定用例是不可行的。

在這種情況下,完全刪除丟失的數(shù)據(jù)可能是一個繼續(xù)前進(jìn)的方向。

這里的主要想法是從 DataFrame 中刪除具有任何缺失值的整行(如果您的用例需要基于系列的分析,則刪除一列)。

換句話說,在這種技術(shù)中,您只保留與每一列(或行)對應(yīng)的非空值的數(shù)據(jù)行(或列),并將數(shù)據(jù)集視為刪除的行從未存在過。

逐行丟棄

顧名思義,這里的目標(biāo)是刪除包含缺失值的 DataFrame 行。

下圖描繪了逐行下降。

刪除具有至少一個 NaN 值的行

在面向行的刪除中,列數(shù)保持不變。

逐列刪除

與逐行刪除相比,逐列刪除涉及刪除包含缺失值的 DataFrame 的列(或系列)。

刪除具有至少一個 NaN 值的列

在面向列的刪除中,行數(shù)保持不變。

#3 填補缺失的數(shù)據(jù)

最后一種技術(shù)涉及用一些值填充缺失的數(shù)據(jù),該值可能是給定未觀察位置的最佳估計值。

用隨機(jī)策略替換缺失值

該策略可能涉及用列的平均值、中值或列的最頻繁值(眾數(shù))填充缺失數(shù)據(jù)——具體取決于列中值的類型。

這是因為平均值、中位數(shù)和眾數(shù)只能針對數(shù)值進(jìn)行估計。但是,在分類列的情況下,均值和中位數(shù)沒有意義。

此外,填充標(biāo)準(zhǔn)完全取決于您的特定數(shù)據(jù)源、您正在解決的問題以及評估該特定缺失數(shù)據(jù)點的舒適程度。

執(zhí)行

尋找缺失值的最佳估計值的最常用技術(shù)包括均值、中值和眾數(shù),如下所示:

  • 用平均值填充:

均值策略用列的平均值替換缺失值。

如上所述,均值策略沒有替換colB.

  • 填充中位數(shù):

接下來,中值策略將列中的缺失值替換為中值。這是在下面實現(xiàn)的:

再一次,最初缺少的值colB仍然充滿了NaN值。

  • 填充眾數(shù)

最后,用眾數(shù)填充,將缺失值替換為列中出現(xiàn)頻率最高的值,如下所示:

您還可以對不同的列應(yīng)用不同的填充策略,如下所示:

?colA在這里,我們用colA的平均值和colB眾數(shù)填充缺失值。

結(jié)論

具體來說,我們研究了為什么處理缺失數(shù)據(jù)對您的數(shù)據(jù)管道至關(guān)重要,然后是處理缺失數(shù)據(jù)的常用策略。

在處理缺失數(shù)據(jù)時,您應(yīng)該記住,我們在本文中討論的三種方法(保持、丟棄和填充)中沒有正確的方法。這是因為每種情況都不同。

根據(jù)情況需要,始終由您決定選擇哪種具體方法。

在R語言中進(jìn)行缺失值填充:估算缺失值

介紹

缺失值被認(rèn)為是預(yù)測建模的首要障礙。因此,掌握克服這些問題的方法很重要。

估算缺失值的方法的選擇在很大程度上影響了模型的預(yù)測能力。在大多數(shù)統(tǒng)計分析方法中,刪除是用于處理缺失值的默認(rèn)方法。但是,它會導(dǎo)致信息丟失。

在本文中,我們列出了5個R語言方法。

鏈?zhǔn)椒匠踢M(jìn)行的多元插補

通過鏈?zhǔn)椒匠踢M(jìn)行的多元插補是R用戶常用的。與單個插補(例如均值)相比,創(chuàng)建多個插補可解決缺失值的不確定性。

MICE假定缺失數(shù)據(jù)是隨機(jī)(MAR)缺失,這意味著,一個值缺失概率上觀測值僅取決于并且可以使用它們來預(yù)測。通過為每個變量指定插補模型,可以按變量插補數(shù)據(jù)。

例如:假設(shè)我們有X1,X2….Xk變量。如果X1缺少值,那么它將在其他變量X2到Xk上回歸。然后,將X1中的缺失值替換為獲得的預(yù)測值。同樣,如果X2缺少值,則X1,X3至Xk變量將在預(yù)測模型中用作自變量。稍后,缺失值將被替換為預(yù)測值。

默認(rèn)情況下,線性回歸用于預(yù)測連續(xù)缺失值。Logistic回歸用于分類缺失值。一旦完成此循環(huán),就會生成多個數(shù)據(jù)集。這些數(shù)據(jù)集僅在估算的缺失值上有所不同。通常,將這些數(shù)據(jù)集分別構(gòu)建模型并組合其結(jié)果被認(rèn)為是一個好習(xí)慣。

確切地說,使用的方法是:

  • PMM(預(yù)測均值匹配)–用于數(shù)字變量

  • logreg(邏輯回歸)–對于二進(jìn)制變量(具有2個級別)

  • polyreg(貝葉斯多元回歸)–用于因子變量(> = 2級)

  • 比例模型(有序,\> = 2個級別)

現(xiàn)在讓我們實際操作。

  1. #讀取數(shù)據(jù)

  2. >?data?<-?iris


  3. #隨機(jī)產(chǎn)生10%的缺失值

  4. >?summary(iris)


  5. #隨機(jī)產(chǎn)生10%的缺失值

  6. >?iris.mis?<-?prodNA(iris,?noNA?=?0.1)


  7. #檢查數(shù)據(jù)中引入的缺失值

  8. >?summary(iris.mis)

我刪除了分類變量。讓我們在這里關(guān)注連續(xù)值。要處理分類變量,只需對類level進(jìn)行編碼并按照以下步驟進(jìn)行即可。

  1. #刪除類別變量

  2. >?iris.mis?<-?subset(iris.mis,?select?=?-c(Species))


?md.pattern返回數(shù)據(jù)集中每個變量中存在的缺失值的表格形式。

>?pattern(iris.mis)

讓我們了解一下這張表。有98個觀測值,沒有缺失值。Sepal.Length中有10個觀測值缺失的觀測值。同樣,Sepal.Width等還有13個缺失值。

我們還可以創(chuàng)建代表缺失值的視覺效果。

  1. >?plot(iris.mis,?col,

  2. ????????????????????numbers=TRUE,?sortVars=TRUE"))

讓我們快速了解這一點。數(shù)據(jù)集中有67%的值,沒有缺失值。在Petal.Length中缺少10%的值,在Petal.Width中缺少8%的值,依此類推。您還可以查看直方圖,該直方圖清楚地描述了變量中缺失值的影響。

現(xiàn)在,讓我們估算缺失的值。

  1. Multiply?imputed?data?set

  2. Call:

  3. ?Number?of?multiple?imputations:?5

  4. Missing?cells?per?column:

  5. Sepal.Length?Sepal.Width?Petal.Length?Petal.Width?

  6. 13????????????14??????????16???????????15?

  7. Imputation?methods:

  8. Sepal.Length?Sepal.Width?Petal.Length?Petal.Width?

  9. "pmm"????????"pmm"????????"pmm"???????"pmm"?

  10. VisitSequence:

  11. Sepal.Length?Sepal.Width?Petal.Length?Petal.Width?

  12. 1??????????????2????????????3???????????4?

  13. PredictorMatrix:

  14. ??????????????Sepal.Length?Sepal.Width?Petal.Length?Petal.Width

  15. Sepal.Length????????0??????????1????????????1????????????1

  16. Sepal.Width?????????1??????????0????????????1????????????1

  17. Petal.Length????????1??????????1????????????0????????????1

  18. Petal.Width?????????1??????????1????????????1????????????0

  19. Random?generator?seed?value:?500

這是使用的參數(shù)的說明:

  • m – 估算數(shù)據(jù)集

  • maxit – 插補缺失值的迭代次數(shù)

  • method –是指插補中使用的方法。我們使用了預(yù)測均值匹配。

由于有5個估算數(shù)據(jù)集,因此可以使用_complete()_函數(shù)選擇任何數(shù)據(jù)集。

還可以合并來自這些模型的結(jié)果,并使用_pool()_命令獲得合并的輸出。

請注意,我僅出于演示目的使用了上面的命令。您可以在最后替換變量值并嘗試。

多重插補

該程序包還執(zhí)行多個插補(生成插補數(shù)據(jù)集)以處理缺失值。多重插補有助于減少偏差并提高效率。它可以通過基于bootstrap程序的EMB算法,從而可以更快速,更可靠地插入許多變量,包括橫截面,時間序列數(shù)據(jù)等。此外,還可以使用多核CPU的并行插入。

相關(guān)視頻

拓端

它做出以下假設(shè):

  • 數(shù)據(jù)集中的所有變量均具有多元正態(tài)分布(MVN)。它使用均值和協(xié)方差匯總數(shù)據(jù)。

  • 缺失數(shù)據(jù)本質(zhì)上是隨機(jī)的(隨機(jī)缺失)

因此,當(dāng)數(shù)據(jù)具有多變量正態(tài)分布時,最有效。如果沒有,將進(jìn)行轉(zhuǎn)換以使數(shù)據(jù)接近正態(tài)分布。

唯一需要注意的是對變量進(jìn)行分類。

  1. ?#訪問估算的輸出

  2. >?amelia_fit$imputations\[\[1\]\]


要檢查數(shù)據(jù)集中的特定列,使用

  1. >?amelia_fit$imputations\[\[5\]\]$Sepal.Length


  2. #將輸出導(dǎo)出到csv文件



隨機(jī)森林

顧名思義,missForest是一個實現(xiàn)隨機(jī)森林算法。它適用于各種變量類型的非參數(shù)插補法。那么,什么是非參數(shù)方法?

相關(guān)視頻

拓端

非參數(shù)方法不會有關(guān)于函數(shù)形式明確的假設(shè)_?F _。取而代之的是,它嘗試估計_f_,使其可以與數(shù)據(jù)點盡可能接近。

它是如何工作的 ?簡而言之,它為每個變量建立一個隨機(jī)森林模型。然后,它使用模型在觀測值的幫助下預(yù)測變量中的缺失值。

它產(chǎn)生OOB(袋外)估算誤差估計。而且,它對插補過程提供了高水平的控制。它有選擇分別返回OOB(每個變量),而不是聚集在整個數(shù)據(jù)矩陣。這有助于準(zhǔn)確估算模型值。

NRMSE是歸一化的均方誤差。它用于表示從估算連續(xù)值得出的誤差。PFC(錯誤分類的比例)用于表示從估算類別值得出的誤差。

  1. #比較實際數(shù)據(jù)準(zhǔn)確性


  2. >iris.err


  3. NRMSE??????PFC?

  4. 0.1535103?0.0625000

這表明類別變量的誤差為6%,連續(xù)變量的誤差為15%。這可以通過調(diào)整_mtry_和_ntree_參數(shù)的值來改善??。mtry是指在每個分支中隨機(jī)采樣的變量數(shù)。ntree是指在森林中生長的樹木數(shù)量。

非參數(shù)回歸方法

對多個插補中的每個插補使用不同的bootstrap程序重采樣。然后,將 加性模型(非參數(shù)回歸方法)擬合到從原始數(shù)據(jù)中進(jìn)行替換得到的樣本上,并使用非缺失值(獨立變量)預(yù)測缺失值(充當(dāng)獨立變量)。

然后,它使用預(yù)測均值匹配(默認(rèn))來插補缺失值。預(yù)測均值匹配非常適合連續(xù)和分類(二進(jìn)制和多級),而無需計算殘差和最大似然擬合。

自動識別變量類型并對其進(jìn)行相應(yīng)處理。

>?impute_arg

輸出顯示R2值作為預(yù)測的缺失值。該值越高,預(yù)測的值越好。使用以下命令檢查估算值

  1. #檢查估算變量Sepal.Length

  2. >?impute_arg$imputed$Sepal.Length

帶有診斷的多重插補

帶有診斷的多重插補 提供了一些用于處理缺失值的方法。它也構(gòu)建了多個插補模型來近似缺失值。并且,使用預(yù)測均值匹配方法。

雖然,我已經(jīng)在上面解釋了預(yù)測均值匹配(pmm)? :對于變量中缺失值的每個觀察值,我們都會從可用值中找到最接近的觀察值該變量的預(yù)測均值。然后將來自“匹配”的觀察值用作推斷值。

  • 它可以對插補模型進(jìn)行圖形診斷,并可以實現(xiàn)插補過程的收斂。

  • 它使用貝葉斯版本的回歸模型來處理問題。

  • 插補模型規(guī)范類似于R中的回歸輸出

  • 它會自動檢測數(shù)據(jù)中的不規(guī)則性,例如變量之間的高共線性。

  • 而且,它在歸算過程中增加了噪聲,以解決加性約束的問題。

如圖所示,它使用匯總統(tǒng)計信息來定義估算值。

尾注

在本文中,我說明使用5個方法進(jìn)行缺失值估算。這種方法可以幫助您在建立預(yù)測模型時獲得更高的準(zhǔn)確性。

本文選自《在R語言中進(jìn)行缺失值填充:估算缺失值》。

點擊標(biāo)題查閱往期內(nèi)容

R語言用線性模型進(jìn)行臭氧預(yù)測:加權(quán)泊松回歸,普通最小二乘,加權(quán)負(fù)二項式模型,多重插補缺失值

stata對包含協(xié)變量的模型進(jìn)行缺失值多重插補分析

在R語言中進(jìn)行缺失值填充:估算缺失值

R語言用線性模型進(jìn)行臭氧預(yù)測:加權(quán)泊松回歸,普通最小二乘,加權(quán)負(fù)二項式模型,多重插補缺失值

R語言缺失值的處理:線性回歸模型插補

R語言:用R語言填補缺失的數(shù)據(jù)

stata對包含協(xié)變量的模型進(jìn)行缺失值多重插補分析

stata如何處理結(jié)構(gòu)方程模型(SEM)中具有缺失值的協(xié)變量

隨機(jī)森林優(yōu)化貝葉斯預(yù)測分析汽車燃油經(jīng)濟(jì)性

R語言邏輯回歸、Naive Bayes貝葉斯、決策樹、隨機(jī)森林算法預(yù)測心臟病

R語言隨機(jī)森林RandomForest、邏輯回歸Logisitc預(yù)測心臟病數(shù)據(jù)和可視化分析

R語言基于Bagging分類的邏輯回歸(Logistic Regression)、決策樹、森林分析心臟病患者

R語言用主成分PCA、?邏輯回歸、決策樹、隨機(jī)森林分析心臟病數(shù)據(jù)并高維可視化


【視頻】為什么要處理缺失數(shù)據(jù)?如何R語言中進(jìn)行缺失值填充?的評論 (共 條)

分享到微博請遵守國家法律
临邑县| 习水县| 印江| 哈尔滨市| 舟曲县| 怀安县| 新绛县| 满城县| 斗六市| 堆龙德庆县| 长治市| 昌黎县| 平安县| 昭觉县| 龙山县| 朔州市| 阿勒泰市| 洛隆县| 车险| 巧家县| 扶沟县| 大石桥市| 阿合奇县| 毕节市| 靖安县| 平原县| 惠东县| 长治县| 阜宁县| 南京市| 大连市| 珠海市| 鄂托克旗| 台北市| 合川市| 乌拉特中旗| 松原市| 永善县| 诸暨市| 香港 | 万宁市|