【机器学习算法-python实现】採样算法的简单实现
2023-09-11 14:14:09 时间
1.背景
採样算法是机器学习中比較经常使用,也比較easy实现的(出去分层採样)。经常使用的採样算法有下面几种(来自百度知道):
一、单纯随机抽样(simple random sampling) 将调查整体所有观察单位编号,再用抽签法或随机数字表随机抽取部分观察单位组成样本。 长处:操作简单,均数、率及对应的标准误计算简单。 缺点:整体较大时,难以一一编号。 二、系统抽样(systematic sampling) 又称机械抽样、等距抽样,即先将整体的观察单位按某一顺序号分成n个部分,再从第一部分随机抽取第k号观察单位。依次用相等间距,从每一部分各抽取一个观察单位组成样本。 长处:易于理解、简便易行。 缺点:整体有周期或增减趋势时,易产生偏性。 三、整群抽样(cluster sampling) 整体分群。再随机抽取几个群组成样本,群内所有调查。 长处:便于组织、节省经费。
四、分层抽样(stratified sampling) 先按对观察指标影响较大的某种特征。将整体分为若干个类别,再从每一层内随机抽取一定数量的观察单位,合起来组成样本。有按比例分配和最优分配两种方案。
长处:样本代表性好。抽样误差降低。
以上四种基本抽样方法都属单阶段抽样。实际应用中常依据实际情况将整个抽样过程分为若干阶段来进行。称为多阶段抽样。 各种抽样方法的抽样误差通常是:整群抽样≥单纯随机抽样≥系统抽样≥分层抽样
2.代码实现
无放回抽样:随机抽样(RandomSampling)和系统抽样(SystematicSampling)。
有放回抽样:随机抽样(RepetitionRandomSampling)。
''' Sampling archive @author: Garvin Li ''' import random def loadDataSet(fileName): #general function to parse tab -delimited floats dataMat = [] #assume last column is target value fr = 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 dataMat def RandomSampling(dataMat,number): try: slice = random.sample(dataMat, number) return slice except: 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/number sample=[] i=0 if k>0 : while len(sample)!=number: sample.append(dataMat[0+i*k]) i+=1 return sample else : 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)
測试结果就不单独上图了,測试集和代码都提供下载。有兴趣能够去看一下。
过一段把高级聚类算法写好,实现一下分层抽样。
下载地址:点击我
/********************************
* 本文来自博客 “李博Garvin“
* 转载请标明出处:http://blog.csdn.net/buptgshengod
******************************************/
相关文章
- Hive Python Streaming的原理及写法
- 【机器学习算法-python实现】协同过滤(cf)的三种方法实现
- 地球引擎初级教程——Python API 语法(内涵JavaScript转python工具包介绍)
- 掌握Python语言能做什么?python对小白友好吗?
- Python零基础入门,2分钟带你了解python
- 如何卸载自己在Python中用pip安装的OpenCV(详细过程记录)
- gyp ERR! stack Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
- python 拆包、交换变量的值详细介绍
- 《Python机器学习——预测分析核心算法》——第1章 关于预测的两类核心算法
- 《Python机器学习——预测分析核心算法》——1.3 什么是集成方法
- 《Python机器学习——预测分析核心算法》——2.2 分类问题:用声纳发现未爆炸的水雷
- 『迷你教程』最受欢迎的Python自动机器学习神器AutoML
- Python程序来计算锥体的体积和面积
- Python机器学习算法备忘单之5 种常见算法的快速参考指南
- 《Python语言程序设计》——1.10 本章总结
- 【Python】python扩展
- Python 常见问题 之 python 安装包下载安装速度慢 的 快速解决方法(之一)
- 【Python注意事项】如何理解python中间generator functions和yield表情
- 【机器学习】SVM理论与python实践系列