分层抽样python实现代码
时间: 2023-09-30 20:10:31 浏览: 212
python实现的分层随机抽样案例
分层抽样(stratified sampling)是一种从总体中随机抽取样本的方法,该方法可以保证样本的分布与总体的分布相似。以下是一个简单的Python实现代码:
```python
import random
def stratified_sampling(data, labels, sample_size):
# 根据标签构建字典
label_dict = {}
for i in range(len(data)):
if labels[i] not in label_dict:
label_dict[labels[i]] = []
label_dict[labels[i]].append(data[i])
# 计算每个类别需要抽取的样本数量
sample_per_label = {}
for label in label_dict:
label_size = len(label_dict[label])
sample_per_label[label] = int(sample_size * label_size / len(data))
# 分层抽样
sample_data = []
sample_labels = []
for label in label_dict:
if len(label_dict[label]) <= sample_per_label[label]:
sample_data += label_dict[label]
sample_labels += [label] * len(label_dict[label])
else:
sample = random.sample(label_dict[label], sample_per_label[label])
sample_data += sample
sample_labels += [label] * len(sample)
return sample_data, sample_labels
```
其中,`data`是总体数据,`labels`是总体数据对应的标签,`sample_size`是需要抽取的样本数量。函数首先根据标签构建字典,计算每个类别需要抽取的样本数量,然后对每个类别进行抽样,最终返回抽样结果。
阅读全文