【机器学习算法-python实现】采样算法的简单实现
生活随笔
收集整理的這篇文章主要介紹了
【机器学习算法-python实现】采样算法的简单实现
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1.背景
? ? 采樣算法是機(jī)器學(xué)習(xí)中比較常用,也比較容易實(shí)現(xiàn)的(出去分層采樣)。常用的采樣算法有以下幾種(來自百度知道): 一、單純隨機(jī)抽樣(simple random sampling)將調(diào)查總體全部觀察單位編號(hào),再用抽簽法或隨機(jī)數(shù)字表隨機(jī)抽取部分觀察單位組成樣本。優(yōu)點(diǎn):操作簡單,均數(shù)、率及相應(yīng)的標(biāo)準(zhǔn)誤計(jì)算簡單。 缺點(diǎn):總體較大時(shí),難以一一編號(hào)。二、系統(tǒng)抽樣(systematic sampling)又稱機(jī)械抽樣、等距抽樣,即先將總體的觀察單位按某一順序號(hào)分成n個(gè)部分,再從第一部分隨機(jī)抽取第k號(hào)觀察單位,依次用相等間距,從每一部分各抽取一個(gè)觀察單位組成樣本。優(yōu)點(diǎn):易于理解、簡便易行。缺點(diǎn):總體有周期或增減趨勢(shì)時(shí),易產(chǎn)生偏性。三、整群抽樣(cluster sampling)總體分群,再隨機(jī)抽取幾個(gè)群組成樣本,群內(nèi)全部調(diào)查。優(yōu)點(diǎn):便于組織、節(jié)省經(jīng)費(fèi)。缺點(diǎn):抽樣誤差大于單純隨機(jī)抽樣。四、分層抽樣(stratified sampling)先按對(duì)觀察指標(biāo)影響較大的某種特征,將總體分為若干個(gè)類別,再從每一層內(nèi)隨機(jī)抽取一定數(shù)量的觀察單位,合起來組成樣本。有按比例分配和最優(yōu)分配兩種方案。優(yōu)點(diǎn):樣本代表性好,抽樣誤差減少。以上四種基本抽樣方法都屬單階段抽樣,實(shí)際應(yīng)用中常根據(jù)實(shí)際情況將整個(gè)抽樣過程分為若干階段來進(jìn)行,稱為多階段抽樣。各種抽樣方法的抽樣誤差一般是:整群抽樣≥單純隨機(jī)抽樣≥系統(tǒng)抽樣≥分層抽樣2.代碼實(shí)現(xiàn)
? ??? ? 無放回抽樣:隨機(jī)抽樣(RandomSampling)和系統(tǒng)抽樣(SystematicSampling)。? ? 有放回抽樣:隨機(jī)抽樣(RepetitionRandomSampling)。''' Sampling archive@author: Garvin Li ''' import random def loadDataSet(fileName): #general function to parse tab -delimited floatsdataMat = [] #assume last column is target valuefr = open(fileName)for line in fr.readlines():curLine = line.strip().split('\t') # fltLine = map(float,curLine) #map all elements to float()dataMat.append(curLine)return dataMatdef RandomSampling(dataMat,number):try:slice = random.sample(dataMat, number) return sliceexcept:print 'sample larger than population'def RepetitionRandomSampling(dataMat,number): sample=[]for i in range(number):sample.append(dataMat[random.randint(0,len(dataMat)-1)])return sample def SystematicSampling(dataMat,number): length=len(dataMat)k=length/numbersample=[] i=0if k>0 : while len(sample)!=number:sample.append(dataMat[0+i*k])i+=1 return sampleelse :return RandomSampling(dataMat,number) if __name__=='__main__':dataMat=loadDataSet('/Users/hakuri/Desktop/data1.txt') # print RandomSampling(dataMat,7) # RepetitionSampling(dataMat,4)print SystematicSampling(dataMat,9)
測試結(jié)果就不單獨(dú)上圖了,測試集和代碼都提供下載,有興趣可以去看一下。過一段把高級(jí)聚類算法寫好,實(shí)現(xiàn)一下分層抽樣。
下載地址:點(diǎn)擊我
/********************************
* 本文來自博客 ?“李博Garvin“
* 轉(zhuǎn)載請(qǐng)標(biāo)明出處:http://blog.csdn.net/buptgshengod
******************************************/
總結(jié)
以上是生活随笔為你收集整理的【机器学习算法-python实现】采样算法的简单实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【机器学习算法-python实现】K-m
- 下一篇: 【机器学习算法-python实现】PCA