分层抽样其实也是随机抽取,但是分层抽样会根据一些特征进行分组,然后从这些分组中单独再随机抽样。在很多场景下,随机抽样是有问题的。比如说身高和体重在性别上的差异,在对它们进行抽样时必须考虑性别因素。我们可以粗略地说:女性的身高符合165为中心的正态分布,体重符合50公斤为中心的正态分布,而男性身高则可能是175为中心的正态分布,体重是60公斤中心的正态分布。我们考虑到性别这个特征对数据分布有显著影响,所以对数据抽样就需要考虑将性别特征纳入到分层抽样的范围中了。
(资料图)
知识点:
在Pandas的DataFrame中,有一个方法
cut
:https://pandas.pydata.org/docs/reference/api/pandas.cut.html#pandas.cut 就是专门负责这种处理的。Pandas cut()函数用于将数组中的元素分离成不同的bins。cut函数主要用于对标量数据进行统计分析。
语法:
cut(x, bins, right=True, labels=None, retbins=False, precision=3, include_lowest=False, duplicates=”raise”,)
参数:
x:要分选的输入数组。必须是一维的。
bins:定义了用于分割的bin边缘。
right :(bool, default True ) 指示bins是否包括最右边的边。如果right == True(默认),那么bins [1, 2, 3, 4] 表示(1,2], (2,3], (3,4)。
labels :(array or bool, optional) 为返回的bin指定标签。必须与返回的分选区长度相同。如果是假的,只返回分选区的整数指标。
retbins :(bool, default False) 是否返回bins。当bins是以标量形式提供时很有用。
用pandas的cut方法,实例如下:
bins给出连续的数组区间,落在区间内的值被归为一类,例如:bins=[1, 50, 100]
意味:1-50是一个区间,50-100是一个区间,79会落在(50, 100]的区间上,9会落到(1, 50]的区间上。labels会针对每一个区间起一个别名,例如:labels=['Lows', 'Highs']
意味:(1, 50]的区间将被称为Lows,(50, 100]的区间将被称为Highs。
运行结果:
Copyright 2015-2022 国际日报网版权所有 备案号: 沪ICP备2022005074号-17 联系邮箱:5855973@qq.com