隨機(jī)抽樣法就是調(diào)查對(duì)象總體中每個(gè)部分都有同等被抽中的可能,是一種完全依照機(jī)會(huì)均等的原則進(jìn)行的抽樣調(diào)查,被稱為是一種“等概率”.隨機(jī)抽樣有四種基本形式,即簡(jiǎn)單隨機(jī)抽樣捧灰、等距抽樣箫荡、類型抽樣和整群抽樣.
非隨機(jī)抽樣的定義:指抽樣時(shí)不是遵循隨機(jī)原則,而是按照研究人員的主觀經(jīng)驗(yàn)或其它條件來(lái)抽取樣本的一種抽樣方法.
關(guān)于抽樣更詳細(xì)介紹的方法參見(jiàn)概率抽樣棚赔,隨機(jī)采樣恋昼。
python當(dāng)中實(shí)現(xiàn)簡(jiǎn)單隨機(jī)抽樣的方法有:自己純編寫(xiě)代碼(不方便);利用庫(kù)pandas或者numpy摔桦。
此處,我用的是pandas承疲。詳細(xì)代碼如下:
pandas 實(shí)現(xiàn)隨機(jī)抽樣邻耕,其中一些參數(shù):
df.sample(n=None, frac=None, replace=False, weights=None, random_state=None,axis=None)
n:指定抽取的樣本量,(這里我設(shè)定的是小類數(shù)據(jù)的1.05,即 n = N*(1+0.05))
frac:指定抽取的樣本比例燕鸽;
replace:是否有放回抽樣兄世,默認(rèn)無(wú)放回。(對(duì)于不平衡數(shù)據(jù)欠抽樣時(shí)啊研,將replace=False)
weights:指定樣本抽中的概率御滩,默認(rèn)等概論抽樣;
random_state:指定抽樣的隨機(jī)種子党远,可以使得每次抽樣的種子一樣削解,每次抽樣結(jié)果一樣
axis:是選擇抽取數(shù)據(jù)的行還是列。axis=0的時(shí)是抽取行沟娱,axis=1時(shí)是抽取列
局限: 對(duì)于多類樣本不能很好的進(jìn)行抽樣氛驮。
解決:對(duì)于不平衡數(shù)據(jù),使用imblearn庫(kù)中的函數(shù)完成隨機(jī)過(guò)采樣济似,隨機(jī)欠采樣矫废。
需要注意的一點(diǎn):
1. pandas中的df是dataframe類型,它包含了所處理數(shù)據(jù)的特征和類砰蠢。其中每一行代表一個(gè)instance蓖扑,每一列代表一個(gè)feature,而最后一列往往是類標(biāo)簽娩脾。上述是一般情況赵誓,具體類標(biāo)簽在第一列還是最后一列打毛,取決于你所得到的數(shù)據(jù)集是什么樣的柿赊。當(dāng)然,也可以根據(jù)自己的需要和習(xí)慣幻枉,將類標(biāo)簽放置在相應(yīng)的位置碰声。
2. 針對(duì)不平衡的數(shù)據(jù),要實(shí)現(xiàn)欠抽樣時(shí)熬甫,只需將replace=False,并只對(duì)大類樣本進(jìn)行抽樣胰挑。要實(shí)現(xiàn)過(guò)抽樣,相應(yīng)的將repalce=True,并只對(duì)小類樣本進(jìn)行過(guò)抽樣。最后將兩類樣本合并即可瞻颂。
還有一種方法更為簡(jiǎn)單豺谈,因?yàn)橛玫搅薸mblearn庫(kù)中的方法。如果你沒(méi)有安裝這個(gè)庫(kù)贡这,可以參考怎么用python安裝第三方庫(kù)Imblearn茬末,其中這個(gè)庫(kù)中包含了針對(duì)不平衡數(shù)據(jù)的一些抽樣方法,具體的也可以參考imblearn的官網(wǎng)盖矫。
首先丽惭,先導(dǎo)入庫(kù):
第二步,調(diào)用其中庫(kù)的方法:
上述方法分別是 隨機(jī)過(guò)抽樣辈双、隨機(jī)欠抽樣责掏、smote抽樣。具體的參數(shù)可以參見(jiàn)官網(wǎng):imblearn庫(kù)的相關(guān)參數(shù)湃望。