成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

人工智能 機(jī)器學(xué)習(xí)
數(shù)據(jù)科學(xué)就是關(guān)于數(shù)據(jù)的。它是任何數(shù)據(jù)科學(xué)或機(jī)器學(xué)習(xí)項(xiàng)目的關(guān)鍵。在大多數(shù)情況下,當(dāng)我們從不同的資源收集數(shù)據(jù)或從某處下載數(shù)據(jù)時(shí),幾乎有95%的可能性我們的數(shù)據(jù)中包含缺失的值。

 數(shù)據(jù)科學(xué)就是關(guān)于數(shù)據(jù)的。它是任何數(shù)據(jù)科學(xué)或機(jī)器學(xué)習(xí)項(xiàng)目的關(guān)鍵。在大多數(shù)情況下,當(dāng)我們從不同的資源收集數(shù)據(jù)或從某處下載數(shù)據(jù)時(shí),幾乎有95%的可能性我們的數(shù)據(jù)中包含缺失的值。我們不能對包含缺失值的數(shù)據(jù)進(jìn)行分析或訓(xùn)練機(jī)器學(xué)習(xí)模型。這就是為什么我們90%的時(shí)間都花在數(shù)據(jù)預(yù)處理上的主要原因。我們可以使用許多技術(shù)來處理丟失的數(shù)據(jù)。在這個(gè)文章中,我將分享處理數(shù)據(jù)缺失的9種方法,但首先讓我們看看為什么會(huì)出現(xiàn)數(shù)據(jù)缺失以及有多少類型的數(shù)據(jù)缺失。

[[349856]]

 

不同類型的缺失值

缺失的值主要有三種類型。

  • 完全隨機(jī)缺失(MCAR):當(dāng)數(shù)據(jù)為MCAR時(shí),如果所有觀測的缺失概率都相同,則一個(gè)變量完全隨機(jī)缺失,這意味著數(shù)據(jù)缺失與數(shù)據(jù)集中任何其他觀察到的或缺失的值完全沒有關(guān)系。換句話說,那些缺失的數(shù)據(jù)點(diǎn)是數(shù)據(jù)集的一個(gè)隨機(jī)子集。
  • 丟失數(shù)據(jù)不是隨機(jī)的(MNAR):顧名思義,丟失的數(shù)據(jù)和數(shù)據(jù)集中的任何其他值之間存在某種關(guān)系。
  • 隨機(jī)丟失(MAR):這意味著數(shù)據(jù)點(diǎn)丟失的傾向與丟失的數(shù)據(jù)無關(guān),但與數(shù)據(jù)集中其他觀察到的數(shù)據(jù)有關(guān)。

數(shù)據(jù)集中缺少值的原因有很多。例如,在數(shù)據(jù)集的身高和年齡,會(huì)有更多年齡列中缺失值,因?yàn)榕⑼ǔk[藏他們的年齡相同的如果我們準(zhǔn)備工資的數(shù)據(jù)和經(jīng)驗(yàn),我們將有更多的薪水中的遺漏值因?yàn)榇蠖鄶?shù)男人不喜歡分享他們的薪水。在更大的情況下,比如為人口、疾病、事故死亡者準(zhǔn)備數(shù)據(jù),納稅人記錄通常人們會(huì)猶豫是否記下信息,并隱藏真實(shí)的數(shù)字。即使您從第三方資源下載數(shù)據(jù),仍然有可能由于下載時(shí)文件損壞而丟失值。無論原因是什么,我們的數(shù)據(jù)集中丟失了值,我們需要處理它們。讓我們看看處理缺失值的9種方法。

這里使用的也是經(jīng)典的泰坦尼克的數(shù)據(jù)集

讓我們從加載數(shù)據(jù)集并導(dǎo)入所有庫開始。

 

  1. import pandas as pd 
  2. df=pd.read_csv("data/titanic.csv",usecols=['Age','Cabin','Survived']) 
  3. df.isnull().mean() 
  4. df.dtypes 

 

運(yùn)行上述代碼塊后,您將看到Age、Cabin和裝載裝載包含空值。Age包含所有整數(shù)值,而Cabin包含所有分類值。

1、均值、中值、眾數(shù)替換

在這種技術(shù)中,我們將null值替換為列中所有值的均值/中值或眾數(shù)。

平均值(mean):所有值的平均值

 

  1. def impute_nan(df,column,mean): 
  2.     df[column+'_mean']=df[column].fillna(mean) ##NaN -> mean 
  3.      
  4. impute_nan(df,'Age',df.Age.mean()) ##mean of Age(29.69) 

 

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

 

 

中值(median):所有值的中心值

 

  1. def impute_nan(df,column,median): 
  2.     df[column+'_mean']=df[column].fillna(median) 
  3. impute_nan(df,'Age',df.Age.median()) ##median of Age(28.0) 

 

 

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

 

眾數(shù)(mode):最常見的值

 

  1. def impute_nan(df,column,mode): 
  2.     df[column+'_mean']=df[column].fillna(mode) 
  3. impute_nan(df,'Age',df.Age.mode()) ##mode of Age(24.0) 

 

 

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

 

優(yōu)點(diǎn)

  • 易于實(shí)現(xiàn)(對異常值健壯)
  • 獲得完整數(shù)據(jù)集的更快方法

缺點(diǎn)

  • 原始方差的變化或失真
  • 影響相關(guān)性
  • 對于分類變量,我們需要眾數(shù)。平均值和中位數(shù)都不行。

2、隨機(jī)樣本估算

在這種技術(shù)中,我們用dataframe中的隨機(jī)樣本替換所有nan值。它被用來輸入數(shù)值數(shù)據(jù)。我們使用sample()對數(shù)據(jù)進(jìn)行采樣。在這里,我們首先取一個(gè)數(shù)據(jù)樣本來填充NaN值。然后更改索引,并將其替換為與NaN值相同的索引,最后將所有NaN值替換為一個(gè)隨機(jī)樣本。

優(yōu)點(diǎn)

  • 容易實(shí)現(xiàn)
  • 方差失真更小

缺點(diǎn)

  • 我們不能把它應(yīng)用于每一種情況

用隨機(jī)樣本注入替換年齡列NaN值

 

  1. def impute_nan(df,variable): 
  2.     df[variable+"_random"]=df[variable] 
  3.     ##It will have the random sample to fill the na 
  4.     random_sample=df[variable].dropna().sample(df[variable].isnull().sum(),random_state=0) 
  5.     ##pandas need to have same index in order to merge the dataset 
  6.     random_sample.index=df[df[variable].isnull()].index #replace random_sample index with NaN values index 
  7.     #replace where NaN are there 
  8.     df.loc[df[variable].isnull(),variable+'_random']=random_sample 
  9.     col=variable+"_random" 
  10.     df = df.drop(col,axis=1) 
  11.  
  12. impute_nan(df,"Age"

 

 

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

 

3、用新特性獲取NAN值

這種技術(shù)在數(shù)據(jù)不是完全隨機(jī)丟失的情況下最有效。在這里,我們在數(shù)據(jù)集中添加一個(gè)新列,并將所有NaN值替換為1。

優(yōu)點(diǎn)

  • 容易實(shí)現(xiàn)
  • 獲取了了NaN值的重要性

缺點(diǎn)

  • 創(chuàng)建額外的特性(維度詛咒)

 

  1. import numpy as np 
  2. df['age_nan']=np.where(df['Age'].isnull(),1,0) 
  3. ## It will create one new column that contains value 1 in the rows where Age value is NaN, otherwise 0.  

 

4、End of Distribution

在這種技術(shù)中,我們用第3個(gè)標(biāo)準(zhǔn)偏差值(3rd standard deviation)替換NaN值。它還用于從數(shù)據(jù)集中刪除所有異常值。首先,我們使用std()計(jì)算第3個(gè)標(biāo)準(zhǔn)偏差,然后用該值代替NaN。優(yōu)點(diǎn)

  • 容易實(shí)現(xiàn)。
  • 抓住了缺失值的重要性,如果有的話。

缺點(diǎn)

  • 使變量的原始分布失真。
  • 如果NAN的數(shù)量很大。它將掩蓋分布中真正的異常值。
  • 如果NAN的數(shù)量較小,則替換后的NAN可以被認(rèn)為是一個(gè)離群值,并在后續(xù)的特征工程中進(jìn)行預(yù)處理。

 

  1. def impute_nan(df,variable,median,extreme): 
  2.     df[variable+"_end_distribution"]=df[variable].fillna(extreme) 
  3.      
  4. extreme=df.Age.mean()+3*df.Age.std() ##73.27--> 3rd std deviation  
  5. impute_nan(df,'Age',df.Age.median(),extreme) 

 

 

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

 

 

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

 

 

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

 

5、任意值替換

在這種技術(shù)中,我們將NaN值替換為任意值。任意值不應(yīng)該更頻繁地出現(xiàn)在數(shù)據(jù)集中。通常,我們選擇最小離群值或最后離群值作為任意值。

優(yōu)點(diǎn)

  • 容易實(shí)現(xiàn)
  • 獲取了缺失值的重要性,如果有的話

缺點(diǎn)

  • 必須手動(dòng)確定值。

 

  1. def impute_nan(df,var): 
  2.     df[var+'_zero']=df[var].fillna(0) #Filling with 0(least outlier) 
  3.     df[var+'_hundred']=df[var].fillna(100) #Filling with 100(last
  4.  
  5. impute_nan(df,'Age'

 

 

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

 

 

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

 

6、頻繁類別歸責(zé)

該技術(shù)用于填充分類數(shù)據(jù)中的缺失值。在這里,我們用最常見的標(biāo)簽替換NaN值。首先,我們找到最常見的標(biāo)簽,然后用它替換NaN。

優(yōu)點(diǎn)

  • 容易實(shí)現(xiàn)

缺點(diǎn)

  • 由于我們使用的是更頻繁的標(biāo)簽,所以如果有很多NaN值,它可能會(huì)以一種過度表示的方式使用它們。
  • 它扭曲了最常見的標(biāo)簽之間的關(guān)系。

 

  1. def impute_nan(df,variable): 
  2.     most_frequent_category=df[variable].mode()[0] ##Most Frequent 
  3.     df[variable].fillna(most_frequent_category,inplace=True
  4.      
  5. for feature in ['Cabin']:           ##List of Categorical Features 
  6.     impute_nan(df,feature) 

 

 

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

 

 

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

 

 

機(jī)器學(xué)習(xí)中處理缺失值的9種方法

 

7、nan值視為一個(gè)新的分類

在這種技術(shù)中,我們只需用一個(gè)新的類別(如Missing)替換所有NaN值。

 

  1. df['Cabin']=df['Cabin'].fillna('Missing') ##NaN -> Missing 

8、使用KNN填充

在這項(xiàng)技術(shù)中,我們使用sklearn創(chuàng)建一個(gè)KNN imputer模型,然后我們將該模型與我們的數(shù)據(jù)進(jìn)行擬合,并預(yù)測NaN值。它被用來計(jì)算數(shù)值。這是一個(gè)5步的過程。

  • 創(chuàng)建列列表(整數(shù)、浮點(diǎn))
  • 輸入估算值,確定鄰居。
  • 根據(jù)數(shù)據(jù)擬合估算。
  • 轉(zhuǎn)換的數(shù)據(jù)
  • 使用轉(zhuǎn)換后的數(shù)據(jù)創(chuàng)建一個(gè)新的數(shù)據(jù)框架。

優(yōu)點(diǎn)

  • 容易實(shí)現(xiàn)
  • 結(jié)果一般情況下會(huì)最好

缺點(diǎn)

  • 只適用于數(shù)值數(shù)據(jù)

我們在上篇文章中已經(jīng)有過詳細(xì)的介紹,這里就不細(xì)說了

在python中使用KNN算法處理缺失的數(shù)據(jù)

9、刪除所有NaN值

它是最容易使用和實(shí)現(xiàn)的技術(shù)之一。只有當(dāng)NaN值小于10%時(shí),我們才應(yīng)該使用這種技術(shù)。

優(yōu)點(diǎn):

  • 容易實(shí)現(xiàn)
  • 快速處理

缺點(diǎn):

  • 造成大量的數(shù)據(jù)丟失

 

  1. df.dropna(inplace=True) ##Drop all the rows that contains NaN 

總結(jié)

還有更多處理丟失值的其他技術(shù)。我們的目標(biāo)是找到最適合我們的問題的技術(shù),然后實(shí)施它。處理丟失的值總是一個(gè)更好的主意,但有時(shí)我們不得不刪除所有的值。它基本上取決于數(shù)據(jù)的類型和數(shù)量。

責(zé)任編輯:華軒 來源: 今日頭條
相關(guān)推薦

2020-10-31 17:16:31

機(jī)器學(xué)習(xí)數(shù)據(jù)缺失數(shù)據(jù)科學(xué)

2024-10-18 07:10:43

2024-07-29 08:00:00

2021-04-12 09:00:00

機(jī)器學(xué)習(xí)深度學(xué)習(xí)技術(shù)

2022-08-30 00:31:12

機(jī)器學(xué)習(xí)超參數(shù)調(diào)優(yōu)算法

2020-11-27 15:57:28

Github應(yīng)用速度

2023-03-16 15:13:41

缺失值據(jù)集中數(shù)據(jù)分析

2022-09-20 23:38:24

機(jī)器學(xué)習(xí)工具數(shù)字優(yōu)化

2022-01-16 09:30:34

Ansible自動(dòng)化工具開源

2023-09-25 15:08:43

Python方離群值

2021-04-01 22:19:54

機(jī)器學(xué)習(xí)模型數(shù)據(jù)

2020-08-10 00:30:55

備份密碼iPhone移動(dòng)安全

2022-08-30 18:13:38

機(jī)器學(xué)習(xí)

2021-01-20 15:43:01

機(jī)器學(xué)習(xí)深度學(xué)習(xí)科學(xué)

2019-03-27 08:51:38

機(jī)器學(xué)習(xí)類失衡算法

2021-11-02 07:54:40

List分片Java

2023-05-16 17:00:06

機(jī)器人人工智能

2023-10-30 17:41:29

機(jī)器人自動(dòng)化

2016-03-31 14:16:56

2019-11-15 13:52:06

機(jī)器學(xué)習(xí)Shapley計(jì)算
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 免费看a | 天天干天天插天天 | 91精品国产高清久久久久久久久 | 99精品视频在线 | 国产成人精品免费视频大全最热 | 成人中文字幕在线 | 黄色国产在线播放 | 精品欧美一区二区三区久久久 | 亚洲国产成人久久综合一区,久久久国产99 | 天天操天天天干 | 一区二区高清不卡 | 国产成人精品久久二区二区 | 怡红院免费的全部视频 | 日日摸夜夜添夜夜添精品视频 | 国产精品不卡一区 | 日韩精品在线一区 | 91精品国产乱码久久久久久久久 | 国产高清无av久久 | 国产一区二区三区www | 精品福利在线 | 国产网站在线免费观看 | www.久久| 91久久精品一区二区二区 | av一级毛片 | 欧美另类视频 | 国产午夜精品久久久久 | 天天射色综合 | 成人做爰999 | 国产午夜在线 | 久久久久久久久久久一区二区 | 亚洲一级毛片 | 91精品久久久久久久久中文字幕 | 91p在线观看 | 久久综合一区 | 成人高清在线视频 | 国产精品欧美一区喷水 | 国产在线视频一区 | 国产精品久久久久久久午夜片 | 成人综合一区 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 中国一级特黄真人毛片免费观看 |