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

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

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

抽樣在Python中是如何實(shí)現(xiàn)的

電子工程師 ? 來(lái)源:Python數(shù)據(jù)科學(xué) ? 作者:Python數(shù)據(jù)科學(xué) ? 2022-08-05 10:59 ? 次閱讀

今天來(lái)和大家聊聊抽樣的幾種常用方法,以及在Python中是如何實(shí)現(xiàn)的。 抽樣是統(tǒng)計(jì)學(xué)、機(jī)器學(xué)習(xí)中非常重要,也是經(jīng)常用到的方法,因?yàn)榇蠖鄷r(shí)候使用全量數(shù)據(jù)是不現(xiàn)實(shí)的,或者根本無(wú)法取到。所以我們需要抽樣,比如在推斷性統(tǒng)計(jì)中,我們會(huì)經(jīng)常通過(guò)采樣的樣本數(shù)據(jù)來(lái)推斷估計(jì)總體的樣本。 上面所說(shuō)的都是以概率為基礎(chǔ)的,實(shí)際上還有一類非概率的抽樣方法,因此總體上歸納為兩大種類:

概率抽樣:根據(jù)概率理論選擇樣本,每個(gè)樣本有相同的概率被選中。

非概率抽樣:根據(jù)非隨機(jī)的標(biāo)準(zhǔn)選擇樣本,并不是每個(gè)樣本都有機(jī)會(huì)被選中。

概率抽樣技術(shù)

1.隨機(jī)抽樣(Random Sampling)

這也是最簡(jiǎn)單暴力的一種抽樣了,就是直接隨機(jī)抽取,不考慮任何因素,完全看概率。并且在隨機(jī)抽樣下,總體中的每條樣本被選中的概率相等。 dbc29cf8-1469-11ed-ba43-dac502259ad0.png 比如,現(xiàn)有10000條樣本,且各自有序號(hào)對(duì)應(yīng)的,假如抽樣數(shù)量為1000,那我就直接從1-10000的數(shù)字中隨機(jī)抽取1000個(gè),被選中序號(hào)所對(duì)應(yīng)的樣本就被選出來(lái)了。 在Python中,我們可以用random函數(shù)隨機(jī)生成數(shù)字。下面就是從100個(gè)人中隨機(jī)選出5個(gè)。


importrandom population=100 data=range(population) print(random.sample(data,5)) >4,19,82,45,41

2.分層抽樣(Stratified Sampling)

分層抽樣其實(shí)也是隨機(jī)抽取,不過(guò)要加上一個(gè)前提條件了。在分層抽樣下,會(huì)根據(jù)一些共同屬性將帶抽樣樣本分組,然后從這些分組中單獨(dú)再隨機(jī)抽樣。 dbd49566-1469-11ed-ba43-dac502259ad0.png因此,可以說(shuō)分層抽樣是更精細(xì)化的隨機(jī)抽樣,它要保持與總體群體中相同的比例。 比如,機(jī)器學(xué)習(xí)分類標(biāo)簽中的類標(biāo)簽0和1,比例為3:7,為保持原有比例,那就可以分層抽樣,按照每個(gè)分組單獨(dú)隨機(jī)抽樣。 Python中我們通過(guò)train_test_split設(shè)置stratify參數(shù)即可完成分層操作。


fromsklearn.model_selectionimporttrain_test_split stratified_sample,_=train_test_split(population,test_size=0.9,stratify=population[['label']]) print(stratified_sample)

3.聚類抽樣(Cluster Sampling)

聚類抽樣,也叫整群抽樣。它的意思是,先將整個(gè)總體劃分為多個(gè)子群體,這些子群體中的每一個(gè)都具有與總體相似的特征。也就是說(shuō)它不對(duì)個(gè)體進(jìn)行抽樣,而是隨機(jī)選擇整個(gè)子群體。 dbe4e650-1469-11ed-ba43-dac502259ad0.png 用Python可以先給聚類的群體分配聚類ID,然后隨機(jī)抽取兩個(gè)子群體,再找到相對(duì)應(yīng)的樣本值即可,如下。


importnumpyasnp clusters=5 pop_size=100 sample_clusters=2 #間隔為20,從1到5依次分配集群100個(gè)樣本的聚類ID,這一步已經(jīng)假設(shè)聚類完成 cluster_ids=np.repeat([range(1,clusters+1)],pop_size/clusters) #隨機(jī)選出兩個(gè)聚類的ID cluster_to_select=random.sample(set(cluster_ids),sample_clusters) #提取聚類ID對(duì)應(yīng)的樣本 indexes=[ifori,xinenumerate(cluster_ids)ifxincluster_to_select] #提取樣本序號(hào)對(duì)應(yīng)的樣本值 cluster_associated_elements=[elforidx,elinenumerate(range(1,101))ifidxinindexes] print(cluster_associated_elements)

4.系統(tǒng)抽樣(Systematic Sampling)

系統(tǒng)抽樣是以預(yù)定的規(guī)則間隔(基本上是固定的和周期性的間隔)從總體中抽樣。比如,每 9 個(gè)元素抽取一下。一般來(lái)說(shuō),這種抽樣方法往往比普通隨機(jī)抽樣方法更有效。 下圖是按順序?qū)γ?9 個(gè)元素進(jìn)行一次采樣,然后重復(fù)下去。 dbf08546-1469-11ed-ba43-dac502259ad0.png 用Python實(shí)現(xiàn)的話可以直接在循環(huán)體中設(shè)置step即可。


population=100 step=5 sample=[elementforelementinrange(1,population,step)] print(sample)

5.多級(jí)采樣(Multistage sampling)

在多階段采樣下,我們將多個(gè)采樣方法一個(gè)接一個(gè)地連接在一起。比如,在第一階段,可以使用聚類抽樣從總體中選擇集群,然后第二階段再進(jìn)行隨機(jī)抽樣,從每個(gè)集群中選擇元素以形成最終集合。 dc0030d6-1469-11ed-ba43-dac502259ad0.png Python代碼復(fù)用了上面聚類抽樣,只是在最后一步再進(jìn)行隨機(jī)抽樣即可。


importnumpyasnp clusters=5 pop_size=100 sample_clusters=2 sample_size=5 #間隔為20,從1到5依次分配集群100個(gè)樣本的聚類ID,這一步已經(jīng)假設(shè)聚類完成 cluster_ids=np.repeat([range(1,clusters+1)],pop_size/clusters) #隨機(jī)選出兩個(gè)聚類的ID cluster_to_select=random.sample(set(cluster_ids),sample_clusters) #提取聚類ID對(duì)應(yīng)的樣本 indexes=[ifori,xinenumerate(cluster_ids)ifxincluster_to_select] #提取樣本序號(hào)對(duì)應(yīng)的樣本值 cluster_associated_elements=[elforidx,elinenumerate(range(1,101))ifidxinindexes] #再?gòu)木垲悩颖纠镫S機(jī)抽取樣本 print(random.sample(cluster_associated_elements,sample_size))

非概率抽樣技術(shù)

非概率抽樣,毫無(wú)疑問(wèn)就是不考慮概率的方式了,很多情況下是有條件的選擇。因此,對(duì)于無(wú)隨機(jī)性我們是無(wú)法通過(guò)統(tǒng)計(jì)概率和編程來(lái)實(shí)現(xiàn)的。這里也介紹3種方法。

1.簡(jiǎn)單采樣(convenience sampling)

簡(jiǎn)單采樣,其實(shí)就是研究人員只選擇最容易參與和最有機(jī)會(huì)參與研究的個(gè)體。比如下面的圖中,藍(lán)點(diǎn)是研究人員,橙色點(diǎn)則是藍(lán)色點(diǎn)附近最容易接近的人群。 dc112f62-1469-11ed-ba43-dac502259ad0.png

2.自愿抽樣(Voluntary Sampling)

自愿抽樣下,感興趣的人通常通過(guò)填寫某種調(diào)查表格形式自行參與的。所以,這種情況中,調(diào)查的研究人員是沒(méi)有權(quán)利選擇任何個(gè)體的,全憑群體的自愿報(bào)名。比如下圖中藍(lán)點(diǎn)是研究人員,橙色的是自愿同意參與研究的個(gè)體。 dc1dddac-1469-11ed-ba43-dac502259ad0.png

3.雪球抽樣(Snowball Sampling)

雪球抽樣是說(shuō),最終集合是通過(guò)其他參與者選擇的,即研究人員要求其他已知聯(lián)系人尋找愿意參與研究的人。比如下圖中藍(lán)點(diǎn)是研究人員,橙色的是已知聯(lián)系人,黃色是是橙色點(diǎn)周圍的其它聯(lián)系人。

dc2b6f26-1469-11ed-ba43-dac502259ad0.png

總結(jié)

以上就是8種常用抽樣方法,平時(shí)工作中比較常用的還是概率類抽樣方法,因?yàn)闆](méi)有隨機(jī)性我們是無(wú)法通過(guò)統(tǒng)計(jì)學(xué)和編程完成自動(dòng)化操作的。

比如在信貸的風(fēng)控樣本設(shè)計(jì)時(shí),就需要從樣本窗口通過(guò)概率進(jìn)行抽樣。因?yàn)椴蓸拥馁|(zhì)量基本就決定了你模型的上限了,所以在抽樣時(shí)會(huì)考慮很多問(wèn)題,如樣本數(shù)量、是否有顯著性、樣本穿越等等。在這時(shí),一個(gè)良好的抽樣方法是至關(guān)重要的。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(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)投訴
  • 抽樣
    +關(guān)注

    關(guān)注

    0

    文章

    11

    瀏覽量

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

    關(guān)注

    66

    文章

    8418

    瀏覽量

    132646
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4797

    瀏覽量

    84690

原文標(biāo)題:基于 Python 的 8 種常用抽樣方法

文章出處:【微信號(hào):AI科技大本營(yíng),微信公眾號(hào):AI科技大本營(yíng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    MATLAB怎樣實(shí)現(xiàn)抽樣判決器

    用MATLAB怎樣實(shí)現(xiàn)抽樣判決器?各路友人幫幫忙,急等著用。先謝謝了!
    發(fā)表于 05-14 21:04

    請(qǐng)問(wèn)Python如何實(shí)現(xiàn)vlookup函數(shù)的功能?

    vlookup函數(shù)功能非常強(qiáng)大,那Python如何實(shí)現(xiàn)?
    發(fā)表于 11-06 06:11

    怎樣實(shí)現(xiàn)中頻窄帶抽樣?

    本文討論基本的帶通抽樣定理基礎(chǔ)上,分析欠抽樣率對(duì)帶通信號(hào)采樣的頻譜搬移特點(diǎn),同時(shí)結(jié)合對(duì)普通的AM調(diào)幅接收機(jī)中頻信號(hào)的采樣、濾波與處理,以獲得基帶的語(yǔ)音信號(hào)。
    發(fā)表于 04-07 07:06

    通信原理抽樣定理及應(yīng)用實(shí)驗(yàn)報(bào)告

    實(shí)際,平頂抽樣的 PAM信號(hào)常常采用保持電路來(lái)實(shí)現(xiàn),得到的脈沖為矩形脈沖。同時(shí)我也進(jìn)一步了解到: 由于離散點(diǎn)取值, 直流分量被濾除,所
    發(fā)表于 09-19 07:49

    抽樣z變換頻率抽樣理論

    抽樣z變換頻率抽樣理論:我們將先闡明:(1)z變換與DFT的關(guān)系(抽樣z變換),在此基礎(chǔ)上引出抽樣z變換的概念,并進(jìn)一步深入討論頻域抽樣不失
    發(fā)表于 07-25 11:39 ?36次下載

    GB/T 2828.1-2003抽樣檢驗(yàn)用表

    GB/T 2828.1-2003抽樣檢驗(yàn)用表抽樣檢驗(yàn)用表:正常檢驗(yàn)一次抽樣方案
    發(fā)表于 08-17 08:34 ?51次下載

    信號(hào)抽樣抽樣定理.ppt

    一、信號(hào)抽樣 信號(hào)抽樣也稱為取樣或采樣,是利用抽樣脈沖序列 p (t) 從連續(xù)信號(hào) f (t) 抽取一系列的離散樣值,通過(guò)抽樣過(guò)程得到的離
    發(fā)表于 09-16 08:47 ?0次下載

    抽樣率原理艦船振動(dòng)信號(hào)分析的應(yīng)用與研究

    論文對(duì)該頻域方法進(jìn)行了詳細(xì)介紹,對(duì)方法的譜分辨率、計(jì)算量和存儲(chǔ)空間進(jìn)行了分析對(duì)比,基于FPGA搭建了船舶振動(dòng)采集分析系統(tǒng),FPGA對(duì)算法進(jìn)行了實(shí)現(xiàn),最后對(duì)實(shí)測(cè)船舶振動(dòng)信號(hào)應(yīng)用多抽樣
    發(fā)表于 12-31 09:23 ?6次下載

    抽樣率的數(shù)字信號(hào)處理及其FPGA實(shí)現(xiàn)

    抽樣率的數(shù)字信號(hào)處理及其FPGA實(shí)現(xiàn)
    發(fā)表于 10-30 11:42 ?12次下載
    多<b class='flag-5'>抽樣</b>率的數(shù)字信號(hào)處理及其FPGA<b class='flag-5'>實(shí)現(xiàn)</b>

    基于Dijkstra最短路徑的抽樣算法

    到的路徑邊出現(xiàn)的頻率進(jìn)行排序,選擇較高頻率的邊組成抽樣的子圖。該算法解決了隨機(jī)抽樣算法存在的一些問(wèn)題,實(shí)現(xiàn)了較好的生成抽取社交網(wǎng)絡(luò)的功能。仿真實(shí)驗(yàn)結(jié)果表明,與隨機(jī)
    發(fā)表于 12-17 11:40 ?1次下載
    基于Dijkstra最短路徑的<b class='flag-5'>抽樣</b>算法

    抽樣的幾種常用方法以及Python是如何實(shí)現(xiàn)

    大家好,今天來(lái)和大家聊聊抽樣的幾種常用方法,以及Python是如何實(shí)現(xiàn)的。 抽樣是統(tǒng)計(jì)學(xué)、機(jī)
    的頭像 發(fā)表于 08-10 15:16 ?2505次閱讀

    Anaconda安裝python包seaborn

    Anaconda安裝python包seaborn(現(xiàn)代電源技術(shù)題庫(kù))-Anaconda安裝pyt
    發(fā)表于 09-18 15:01 ?5次下載
    <b class='flag-5'>在</b>Anaconda<b class='flag-5'>中</b>安裝<b class='flag-5'>python</b>包seaborn

    Python實(shí)現(xiàn)更簡(jiǎn)單好用的函數(shù)運(yùn)算緩存

    我們即將學(xué)習(xí)的是:Python實(shí)現(xiàn)更簡(jiǎn)單好用的函數(shù)運(yùn)算緩存。 函數(shù)運(yùn)算緩存,顧名思義就是我們可以針對(duì)指定的函數(shù),讓其記住過(guò)往參數(shù)輸入和返回結(jié)果,使得后續(xù)接收到相同的參數(shù)時(shí)跳過(guò)函數(shù)運(yùn)
    的頭像 發(fā)表于 08-05 11:05 ?1002次閱讀

    怎么Python實(shí)現(xiàn)截圖功能

    操作。 今天Python實(shí)用寶典就來(lái)講講怎么Python實(shí)現(xiàn)截圖功能,以下教程默認(rèn)您已經(jīng)安裝好了Py
    的頭像 發(fā)表于 11-03 15:32 ?946次閱讀
    怎么<b class='flag-5'>在</b><b class='flag-5'>Python</b><b class='flag-5'>中</b><b class='flag-5'>實(shí)現(xiàn)</b>截圖功能

    PythonAI的應(yīng)用實(shí)例

    Python人工智能(AI)領(lǐng)域的應(yīng)用極為廣泛且深入,從基礎(chǔ)的數(shù)據(jù)處理、模型訓(xùn)練到高級(jí)的應(yīng)用部署,Python都扮演著至關(guān)重要的角色。以下將詳細(xì)探討Python
    的頭像 發(fā)表于 07-19 17:16 ?1098次閱讀