色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

缺失值處理你確定你真的會(huì)了嗎

數(shù)據(jù)分析與開(kāi)發(fā) ? 來(lái)源:數(shù)據(jù)STUDIO ? 作者:Jim ? 2021-10-11 11:21 ? 次閱讀

缺失值處理是一個(gè)數(shù)據(jù)分析工作者永遠(yuǎn)避不開(kāi)的話(huà)題,如何認(rèn)識(shí)與理解缺失值,運(yùn)用合適的方式處理缺失值,對(duì)模型的結(jié)果有很大的影響。本期Python數(shù)據(jù)分析實(shí)戰(zhàn)學(xué)習(xí)中,我們將詳細(xì)討論數(shù)據(jù)缺失值分析與處理等相關(guān)的一系列問(wèn)題。

作為數(shù)據(jù)清洗的一個(gè)重要環(huán)節(jié),一般從缺失值分析和缺失值處理兩個(gè)角度展開(kāi)
  1. 缺失值分析

  2. 缺失值處理

Part 1

缺失值分析數(shù)據(jù)的缺失主要包括記錄的缺失和記錄中某個(gè)字段信息的缺失,兩者都會(huì)造成分析結(jié)果的不準(zhǔn)確,以下從缺失值類(lèi)型、產(chǎn)生的原因及影響等方面展開(kāi)分析。
  • 缺失值類(lèi)型
1、隨機(jī)丟失(MAR,Missing at Random)指數(shù)據(jù)丟失的概率與丟失的數(shù)據(jù)本身無(wú)關(guān),而僅與部分已觀測(cè)到的數(shù)據(jù)有關(guān)。

2、完全隨機(jī)丟失(MCAR,Missing Completely at Random)

數(shù)據(jù)的缺失是完全隨機(jī)的,不依賴(lài)于任何不完全變量或完全變量,不影響樣本的無(wú)偏性。

3、非隨機(jī)丟失(MNAR,Missing not at Random)

數(shù)據(jù)的缺失與不完全變量自身的取值有關(guān)。正確的理解和判斷缺失值的類(lèi)型,對(duì)工作中對(duì)缺失值分析和處理帶來(lái)很大對(duì)便利,但因沒(méi)有一套成熟但缺失值類(lèi)型判斷方法,大多考經(jīng)驗(yàn)處理,這里不作過(guò)多闡述。
  • 缺失值成因

1、信息暫時(shí)無(wú)法獲取、獲取信息代價(jià)太大;

2、信息因人為因素沒(méi)有被記錄、遺漏或丟失;3、部分對(duì)象或某些屬性不可用或不存在;4、信息采集設(shè)備故障、存儲(chǔ)介質(zhì)、傳輸媒體或其他物理原因造成的數(shù)據(jù)丟失。
  • 缺失值影響

1、使系統(tǒng)丟失大量的有用信息;

2、使系統(tǒng)中所表現(xiàn)出的不確定性更加顯著,系統(tǒng)中蘊(yùn)涵的確定性成分更難把握;3、包含空值的數(shù)據(jù)會(huì)使數(shù)據(jù)挖掘過(guò)程陷入混亂,導(dǎo)致不可靠的輸出。
  • 缺失值分析
數(shù)據(jù)缺失值分析屬于數(shù)據(jù)探索分析(Exploratory Data Analysis,EDA)的里重要的一步,其工具通常是統(tǒng)計(jì)分析和數(shù)據(jù)可視化。統(tǒng)計(jì)分析為我們提供了假設(shè)不正確的理論概率,即顯著性水平,而數(shù)據(jù)可視化工具給我們帶來(lái)了有關(guān)數(shù)據(jù)分布的印象,有助于從概念上驗(yàn)證他們的假設(shè)。一般情況下,拿到一份數(shù)據(jù),我們將使用data.info(); data.describe()來(lái)查看數(shù)據(jù)的基本情況。

代碼:

>>>data.info()

輸出結(jié)果:

273a99da-2a08-11ec-82a8-dac502259ad0.png

結(jié)果圖中綠色框是數(shù)據(jù)總索引數(shù),藍(lán)色框?yàn)槊總€(gè)變量的總記錄數(shù),它們的差值為每個(gè)變量的缺失值總數(shù)。
代碼:
>>>data.describe()
輸出結(jié)果:

27a83c7e-2a08-11ec-82a8-dac502259ad0.png

結(jié)果圖中count為每個(gè)變量的非空計(jì)數(shù),其與總索引數(shù)的差值,即為缺失值總數(shù)。

以上方法在查看數(shù)據(jù)的總體概況下表現(xiàn)較佳,但用于數(shù)據(jù)缺失值分析顯得力不從心。下面介紹幾個(gè)更加便于缺失值分析的方法

  • 統(tǒng)計(jì)缺失值

代碼:
>>>importpandasaspd
>>>missing=data.isnull().sum().reset_index().rename(columns={0:'missNum'})
>>>missing.head(10)
輸出結(jié)果:

27ed9710-2a08-11ec-82a8-dac502259ad0.png

為方便展示,本例中只顯示前10個(gè)特征。從上面數(shù)據(jù)描述查看信息data.info()可以看出,本數(shù)據(jù)總計(jì)為689945條,從missNum中可以清洗看出每條特征變量的缺失情況:索引0-4為無(wú)缺失特征,索引8為缺失最少,而索引6則缺失超60萬(wàn)條。

  • 計(jì)算缺失值比例

代碼:
>>>missing['missRate']=missing['missNum']/data.shape[0]
>>>missing.head(10)

data.shape[0] 得到數(shù)據(jù)記錄總數(shù)。

missing.head(10) 只顯示前10條記錄。

輸出結(jié)果:

2816dcc4-2a08-11ec-82a8-dac502259ad0.png

只看缺失數(shù)量并不是很直觀,可以用缺失數(shù)量missNum 比數(shù)據(jù)總量data.shape[0] 得到缺失比值missRate,這樣更加直觀地看出缺失值相對(duì)數(shù)量,便于后續(xù)選擇合適的缺失值處理。
  • 按照缺失率排序顯示

代碼:

>>>miss_analy=missing[missing.missRate>0].sort_values(by='missRate',ascending=False)
>>>miss_analy.head(10)

miss_analy 存儲(chǔ)的是每個(gè)變量缺失情況的數(shù)據(jù)框。

輸出結(jié)果:

285867ca-2a08-11ec-82a8-dac502259ad0.png

將所有特征按照缺失比例降序排列,更加有序地看出缺失值情況,便于后面對(duì)擁有不同缺失比例的特征采用不同的處理策略。
  • 缺失值可視化

matplotlib庫(kù)--條形圖

利用常規(guī)matplotlib.pyplot庫(kù)可視化出每個(gè)變量的缺失值比例,以及總體排名情況,一目了然。

代碼:

>>>importmatplotlib.pyplotasplt
>>>importpylabaspl
>>>colors=['DeepSkyBlue','DeepPink','Yellow','LawnGreen','Aqua','DarkSlateGray']
>>>fig=plt.figure(figsize=(20,6))
>>>plt.bar(np.arange(miss_analy.shape[0]),list(miss_analy.missRate.values),align='center',color=colors)
>>>font={'family':'TimesNewRoman','weight':'normal','size':23,}
>>>plt.title('Histogramofmissingvalueofvariables',fontsize=20)
>>>plt.xlabel('variablesnames',font)
>>>plt.ylabel('missingrate',font)
#添加x軸標(biāo)簽,并旋轉(zhuǎn)90度
>>>plt.xticks(np.arange(miss_analy.shape[0]),list(miss_analy['index']))
>>>pl.xticks(rotation=90)
#添加數(shù)值顯示
>>>forx,yinenumerate(list(miss_analy.missRate.values)):
plt.text(x,y+0.08,'{:.2%}'.format(y),ha='center',rotation=90)
>>>plt.ylim([0,1.2])
#保存圖片
>>>fig.savefig('missing.png')
>>>plt.show()
條形圖繪制參數(shù)詳解:
bar(left, height, width=0.8, bottom=None, color=None, edgecolor=None, linewidth=None, tick_label=None, xerr=None, yerr=None, label = None, ecolor=None, align, log=False, **kwargs)

x:sequence of scalars 傳遞數(shù)值序列,指定條形圖中x軸上的刻度值。

height:scalar or sequence of scalars傳遞標(biāo)量或標(biāo)量序列,指定條形圖y軸上的高度。

width:scalar or array-like, optional,default: 0.8 指定條形圖的寬度,默認(rèn)為0.8.

bottom:scalar or array-like, optional, default: 0條形基的y坐標(biāo), 用于繪制堆疊條形圖。

align:{'center', 'edge'}, optional, default: 'center'

*"center": 在 x 位置上居中。*"edge": 用 x 位置對(duì)齊條的左邊。要對(duì)齊右邊緣上的條,請(qǐng)通過(guò)一個(gè)負(fù)的 width 和 "align='edge' "。

color:scalar or array-like, optional 指定條形圖的填充色。

edgecolor:scalar or array-like, optional 指定條形圖的邊框色。

linewidth:scalar or array-like, optional 指定條形圖邊框的寬度,如果指定為0,表示不繪制邊框。

tick_label:string or array-like,optional 指定條形圖的刻度標(biāo)簽。

xerr,yerr:scalar or array-like of shape(N,) or shape(2,N), optional,defaultNone

如果 not None,表示在條形圖的基礎(chǔ)上添加誤差棒;值是相對(duì)于數(shù)據(jù) +/- 誤差棒大小;*標(biāo)量: 對(duì)稱(chēng)的+/- 誤差棒值為所有條;*shape(N,): 每個(gè)bar對(duì)稱(chēng)+/- 誤差棒值;*shape(2,n): 為每個(gè)bar分別設(shè)置-和+ 誤差棒值。第一行包含較低的錯(cuò)誤,第二行包含上的錯(cuò)誤。* None:沒(méi)有錯(cuò)誤。(默認(rèn))

label:string or array-like, optional 指定條形圖的標(biāo)簽,一般用以添加圖例。

ecolor:scalar or array-like, optional, default: 'black'ecolor 指定條形圖誤差棒的顏色。*align:指定x軸刻度標(biāo)簽的對(duì)齊方式,默認(rèn)為'center',表示刻度標(biāo)簽居中對(duì)齊,如果設(shè)置為'edge',則表示在每個(gè)條形的左下角呈現(xiàn)刻度標(biāo)簽。

log:bool, optional, default: False 是否對(duì)坐標(biāo)軸進(jìn)行l(wèi)og變換。

**kwargs 關(guān)鍵字參數(shù),用于對(duì)條形圖進(jìn)行其他設(shè)置,如透明度等。

missingno庫(kù)--矩陣圖、條形圖、熱圖、樹(shù)狀圖

mssingno庫(kù)提供了一個(gè)靈活且易于使用的缺失數(shù)據(jù)可視化和實(shí)用程序的小工具集,可以快速直觀地總結(jié)數(shù)據(jù)集的完整性。

相對(duì)于前面介紹的利用matplotlib 庫(kù)可視化缺失值情況,更加方便,可根據(jù)實(shí)際情況做選擇。
  • 矩陣圖

代碼:

>>>importmissingnoasmsno
>>>msno.matrix(data,labels=True)
矩陣圖繪制參數(shù)詳解:
msno.matrix(df,filter=None, n=0, p=0, sort=None, figsize=(25, 10), width_ratios=(15, 1), color=(0.25, 0.25, 0.25), fontsize=16, labels=None, sparkline=True, inline=False, freq=None, ax=None)

df:DataFrame, default None 被映射的 "DataFrame"

filter: str, default None 用于熱圖的濾鏡。可以是"top""bottom",或"None"(默認(rèn))之一。

n:int, default 0過(guò)濾后的數(shù)據(jù)格式中包含的最大列數(shù)。

P:int, default 0過(guò)濾后的數(shù)據(jù)框中列的最大填充百分比。

sort:str, default None 要應(yīng)用的行排序順序。可以是"ascending""descending",或"None"(默認(rèn))。

figsize:tuple, default (25, 10) 顯示的圖形的大小。

fontsize:int, default 16圖形的字體大小。

labels:list, default None是否顯示列名。如果有的話(huà),當(dāng)數(shù)據(jù)列數(shù)為50列或更少默認(rèn)為基礎(chǔ)數(shù)據(jù)標(biāo)簽,超過(guò)50列時(shí)不使用標(biāo)簽。

sparkline:bool default True 是否顯示sparkline

width_ratios:tuple default (15,1)矩陣的寬度與sparkline的寬度之比。如果"sparkline=False",則不執(zhí)行任何操作。

color:default (0.25,0.25,0.25) 填充欄的顏色。

實(shí)際使用中,直接使用默認(rèn)值即能滿(mǎn)足大部分情況下的需求。如常用的參數(shù)labels能夠根據(jù)數(shù)據(jù)標(biāo)簽的數(shù)量自動(dòng)選擇參數(shù)值。

  • 條形圖

---- 是針對(duì)標(biāo)簽列缺失值的簡(jiǎn)單可視化

代碼:

>>>msno.bar(data.iloc[:,0:18])#使用默認(rèn)參數(shù)即可

矩陣圖繪制參數(shù)簡(jiǎn)介:

msno.bar(df, figsize=(24, 10), fontsize=16, labels=None, log=False, color='dimgray', inline=False, filter=None, n=0, p=0, sort=None, ax=None,)

從參數(shù)列表中可以看出,條形圖與矩陣圖參數(shù)類(lèi)似,其中參數(shù)inline將在后面的版本中刪除,可以忽略。

"The 'inline' argument has been deprecated, and will be removed in a future version"
missingno的條形圖與matplotlib條形圖有異曲同工之秒:封裝的庫(kù),使用更加方便,既能看出缺失值數(shù)量,又能看出缺失值對(duì)百分比。可通過(guò)參數(shù)對(duì)特征變量按照缺失值缺失情況排序顯示。代碼:
>>>msno.bar(data.iloc[:,0:18],sort='descending')
細(xì)心的讀者不難看出,此圖與上圖(未排序)的主題風(fēng)格并不相同,可利用matplotlib.pyplot來(lái)設(shè)置主題:
>>>importmatplotlib.pyplotasplt
>>>plt.style.use('seaborn')
>>>%matplotlibinline
  • 熱圖

----相關(guān)性熱圖措施無(wú)效的相關(guān)性:一個(gè)變量的存在或不存在如何強(qiáng)烈影響的另一個(gè)的存在。

代碼:

>>>msno.heatmap(data.iloc[:,0:13])#使用默認(rèn)參數(shù)即可

輸出結(jié)果:

兩個(gè)變量的無(wú)效相關(guān)范圍從-1(如果一個(gè)變量出現(xiàn),另一個(gè)肯定沒(méi)有)到0(出現(xiàn)或不出現(xiàn)的變量對(duì)彼此沒(méi)有影響)到1(如果一個(gè)變量出現(xiàn),另一個(gè)肯定也是)。

數(shù)據(jù)全缺失或全空對(duì)相關(guān)性是沒(méi)有意義的,所以就在圖中就沒(méi)有了,比如date列就沒(méi)有出現(xiàn)在圖中。

大于-1和小于1表示有強(qiáng)烈的正相關(guān)和負(fù)相關(guān),但是由于極少數(shù)的臟數(shù)據(jù)所以并不絕對(duì),這些例外的少數(shù)情況需要在數(shù)據(jù)加工時(shí)候予以注意。

熱圖方便觀察兩個(gè)變量間的相關(guān)性,但是當(dāng)數(shù)據(jù)集變大,這種結(jié)論的解釋性會(huì)變差。

  • 樹(shù)狀圖

代碼:

>>>msno.dendrogram(data.iloc[:,0:18])
輸出結(jié)果:

樹(shù)狀圖采用由scipy提供的層次聚類(lèi)算法通過(guò)它們之間的無(wú)效相關(guān)性(根據(jù)二進(jìn)制距離測(cè)量)將變量彼此相加。在樹(shù)的每個(gè)步驟中,基于哪個(gè)組合最小化剩余簇的距離來(lái)分割變量。變量集越單調(diào),它們的總距離越接近0,并且它們的平均距離越接近零。

在0距離處的變量間能彼此預(yù)測(cè)對(duì)方,當(dāng)一個(gè)變量填充時(shí)另一個(gè)總是空的或者總是填充的,或者都是空的。

樹(shù)葉的高度顯示預(yù)測(cè)錯(cuò)誤的頻率。

和矩陣Matrix一樣,只能處理50個(gè)變量,但是通過(guò)簡(jiǎn)單的轉(zhuǎn)置操作即可處理更多更大的數(shù)據(jù)集。

這樣的統(tǒng)計(jì)計(jì)算以及可視化基本已經(jīng)看出哪些變量缺失,以及缺失比例情況,對(duì)數(shù)據(jù)即有個(gè)缺失概況。


Part 2缺失值處理

缺失值處理思路

先通過(guò)一定的方法找到缺失值,接著分析缺失值在整體樣本中的分布占比,以及缺失值是否具有顯著的無(wú)規(guī)律分布特征,即第一部分介紹到缺失值分析。然后考慮使用的模型中是否滿(mǎn)足缺失值的自動(dòng)處理,最后決定采用那種缺失值處理方法,即接下來(lái)介紹到缺失值處理。

缺失值處理?法的選擇,主要依據(jù)是業(yè)務(wù)邏輯和缺失值占比,在對(duì)預(yù)測(cè)結(jié)果的影響盡可能小的情況下,對(duì)缺失值進(jìn)行處理以滿(mǎn)足算法需求,所以要理解每個(gè)缺失值處理方法帶來(lái)的影響,下?的缺失值處理?法沒(méi)有特殊說(shuō)明均是對(duì)特征(列,變量)的處理。

  • 丟棄
  • 占?較多,如80%以上時(shí)刪除缺失值所在的列如果某些行缺失值占比較多,或者缺失值所在字段是苛刻的必須有值的,刪除行。

代碼:
#刪除‘col’列
>>>data.drop('col',axis=1,inplace=True)

#刪除數(shù)據(jù)表中含有空值的行
>>>data.dropna()

#丟棄某幾列有缺失值的行
>>>data.dropna(axis=0,subset=['a','b'],inplace=True)

#去掉缺失比例大于80%以上的變量
>>>data.dropna(thresh=len(data)*0.2,axis=1)

參數(shù)詳解:

data.dropna(axis=0, how='any', thresh=None, subset=None, inplace=False)

inplace : bool, default False 如果為真,執(zhí)行就地操作并返回None。

subset : array-like, optional 要考慮沿著其他軸的標(biāo)簽,例如,如果您要?jiǎng)h除行,這些將是要包含的列的列表。

thresh : int, optional, default 'any' 只保留至少有thresh個(gè)非na值的行。

how : {'any', 'all'},default 'any' 確定是否從DataFrame中刪除了行或列至少有一個(gè)NA或全部NA。* 'any':如果有任何NA值,刪除行或列。* 'all':如果所有的值都是NA,刪除行或列。

axis : {0 or 'index', 1 or 'columns'}, default 0 確定包含缺失值的行或列是否為移除。* 0,或“索引”:刪除包含缺失值的行。* 1,或“columns”:刪除包含缺失值的列。

  • 補(bǔ)全
  • 占比一般,30%-80%時(shí),將缺失值作為單獨(dú)的?個(gè)分類(lèi)如果特征是連續(xù)的,則其他已有值分箱如果特征是分類(lèi)的,考慮其他分類(lèi)是否需要重分箱

    1. 等深分箱法(統(tǒng)一權(quán)重法): 將數(shù)據(jù)集按記錄(行數(shù))分箱,每箱具有相同的記錄數(shù)(元素個(gè)數(shù))。每箱記錄數(shù)稱(chēng)為箱子深度(權(quán)重)。
    2. 等寬分箱法(統(tǒng)一區(qū)間法): 使數(shù)據(jù)集在整個(gè)屬性值的區(qū)間上平均分布,即每個(gè)箱的區(qū)間范圍(箱子寬度)是一個(gè)常量。
    3. 用戶(hù)自定義區(qū)間:當(dāng)用戶(hù)明確希望觀察某些區(qū)間范圍內(nèi)的數(shù)據(jù)時(shí),可根據(jù)需要自定義區(qū)間。
A. 插值填充
  • 占?比少,10%-30%時(shí),一般使用模型法,基于已有的其他字段,將缺失字段作為目標(biāo)變量進(jìn)行預(yù)測(cè),從而得到最為可能的不全值。連續(xù)型變量用回歸模型補(bǔ)全;分類(lèi)變量用分類(lèi)模型補(bǔ)全。如進(jìn)行多重插補(bǔ)、KNN算法填充、隨機(jī)森林填補(bǔ)法,我們認(rèn)為若干特征之間有相關(guān)性的,可以相互預(yù)測(cè)缺失值。

# interpolate()插值法,缺失值前后數(shù)值的均值,但是若缺失值前后也存在缺失,則不進(jìn)行計(jì)算插補(bǔ)。
>>>data['a']=data['a'].interpolate()

#用前面的值替換,當(dāng)?shù)谝恍杏腥笔е禃r(shí),該行利用向前替換無(wú)值可取,仍缺失
>>>data.fillna(method='pad')

#用后面的值替換,當(dāng)最后一行有缺失值時(shí),該行利用向后替換無(wú)值可取,仍缺失
>>>data.fillna(method='backfill')#用后面的值替換

B. 多重插補(bǔ)法

常見(jiàn)插值函數(shù):牛頓插值法、分段插值法、樣條插值法、Hermite插值法、埃爾米特插值法和拉格朗日插值法以下詳細(xì)介紹拉格朗日插值法的原理和使用。
>>>fromscipy.interpolateimportlagrange
>>>x=[1,2,3,4,7]
>>>y=[5,7,10,3,9]
>>>f=lagrange(x,y)
'numpy.lib.polynomial.poly1d'>4
#這一行是輸出a的類(lèi)型,以及最高次冪。

>>>print(f)
432
0.5472x-7.306x+30.65x-47.03x+28.13
#第一行和第二行就是插值的結(jié)果,顯示出的函數(shù)。第二行的數(shù)字是對(duì)應(yīng)下午的x的冪,

>>>print(f(1),f(2),f(3))
5.0000000000000077.00000000000001410.00000000000005
#此行是代入的x值,得到的結(jié)果。即用小括號(hào)f(x)的這種形式,可以直接得到計(jì)算結(jié)果。

>>>print(f[0],f[2],f[3])
28.1333333333333430.65277777777778-7.3055555555555545
#此行是提取出的系數(shù)。即可以用f[a]這種形式,來(lái)提取出來(lái)對(duì)應(yīng)冪的系數(shù)。

拉格朗日插值法 from scipy.interpolate import lanrange對(duì)于空間上已知的n個(gè)點(diǎn)(無(wú)兩點(diǎn)在一條直線(xiàn)上)可以找到一個(gè) n-1 次多項(xiàng)式 ,使得多項(xiàng)式曲線(xiàn)過(guò)這個(gè)點(diǎn)。

需滿(mǎn)?的假設(shè):MAR:Missing At Random,數(shù)據(jù)缺失的概率僅和已觀測(cè)的數(shù)據(jù)相關(guān),即缺失的概率與未知的數(shù)據(jù)無(wú)關(guān),即與變量的具體數(shù)值無(wú)關(guān)。迭代(循環(huán))次數(shù)可能的話(huà)超過(guò)40,選擇所有的變量甚至額外的輔助變量。

C. KNN填充利用KNN算法填充,將目標(biāo)列當(dāng)做目標(biāo)標(biāo)簽,利用非缺失的數(shù)據(jù)進(jìn)行KNN算法擬合,最后對(duì)目標(biāo)標(biāo)簽缺失值進(jìn)行預(yù)測(cè)。(對(duì)于連續(xù)特征一般是用加權(quán)平均法,對(duì)于離散特征一般是用加權(quán)投票法)
>>>fromsklearn.neighborsimportKNeighborsClassifier,KNeighborsRegressor
>>>defKNN_filled_func(X_train,y_train,X_test,k=3,dispersed=True):
..."""
...X_train為目標(biāo)列中不含缺失值的數(shù)據(jù)(不包括目標(biāo)列)
...y_train為不含缺失值的目標(biāo)標(biāo)簽
...X_test為目標(biāo)列中為缺失值的數(shù)據(jù)(不包括目標(biāo)列)
..."""
...ifdispersed:
...KNN=KNeighborsClassifier(n_neighbors=k,weights="distance")
...else:
...KNN=KNeighborsRegressor(n_neighbors=k,weights="distance")
...KNN.fit(X_train,y_train)
...returnX_test.index,KNN.predict(X_test)

D. 隨機(jī)森林填補(bǔ)法

其思想與KNN填補(bǔ)法類(lèi)似。
>>>fromsklearn.ensembleimportRandomForestRegressor,RandomForestClassifier
>>>defRF_filled_func(X_train,y_train,X_test,k=3,dispersed=True):
..."""
...X_train為目標(biāo)列中不含缺失值的數(shù)據(jù)(不包括目標(biāo)列)
...y_train為不含缺失值的目標(biāo)標(biāo)簽
...X_test為目標(biāo)列中為缺失值的數(shù)據(jù)(不包括目標(biāo)列)
..."""
...ifdispersed:
...rf=RandomForestRegressor()
...else:
...rf=RandomForestClassifier()
...rf.fit(X_train,y_train)
...returnX_test.index,rf.predict(X_test)
  • 占?較少,10%以下,一般使用統(tǒng)計(jì)法(連續(xù)型變量用均值、中位數(shù)、加權(quán)均值;分類(lèi)型變量用眾數(shù))。
  1. 平均值適用于近似正態(tài)分布數(shù)據(jù),觀測(cè)值較為均勻散布均值周?chē)?/span>

  2. 中位數(shù)適用于偏態(tài)分布或者有離群點(diǎn)數(shù)據(jù),中位數(shù)是更好地代表數(shù)據(jù)中心趨勢(shì);

  3. 眾數(shù)一般用于類(lèi)別變量,無(wú)大小、先后順序之分。

pandas 內(nèi) df.fillna() 處理缺失值

#均值填充
>>>data['col']=data['col'].fillna(data['col'].means())
#中位數(shù)填充
>>>data['col']=data['col'].fillna(data['col'].median())
#眾數(shù)填充
>>>data['col']=data['col'].fillna(stats.mode(data['col'])[0][0])
  • sklearn.preprocessing.Imputer() 處理缺失值

>>>fromsklearn.preprocessingimportImputer
>>>imr=Imputer(missing_values='NaN',strategy='mean',axis=0)
>>>imputed_data=pd.DataFrame(imr.fit_transform(df.values),columns=df.columns)
>>>imputed_data

此外還有結(jié)合實(shí)際,運(yùn)用專(zhuān)家補(bǔ)全。

  • 真值轉(zhuǎn)化法

    認(rèn)為缺失值本身以一種數(shù)據(jù)分布規(guī)律存在。將變量的實(shí)際值和缺失值都作為輸入維度參與后續(xù)數(shù)據(jù)處理和模型計(jì)算中。
  • 不處理

    對(duì)于一些模型對(duì)缺失值有容忍度或靈活處理方法,可不處理缺失值。如KNN、決策樹(shù)、隨機(jī)森林、神經(jīng)網(wǎng)絡(luò)、樸素貝葉斯、DBSCAN等。
本期主要從缺失值分析--缺失值類(lèi)型、缺失值成因、缺失值影響;以及缺失值處理--丟棄、補(bǔ)全、真值轉(zhuǎn)換、不處理等各個(gè)方面討論缺失值。數(shù)據(jù)中缺失值會(huì)因數(shù)據(jù)本身的情況會(huì)有不同的處理方法,需要具體問(wèn)題具體分析。以上介紹了比較常用的缺失值分析和缺失值處理思路和方法,您可以根據(jù)數(shù)據(jù)的具體情況以及自身偏好選擇合適等處理方式。
編輯:jq
聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 神經(jīng)網(wǎng)絡(luò)

    關(guān)注

    42

    文章

    4779

    瀏覽量

    101047
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7134

    瀏覽量

    89393
  • eda
    eda
    +關(guān)注

    關(guān)注

    71

    文章

    2785

    瀏覽量

    173619
  • 信息采集
    +關(guān)注

    關(guān)注

    0

    文章

    81

    瀏覽量

    21228
  • 樸素貝葉斯
    +關(guān)注

    關(guān)注

    0

    文章

    12

    瀏覽量

    3390

原文標(biāo)題:缺失值處理,你真的會(huì)了嗎?

文章出處:【微信號(hào):DBDevs,微信公眾號(hào):數(shù)據(jù)分析與開(kāi)發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    嘗試仿真figure68的信號(hào)調(diào)理電路如圖所示,結(jié)果顯示增益達(dá)不到計(jì)算,為什么?

    增益也只有2倍。請(qǐng)問(wèn)這是什么問(wèn)題,是我仿真哪里出錯(cuò)了嗎?附件是仿真的文件,麻煩您幫忙看下問(wèn)題,萬(wàn)分感謝!
    發(fā)表于 11-15 06:26

    eda中常用的數(shù)據(jù)處理方法

    奠定基礎(chǔ)。 數(shù)據(jù)清洗 缺失處理 數(shù)據(jù)集中的缺失是常見(jiàn)的問(wèn)題。處理
    的頭像 發(fā)表于 11-13 10:57 ?398次閱讀

    如何訓(xùn)練ai大模型

    :從可靠的來(lái)源獲取數(shù)據(jù),如公開(kāi)數(shù)據(jù)集、內(nèi)部數(shù)據(jù)庫(kù)或第三方數(shù)據(jù)提供商。 2. 數(shù)據(jù)清洗 去除重復(fù)數(shù)據(jù) :確保數(shù)據(jù)集中沒(méi)有重復(fù)項(xiàng),以避免在訓(xùn)練過(guò)程中引入冗余信息。 處理缺失 :對(duì)于缺失
    的頭像 發(fā)表于 10-17 18:17 ?1307次閱讀

    干貨篇:Air780E之RS485通信篇,學(xué)會(huì)了嗎

    ?今天,我們來(lái)學(xué)習(xí)低功耗4G模組 Air780E 的RS485通信,同學(xué)們,學(xué)習(xí)了嗎? 一、RS485簡(jiǎn)介 物聯(lián)網(wǎng)(IoT)在工業(yè)場(chǎng)景中的應(yīng)用越來(lái)越廣泛,而RS485是一種常見(jiàn)的通信協(xié)議,廣泛應(yīng)用
    的頭像 發(fā)表于 10-14 07:13 ?322次閱讀
    干貨篇:Air780E之RS485通信篇,<b class='flag-5'>你</b>學(xué)<b class='flag-5'>會(huì)了嗎</b>?

    spwm載波頻率和幅怎么確定

    在于通過(guò)調(diào)整脈沖寬度,使輸出波形接近正弦波形,從而實(shí)現(xiàn)對(duì)負(fù)載的平滑控制。本文將介紹SPWM的載波頻率和幅確定方法。 SPWM的基本原理 SPWM技術(shù)的基本思想是將一個(gè)正弦波信號(hào)與一個(gè)高頻載波信號(hào)進(jìn)行比較,通過(guò)比較結(jié)果控制開(kāi)關(guān)器件的通斷,從而產(chǎn)生一個(gè)脈沖寬度調(diào)制信號(hào)。這
    的頭像 發(fā)表于 08-14 11:29 ?2615次閱讀

    關(guān)于DAQExpress軟件中電壓的最大最小是根據(jù)什么來(lái)確定的?

    你好,我想問(wèn)一下關(guān)于DAQExpress軟件中電壓的最大最小是根據(jù)什么來(lái)確定的?還有采樣頻率
    發(fā)表于 08-08 02:37

    劃重點(diǎn)!面試常考的ADC真的會(huì)了嗎

    模擬數(shù)字轉(zhuǎn)換器即A/D轉(zhuǎn)換器(ADC),主要用于將連續(xù)傳輸?shù)哪M信號(hào)轉(zhuǎn)換為數(shù)字信號(hào),便于數(shù)字系統(tǒng)(如中央處理器CPU、微控制器MCU等)對(duì)傳輸信息進(jìn)行快速處理和分析。一、模數(shù)轉(zhuǎn)換器的基本組成模擬信號(hào)
    的頭像 發(fā)表于 07-11 08:11 ?1771次閱讀
    劃重點(diǎn)!面試常考的ADC<b class='flag-5'>你</b><b class='flag-5'>真的</b><b class='flag-5'>會(huì)了嗎</b>?

    風(fēng)速繼電器的工作原理、風(fēng)速設(shè)定確定方法

    至關(guān)重要。本文將詳細(xì)介紹風(fēng)速繼電器的工作原理、風(fēng)速設(shè)定確定方法以及風(fēng)速繼電器在風(fēng)力發(fā)電系統(tǒng)中的應(yīng)用。 一、風(fēng)速繼電器的工作原理 風(fēng)速繼電器主要由風(fēng)速傳感器、信號(hào)處理電路和控制電路三部分組成。風(fēng)速傳感器負(fù)責(zé)測(cè)
    的頭像 發(fā)表于 06-30 14:49 ?1535次閱讀

    車(chē)路云協(xié)同,這次它真的來(lái)了嗎

    ,前些年搞得沸沸揚(yáng)揚(yáng),但是最終都很難落地。想必也發(fā)現(xiàn)了:短短幾天時(shí)間,多地密集傳來(lái)車(chē)路云一體化布局新進(jìn)展。難道它真的來(lái)了嗎?北京5月31日,北京市公共資源交易服務(wù)平臺(tái)
    的頭像 發(fā)表于 06-13 08:25 ?548次閱讀
    車(chē)路云協(xié)同,這次它<b class='flag-5'>真的</b>來(lái)<b class='flag-5'>了嗎</b>?

    降價(jià)潮背后:大模型落地門(mén)檻真的了嗎

    “比起價(jià)格門(mén)檻,AI大模型的應(yīng)用門(mén)檻,更難跨越。”大模型爭(zhēng)相降價(jià)下,AI應(yīng)用的門(mén)檻真的降低了嗎?答案還真不一定。因?yàn)槌藘r(jià)格門(mén)檻,AI大模型還有應(yīng)用門(mén)檻。甚至,后者比前者更具挑戰(zhàn)性。B端業(yè)務(wù)場(chǎng)景向來(lái)
    的頭像 發(fā)表于 06-13 08:04 ?275次閱讀
    降價(jià)潮背后:大模型落地門(mén)檻<b class='flag-5'>真的</b>降<b class='flag-5'>了嗎</b>?

    真的了解駐波比嗎?到底什么是電壓駐波比?

    真的了解駐波比嗎?到底什么是電壓駐波比?在很長(zhǎng)一段時(shí)間內(nèi),小編對(duì)駐波比的了解僅限于這樣一個(gè)概念:它是一個(gè)用于描述波反射大小的物理量,取值范圍[1, ∞],越小,就表示反射越小,
    的頭像 發(fā)表于 05-29 14:27 ?4431次閱讀
    <b class='flag-5'>你</b><b class='flag-5'>真的</b>了解駐波比嗎?到底什么是電壓駐波比?

    藍(lán)牙信標(biāo)室內(nèi)定位算法如何確定 A,n

    的絕對(duì)。n為環(huán)境衰減因子,需要測(cè)試矯正。如何確定A和n的?使用華為手機(jī)在空曠的環(huán)境中,分別采集5個(gè)藍(lán)牙信標(biāo)距離手機(jī)1m,2m,……10m時(shí)手機(jī)接收到的RS
    的頭像 發(fā)表于 05-21 20:13 ?604次閱讀
    藍(lán)牙信標(biāo)室內(nèi)定位算法如何<b class='flag-5'>確定</b> A,n <b class='flag-5'>值</b>

    SVPWM控制中Udc該怎么確定

    求教各位大神SVPWM控制中Udc該怎么確定
    發(fā)表于 04-26 08:31

    STM32H743ADC數(shù)據(jù)轉(zhuǎn)換輸出缺失的原因?

    有突變,現(xiàn)象就像這一區(qū)域的模擬數(shù)據(jù)無(wú)法轉(zhuǎn)換成ADC(32585-32767),這樣的區(qū)域在真?zhèn)€ADC轉(zhuǎn)換范圍并不唯一,而且同一個(gè)芯片,三個(gè)ADC有的缺失,而有的沒(méi)有,zhi要通道在一個(gè)ADC上的
    發(fā)表于 03-08 06:39

    **模電和數(shù)電的區(qū)別和聯(lián)系,真的懂嗎?**

    模電和數(shù)電的區(qū)別和聯(lián)系,真的懂嗎? 數(shù)電:我比你更能抗干擾。模電:我比你的精度高。數(shù)電:我可以實(shí)現(xiàn)各種算法。模電:我可以實(shí)現(xiàn)無(wú)線(xiàn)通訊。數(shù)電:沒(méi)有我,電子行業(yè)還得倒退幾十年呢。模電:沒(méi)有我,還只
    發(fā)表于 03-01 08:43
    主站蜘蛛池模板: 主播蜜汁丝袜精品自拍 | beeg日本老师| 久久a级片| 无码任你躁久久久久久久 | 国产黄a三级三级三级 | 亚洲第一成年人网站 | 富婆找黑人老外泻火在线播放 | 成人毛片手机版免费看 | 一个人免费观看完整视频日本 | 欧美丰满少妇久久无码精品 | 在线日本高清日本免费 | 欧美国产精品主播一区 | 97人妻AV天天澡夜夜爽 | 黄A无码片内射无码视频 | 人妻免费久久久久久久了 | 午夜伦理网 | 国语自产偷成人精品视频 | 天天射天天干天天插 | 国产亚洲日韩另类在线观看 | 趁老师睡着吃她的奶水 | 泡妞高手在都市免费观看 | 亚洲精品www久久久久久 | 色综合久久五月 | 高H高肉强J短篇NP | 久久99AV无色码人妻蜜 | 国产在线观看91精品 | 久久青青草视频在线观 | 亚洲AV午夜福利精品香蕉麻豆 | 日本护士hd| 99久久免费国产精品特黄 | 精品一区二区三区在线成人 | 色网址在线观看 | 伊人色综合久久大香 | 俄罗斯14一18处交 | 皮皮在线精品亚洲 | 国内精品伊人久久久影院 | 东京热 百度影音 | 99视频免费在线观看 | 大屁股妇女流出白浆 | 亚洲一区综合图区 | 免费高清在线影片一区 |