import random
import numpy as np
#简单随机抽样
data=np.loadtxt("E:/data/book/python_book/chapter3/data3.txt")
# print(type(data))
data_sample=random.sample(list(data),2000)#随机抽取2000个样本
# print(data_sample[:2])#打印前两条数据
# print(len(data_sample))#打印样本量
#等距抽样
data=np.loadtxt("E:/data/book/python_book/chapter3/data3.txt")
sample_count=2000#指定抽样数
record_count=data.shape[0]#最大样本数
width=int(record_count/sample_count)
data_sample=[]
i=0
while len(data_sample) <= sample_count and i*width <=record_count-1:
data_sample.append(data[i*width])#新增样本
i+=1
# print(data_sample[:2])#打印前两条数据
# print(len(data_sample))#打印样本量
#分层抽样
data2=np.loadtxt("E:/data/book/python_book/chapter3/data2.txt")
each_sample_count=200 #定义每个分层的抽样数量
label_data_unique=np.unique(data2[:,-1])#
print(label_data_unique)
sample_list=[]#存放临时分层数据
sample_data=[]#存放最终抽样数据
sample_dict={}#用来显示各分层样本数量
for label_data in label_data_unique:
for data_tmp in data2:
if data_tmp[-1] == label_data:#如果数据最后一列为标签
sample_list.append(data_tmp)#
each_sample_data=random.sample(sample_list,each_sample_count)#对每层随机抽样
sample_data.extend(each_sample_data)#将抽样数据追加到分层数据里面
sample_dict[label_data]=len(each_sample_data)#样本统计结果
# print(sample_dict)
#整群抽样
data3=np.loadtxt("E:/data/book/python_book/chapter3/data4.txt")
label_data_unique=np.unique(data3[:,-1])#定义整群标签值域
print(label_data_unique)
sample_label=random.sample(list(label_data_unique),2)#随机抽取2个整群
sample_data=[] #定义空列表,用来存储最终抽样数据
for each_label in sample_label:
for data_tmp in data2:
if data_tmp[-1] == each_label:#如果数据最后一列为标签
sample_data.append(data_tmp)
print(sample_label)
print(sample_data)
附带样例文件
本文深入探讨了Python中实现的四种主要抽样技术:简单随机抽样、等距抽样、分层抽样和整群抽样。通过具体实例展示了每种抽样方法的实现过程及应用场景,为数据分析和研究提供了实用的抽样策略。
951

被折叠的 条评论
为什么被折叠?



