python抽样方法概述
一、简单随机抽样
将调查总体全部观察单位编号,再用抽签法或随机数字表随机抽取部分观察单位组成样本。
优点:操作简单,均数、率及相应的标准误计算简单。
缺点:总体较大时,难以一一编号。
1、pandas随机抽样
DataFrame.sample(n=None, frac=None, replace=False, weights=None, random_state=None, axis=None)
局限: 对于多类样本不能很好的进行抽样。
解决:对于不平衡数据,使用imblearn库中的函数完成随机过采样,随机欠采样。
注:
针对不平衡的数据,要实现欠抽样时,只需将replace=False,并只对大类样本进行抽样。要实现过抽样,相应的将repalce=True,并只对小类样本进行过抽样。最后将两类样本合并即可。
2、randow随机抽样
2.1、无放回随机抽样
sample(list, k)返回一个长度为k新列表,新列表存放list所产生k个随机不重复的元素
import random
idxTest = random.sample(range(nPoints),nSample)
#得到的idxTest 是一个list形式
2.2、有放回随机抽样
nBagSamples=50
for i in range(nBagSamples):idxBag.append(random.choice(range(len(xTrain))))
#choice直接选出的不是list
分层抽样
先按对观察指标影响较大的某种特征,将总体分为若干个类别,再从每一层内随机抽取一定数量的观察单位,合起来组成样本。有按比例分配和最优分配两种方案。
优点:样本代表性好,抽样误差减少。
整群抽样(cluster sampling)
总体分群,再随机抽取几个群组成样本,群内全部调查。
优点:便于组织、节省经费。
缺点:抽样误差大于单纯随机抽样。
系统抽样
先将总体的观察单位按某一顺序号分成n个部分,再从第一部分随机抽取第k号观察单位,依次用相等间距,从每一部分各抽取一个观察单位组成样本。
优点:易于理解、简便易行。
缺点:总体有周期或增减趋势时,易产生偏性。
# 系统抽样
def SystematicSampling(dataMat,number): length=len(dataMat)k=int(length/number)sample=[] i=0if k>0 : while len(sample)!=number:sample.append(dataMat[0+i*k])i+=1 return sampleelse :return RandomSampling(dataMat,number)
不平衡数据抽样
上采样(过采样)和下采样(负采样)策略是解决类别不平衡问题的基本方法之一。上采样即增加少数类样本的数量,下采样即减少多数类样本以获取相对平衡的数据集。
1、下采样
从多数类中随机抽取样本(抽取的样本数量与少数类别样本量达到目标比例)从而减少多数类别样本数据,使数据达到平衡的方式。
def lower_sample_data(df, percent=1):'''percent:多数类别下采样的数量相对于少数类别样本数量的比例'''data1 = df[df['Label'] == 1] # 将多数类别的样本放在data1data0 = df[df['Label'] == 0] # 将少数类别的样本放在data0index = np.random.randint(len(data1), size=percent * (len(df) - len(data1))) # 随机给定下采样取出样本的序号lower_data1 = data1.iloc[list(index)] # 下采样return(pd.concat([lower_data1, data0]))
2、过采样
通过抽样来增加少数样本的数目,从而达到数据平衡的目的。一种简单的方式就是通过有放回抽样,不断的从少数类别样本数据中抽取样本,然后使用抽取样本+原始数据组成训练数据集来训练模型;不过该方式比较容易导致过拟合,一般抽样样本不要超过50%。
因为在上采样过程中,是进行是随机有放回的抽样,所以最终模型中,数据其实是相当于存在一定的重复数据,为了防止这个重复数据导致的问题,我们可以加入一定的随机性,也就是说:在抽取数据后,对数据的各个维度可以进行随机的小范围变动,eg: (1,2,3) --> (1.01, 1.99, 3);通过该方式可以相对比较容易的降低上采样导致的过拟合问题。
python抽样方法概述相关推荐
- 基于 Python 的 8 种常用抽样方法
抽样是统计学.机器学习中非常重要,也是经常用到的方法,因为大多时候使用全量数据是不现实的,或者根本无法取到.所以我们需要抽样,比如在推断性统计中,我们会经常通过采样的样本数据来推断估计总体的样本. 上 ...
- python按指定概率抽样_python:抽样和抽样方法
学习目标目标 知道总体.样本.样本大小.样本数量 知道样本统计量和总体统计量 知道总体分布.样本分布和抽样分布 知道常用的抽样方法 某糖果公司研发了一种超长效口香糖,为了得到口味持续时间的数据,公司聘 ...
- python:抽样和抽样方法
学习目标 目标 知道总体.样本.样本大小.样本数量 知道样本统计量和总体统计量 知道总体分布.样本分布和抽样分布 知道常用的抽样方法 某糖果公司研发了一种超长效口香糖,为了得到口味持续时间的数据,公司 ...
- python os方法-Python os.lchflags() 方法
Python os.lchflags() 方法 概述 os.lchflags() 方法用于设置路径的标记为数字标记,类似 chflags(),但是没有软链接. 只支持在 Unix 下使用. 语法 lc ...
- python统计分析方法
本文将通过kaggle的一个实例来,来展示如何通过统计分析的方法来分析自己的数据集.当我们处理一个数据集,分析里面特征的时候.通常分成三个步骤: 探索性数据分析 统计分析 预测建模 这三个步骤也可以看 ...
- python tell方法_Python File tell() 方法
Python File tell() 方法 概述 tell() 方法返回文件的当前位置,即文件指针当前位置. 语法 tell() 方法语法如下: fileObject.tell(offset[, wh ...
- python tell方法_Python File tell()方法
Python File tell()方法 概述 tell() 方法返回文件的当前位置,即文件指针当前位置. 语法 tell() 方法语法如下: fileObject.tell(offset[,when ...
- 数据处理笔记11 类别不平衡处理-抽样方法
目录 失衡的程度 分层抽样 分层抽样示例 上采样 下采样 失衡的程度 不平衡数据即类别之间的分布不均匀 一般多少比例为严重不平衡, 参考: 数据比例达到多少才是不平衡数据? - 知乎 根据少数类占比, ...
- matlab舍选抽样正态分布,正态分布的抽样方法.pdf
正态分布的抽样方法 第 14 卷 第 4 .5 期 计 算 物 理 Vol . 14 ,No . 45 1997 年 9 月 CH IN ESE J OU RNAL OF COM PU TA T IO ...
最新文章
- 浅谈ASP.NET的Postback
- VC各种情况下的窗口句柄的获取
- python lua 性能比较 内存_Lua 的速度为什么比 Python 快?
- 服务器抽屉式维护,一种服务器用可顺序运动的滑轨
- 用企业实例说明,制造业如何打破4大困境,解决数字化转型痛点
- liunx 命令手册 (chm)
- 推荐一款轻量级的kafka管理平台:kafka-console-ui
- 201703-2-学生排队
- 【正在完善】高级CSS特效解析其示范案例
- 力扣5.8每日一题——状压dp
- Matlab中散点图绘制详细教程scatter函数(附matlab代码)
- wordpress比其它phpcms有什么优势,看完就知道了
- Unity分屏之使用TUIO实现互动投影
- 十年前与十年后的我们,流着泪看完的经典语录!
- 卸载删除gitlab
- ODL中的Karaf命令使用
- 几行最简单的代码 ,却改变了世界!
- 多线程(一) 线程概念及创建线程的方法
- 5种方法完美解决android软键盘挡住输入框方法详解
- Nvidia显卡重新安装解决方案