自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

缺失數(shù)據(jù)別怕!這里有份強(qiáng)大的初學(xué)者指南

大數(shù)據(jù) 數(shù)據(jù)分析
根據(jù)很多專(zhuān)業(yè)人士的經(jīng)驗(yàn),對(duì)數(shù)據(jù)清理涉及的過(guò)程有充分的認(rèn)知總是好的。了解流程、流程的重要性以及流程中可使用的技巧,將減少執(zhí)行數(shù)據(jù)清理任務(wù)所需的時(shí)間。

實(shí)際上,數(shù)據(jù)科學(xué)家80%到90%的工作是數(shù)據(jù)清理,而這項(xiàng)工作的目的是為了執(zhí)行其余10%的機(jī)器學(xué)習(xí)任務(wù)。沒(méi)有什么比完成數(shù)據(jù)集分析后的收獲更讓人興奮的了。如何減少清理數(shù)據(jù)的時(shí)間?如何為至關(guān)重要的10%的工作保留精力?

根據(jù)很多專(zhuān)業(yè)人士的經(jīng)驗(yàn),對(duì)數(shù)據(jù)清理涉及的過(guò)程有充分的認(rèn)知總是好的。了解流程、流程的重要性以及流程中可使用的技巧,將減少執(zhí)行數(shù)據(jù)清理任務(wù)所需的時(shí)間。

[[273918]]

良好數(shù)據(jù)的重要性

好的數(shù)據(jù)被定義為準(zhǔn)確、完整、符合、一致、及時(shí)、獨(dú)特且有效的數(shù)據(jù)。機(jī)器學(xué)習(xí)算法依賴于“好數(shù)據(jù)”來(lái)構(gòu)建模型,執(zhí)行和概括性能。對(duì)于實(shí)際數(shù)據(jù),當(dāng)意識(shí)到ML算法不起作用或者M(jìn)L算法的性能無(wú)法在更大的數(shù)據(jù)集中推廣時(shí),通常會(huì)發(fā)現(xiàn)數(shù)據(jù)問(wèn)題。

在第一次數(shù)據(jù)科學(xué)的過(guò)程中找到所有數(shù)據(jù)問(wèn)題幾乎是不可能的。需要做好以下準(zhǔn)備:數(shù)據(jù)清理的迭代過(guò)程 - >數(shù)據(jù)建模 - >性能調(diào)整。在迭代過(guò)程中,通過(guò)從一開(kāi)始就獲得基本面,可以大幅縮短時(shí)間。

在統(tǒng)計(jì)學(xué)中,經(jīng)常會(huì)發(fā)現(xiàn)有人將數(shù)據(jù)分析過(guò)程比作約會(huì)。在最初的約會(huì)中,了解伴侶(即數(shù)據(jù))至關(guān)重要。是否有可能在后期出現(xiàn)的交易破壞者?這些交易破壞者是你一開(kāi)始就要抓住的,它們將使數(shù)據(jù)有失偏頗。

數(shù)據(jù)中最大的交易破壞者之一是“數(shù)據(jù)缺失”。

了解缺失的數(shù)據(jù)

缺失的數(shù)據(jù)可以有各種形狀和大小。它們可能類(lèi)似于下面第1行的數(shù)據(jù),其中只有胰島素欄有所缺失。它們也可以是第2行中丟失的許多欄數(shù)據(jù)。它們還可以是第3行中包含0的許多欄數(shù)據(jù)。需要知道它們有許多變體。可視化每列數(shù)據(jù)只能到此為止。在箱線圖中可視化每欄數(shù)據(jù)以查找異常值?;蛘呤褂脽釄D來(lái)可視化數(shù)據(jù),突出顯示缺失的數(shù)據(jù)。

吳軍的糖尿病缺失數(shù)據(jù)

在Python中:

  1. import seaborn as sb 
  2. sb.heatmap(df.isnull(),cbar=False

如何對(duì)缺失數(shù)據(jù)進(jìn)行分類(lèi)?

[[273919]]

在可視化缺失數(shù)據(jù)后,第一件事是對(duì)丟失的數(shù)據(jù)進(jìn)行分類(lèi)。

有三類(lèi)缺失數(shù)據(jù):完全缺失隨機(jī)(MCAR),缺失隨機(jī)(MAR),缺失不隨機(jī)(MNAR):

MCAR—缺失值完全隨機(jī)丟失。數(shù)據(jù)點(diǎn)丟失的傾向與其假設(shè)值和其他變量的值無(wú)關(guān)。

MAR—由于某些觀察到的數(shù)據(jù)而缺少缺失值。數(shù)據(jù)點(diǎn)丟失的傾向與丟失的數(shù)據(jù)無(wú)關(guān),但它與一些觀察到的數(shù)據(jù)有關(guān)。

MNAR—缺失的值不是隨機(jī)丟失的,而是有原因的。通常,原因在于缺失值取決于假設(shè)值,或者取決于另一個(gè)變量的值。

缺失的數(shù)據(jù)是隨機(jī)的嗎?

如果數(shù)據(jù)隨機(jī)丟失,則將以不同于隨機(jī)丟失的數(shù)據(jù)的方式來(lái)處理數(shù)據(jù)。使用Little’sMCAR測(cè)試來(lái)確定數(shù)據(jù)是否隨機(jī)丟失。

Little’sMCAR的原假設(shè):數(shù)據(jù)完全隨機(jī)缺失。根據(jù)測(cè)試結(jié)果,你可以拒絕或接受此原假設(shè)。

在SPSS中:使用Analyze - > Missing Value Analysis - > EM

在R中,使用BaylorEdPsych集合中的LittleMCAR()函數(shù)。

傳送門(mén):https://rdrr.io/cran/BaylorEdPsych/man/LittleMCAR.html?source=post_page

LittleMCAR(df)#df是不超過(guò)50個(gè)變量的數(shù)據(jù)幀

解釋?zhuān)喝绻鹲ig或統(tǒng)計(jì)顯著性大于0.05,則沒(méi)有統(tǒng)計(jì)學(xué)意義。這意味著要接受“數(shù)據(jù)完全隨機(jī)缺失”的原假設(shè)。

如果是MAR和MCAR,則刪除。

反之,估算。

刪除方法

列表刪除—此方法是指移除包含一個(gè)或多個(gè)缺失數(shù)據(jù)的整個(gè)數(shù)據(jù)記錄。

缺點(diǎn)—統(tǒng)計(jì)能力依賴于高樣本量。在較小的數(shù)據(jù)集中,列表刪除可以減少樣本量。除非確定該記錄絕對(duì)不是MNAR,否則此方法可能會(huì)給數(shù)據(jù)集引入偏差。

在Python中:

  1. nMat <-cov(diabetes_data,use =“complete.obs”) 

成對(duì)刪除—在分析基礎(chǔ)上,利用變量對(duì)之間的相關(guān)性來(lái)最大化可用數(shù)據(jù)的方法。

在Python中:

  1. nMat <-cov(diabetes_data,use =“pairwise.complete.obs”) 

缺點(diǎn)—由于不同數(shù)量的觀察結(jié)果對(duì)模型的不同部分有貢獻(xiàn),難以解釋模型的各個(gè)部分。

刪除變量—這一方法是指,在數(shù)據(jù)缺少60%的情況下刪除變量。

  1. diabetes_data.drop('column_name',axis = 1,inplace = True) 

缺點(diǎn)—難以知曉丟棄的變量如何影響數(shù)據(jù)集中的其他變量。

如果不能刪除,那么估算則是另一種方法。

缺失數(shù)據(jù)插補(bǔ)的方法

分類(lèi)變量—這些變量具有固定數(shù)量的可能值。這些變量組成的一個(gè)例子是性別=男性,女性,不適用。

對(duì)于分類(lèi)變量,有 3種方法來(lái)估算數(shù)據(jù)。

  • 從缺失值中創(chuàng)建新級(jí)別
  • 使用邏輯回歸、KNN等預(yù)測(cè)模型來(lái)估計(jì)數(shù)據(jù)
  • 使用多個(gè)插補(bǔ)

連續(xù)變量—這些變量具有位于某個(gè)區(qū)間的實(shí)際值。其中的一個(gè)例子是支付金額= 0到無(wú)窮大。

對(duì)于連續(xù)變量,可以使用3種方法來(lái)估算數(shù)據(jù)。

  • 使用均值、中位數(shù)、模式
  • 使用線性回歸,KNN等預(yù)測(cè)模型來(lái)估算數(shù)據(jù)
  • 使用多個(gè)插補(bǔ)

從缺失的值中創(chuàng)建新的級(jí)別

如果沒(méi)有大量缺失值,那么為缺失值創(chuàng)建新級(jí)別的分類(lèi)變量是處理缺失值的好方法。

在Python中:

  1. import pandas as pd 
  2.   
  3. diabetes=pd.read_csv('data/diabetes.csv') 
  4. diabetes["Gender"].fillna("No Gender", inplace=diabetes 

平均值、中位數(shù)、模式

該方法涉及使用平均值,中位數(shù)或模式來(lái)估算缺失的數(shù)據(jù)。這種方法的優(yōu)點(diǎn)是它很容易實(shí)現(xiàn)。但同時(shí)也有許多缺點(diǎn)。

在Python中:

  1. df.Column_Name.fillna(df.Column_Name.mean(),inplace = True) 
  2. df.Column_Name.fillna(df.Column_Name.median(),inplace = True) 
  3. df.Column_Name.fillna(df.Column_Name.mode(),inplace = True) 

平均值、中位數(shù)、模式估算的缺點(diǎn)—它減少了估算變量的方差,也縮小了標(biāo)準(zhǔn)誤差,這使大多數(shù)假設(shè)檢驗(yàn)和置信區(qū)間的計(jì)算無(wú)效。它忽略了變量之間的相關(guān)性,可能過(guò)度表示和低估某些數(shù)據(jù)。

邏輯回歸

以一個(gè)統(tǒng)計(jì)模型為例,它使用邏輯函數(shù)來(lái)建模因變量。因變量是二進(jìn)制因變量,其中兩個(gè)值標(biāo)記為“0”和“1”。邏輯函數(shù)是一個(gè)S函數(shù),其中輸入是對(duì)數(shù)幾率,輸出是概率。(例如:Y:通過(guò)考試的概率,X:學(xué)習(xí)時(shí)間.S函數(shù)的圖形如下圖)

圖片來(lái)自維基百科:邏輯回歸

在Python中:

  1. from sklearn.pipeline import Pipeline 
  2. from sklearn.preprocessing import Imputer 
  3. from sklearn.linear_model import LogisticRegression 
  4.  
  5. imp=Imputer(missing_values="NaN"strategy="mean"axis=0
  6. logmodel = LogisticRegression() 
  7. steps=[('imputation',imp),('logistic_regression',logmodel)] 
  8. pipeline=Pipeline(steps) 
  9. X_train, X_test, Y_train, Y_test=train_test_split(X, y, test_size=0.3,random_state=42
  10. pipeline.fit(X_train, Y_train) 
  11. y_pred=pipeline.predict(X_test) 
  12. pipeline.score(X_test, Y_test) 

邏輯回歸的缺點(diǎn):

  • 由于夸大其預(yù)測(cè)準(zhǔn)確性的事實(shí),容易過(guò)度自信或過(guò)度擬合。
  • 當(dāng)存在多個(gè)或非線性決策邊界時(shí),往往表現(xiàn)不佳。
  • 線性回歸

以一個(gè)統(tǒng)計(jì)模型為例,它使用線性預(yù)測(cè)函數(shù)來(lái)模擬因變量。因變量y和自變量x之間的關(guān)系是線性的。在這種情況下,系數(shù)是線的斜率。點(diǎn)到線形成的距離標(biāo)記為(綠色)是誤差項(xiàng)。

圖片來(lái)自維基百科:線性回歸

圖片來(lái)自維基百科:線性回歸

在Python中:

  1. from sklearn.linear_model import LinearModel 
  2. from sklearn.preprocessing import Imputer 
  3. from sklearn.pipeline import Pipeline 
  4.  
  5. imp=Imputer(missing_values="NaN"strategy="mean"axis=0
  6. linmodel = LinearModel() 
  7. steps=[('imputation',imp),('linear_regression',linmodel)] 
  8. pipeline=Pipeline(steps) 
  9. X_train, X_test, Y_train, Y_test=train_test_split(X, y, test_size=0.3,random_state=42
  10. pipeline.fit(X_train, Y_train) 
  11. y_pred=pipeline.predict(X_test) 
  12. pipeline.score(X_test, Y_test 

線性回歸的缺點(diǎn):

  • 標(biāo)準(zhǔn)錯(cuò)誤縮小
  • x和y之間需具有線性關(guān)系

KNN(K-近鄰算法)

這是一種廣泛用于缺失數(shù)據(jù)插補(bǔ)的模型。它被廣泛使用的原因是它可以處理連續(xù)數(shù)據(jù)和分類(lèi)數(shù)據(jù)。

此模型是一種非參數(shù)方法,可將數(shù)據(jù)分類(lèi)到最近的重度加權(quán)鄰居。用于連續(xù)變量的距離是歐幾里德,對(duì)于分類(lèi)數(shù)據(jù),它可以是漢明距離(Hamming Distance)。在下面的例子中,綠色圓圈是Y。它和紅色三角形劃分到一起而不是藍(lán)色方塊,因?yàn)樗浇袃蓚€(gè)紅色三角形。

圖片來(lái)自維基百科:KNN

  1. from sklearn.neighbors import KNeighborsClassifier 
  2. from sklearn.preprocessing import Imputer 
  3. from sklearn.pipeline import Pipeline 
  4.  
  5. k_range=range(1,26) 
  6.   
  7. for k in k_range: 
  8.  imp=Imputer(missing_values=”NaN”,strategy=”mean”, axis=0
  9.  knn=KNeighborsClassifier(n_neighbors=k
  10.  steps=[(‘imputation’,imp),(‘K-NearestNeighbor’,knn)] 
  11.  pipeline=Pipeline(steps) 
  12.  X_train, X_test, Y_train,Y_test=train_test_split(X, y, test_size=0.3, random_state=42
  13.  pipeline.fit(X_train, Y_train) 
  14.  y_pred=pipeline.predict(X_test) 
  15.  pipeline.score(X_test, Y_test) 

KNN的缺點(diǎn):

  • 在較大的數(shù)據(jù)集上耗費(fèi)時(shí)間長(zhǎng)
  • 在高維數(shù)據(jù)上,精度可能會(huì)嚴(yán)重降低

多重插補(bǔ)

多個(gè)插補(bǔ)或MICE算法通過(guò)運(yùn)行多個(gè)回歸模型來(lái)工作,并且每個(gè)缺失值均根據(jù)觀察到(非缺失)的值有條件地建模。多次估算的強(qiáng)大之處在于它可估算連續(xù),二進(jìn)制,無(wú)序分類(lèi)和有序分類(lèi)數(shù)據(jù)的混合。

多重插補(bǔ)的步驟是:

  • 用鼠標(biāo)輸入數(shù)據(jù)()
  • 使用with()構(gòu)建模型
  • 使用pool()匯集所有模型的結(jié)果

在R中,MICE集提供多個(gè)插補(bǔ)。

  1. library(mice) 
  2. imp<-mice(diabetes, method="norm.predict"m=1
  3. data_imp<-complete(imp) 
  4. imp<-mice(diabetes, m=5
  5. fit<-with(data=imp, lm(y~x+z)) 
  6. combine<-pool(fit) 

MICE的缺點(diǎn):

  • 不像其他估算方法一樣具有理論依據(jù)
  • 數(shù)據(jù)的復(fù)雜性

處理缺失的數(shù)據(jù)是數(shù)據(jù)科學(xué)家工作的最重要部分之一。算法中擁有干凈的數(shù)據(jù)意味著你的機(jī)器學(xué)習(xí)算法的性能會(huì)更好。在數(shù)據(jù)清理過(guò)程開(kāi)始時(shí),區(qū)分MCAR,MAR,MNAR是必不可少的。雖然有不同的方法來(lái)處理缺失的數(shù)據(jù)插補(bǔ),但KNN和MICE仍然是處理連續(xù)和分類(lèi)數(shù)據(jù)的最受歡迎的方法。

 

責(zé)任編輯:趙寧寧 來(lái)源: 讀芯術(shù)
相關(guān)推薦

2018-01-29 13:41:06

數(shù)據(jù)庫(kù)區(qū)塊鏈比特幣

2022-04-24 15:21:01

MarkdownHTML

2021-05-10 08:50:32

網(wǎng)絡(luò)管理網(wǎng)絡(luò)網(wǎng)絡(luò)性能

2022-03-28 09:52:42

JavaScript語(yǔ)言

2023-07-28 07:31:52

JavaScriptasyncawait

2023-07-03 15:05:07

預(yù)測(cè)分析大數(shù)據(jù)

2022-10-10 15:28:45

負(fù)載均衡

2010-06-13 11:13:38

UML初學(xué)者指南

2022-07-22 13:14:57

TypeScript指南

2010-08-26 15:47:09

vsftpd安裝

2018-10-28 16:14:55

Reactreact.js前端

2012-03-14 10:56:23

web app

2023-02-10 08:37:28

2022-09-05 15:36:39

Linux日志記錄syslogd

2013-03-06 10:40:58

Adobe Edge HTML5

2013-04-08 16:35:52

Adobe Edge

2011-03-02 10:57:27

vsFTPd

2024-12-25 08:00:00

機(jī)器學(xué)習(xí)ML管道人工智能

2021-05-06 09:00:00

JavaScript靜態(tài)代碼開(kāi)發(fā)

2023-02-19 15:31:09

架構(gòu)軟件開(kāi)發(fā)代碼
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)