本文介绍: 在数据分析机器学习中,我们经常需要给定样本中进行随机抽样。Python提供了多种方法执行操作,下面将介绍其中的几种方法简单随机抽样是指从总体中随机选取一些个体组成样本每个个体被选中概率相等。在Python中,可以使用random.sample()函数实现简单随机抽样例如,从数值列表[1, 2, 3, 4, 5]中随机抽取3个数输出:2. 分层随机抽样在某些情况下,我们希望从不同层次的群体中进行抽样,这就需要用到分层随机抽样。在Python中,可以使用pandas.DataFram

数据分析机器学习中,我们经常需要给定样本中进行随机抽样。Python提供了多种方法执行操作,下面将介绍其中的几种方法

1. 简单随机抽样

简单随机抽样是指从总体中随机地选取一些个体组成样本,每个个体被选中概率相等。在Python中,可以使用random.sample()函数实现简单随机抽样

例如,从数值列表[1, 2, 3, 4, 5]中随机抽取3个数

import random

sample_list = [1, 2, 3, 4, 5]
sample_size = 3

sample = random.sample(sample_list, sample_size)
print(sample)

输出

[5, 4, 1]

2. 分层随机抽样

在某些情况下,我们希望从不同层次的群体中进行抽样,这就需要用到分层随机抽样。在Python中,可以使用pandas.DataFrame.groupby()和apply()函数实现分层随机抽样。

例如,从一个数据框中按照性别分层随机抽取10个人

import pandas as pd

data = {'Gender': ['Male', 'Female', 'Male', 'Female', 'Male', 'Female'],
        'Age': [25, 30, 35, 40, 45, 50],
        'Income': [50000, 60000, 70000, 80000, 90000, 100000]}

df = pd.DataFrame(data)

sample_size = 10

sample = df.groupby('Gender').apply(lambda x: x.sample(sample_size))
print(sample)

输出

            Gender  Age  Income
Gender                         
Female 3   Female   40   80000
       1   Female   30   60000
       4   Female   45   90000
       5   Female   50  100000
       0   Female   25   50000
Male   5     Male   50  100000
       4     Male   45   90000
       2     Male   35   70000
       0     Male   25   50000
       1     Male   30   60000

3. 簇抽样

簇抽样是指将总体划分为若干个簇,然后每个簇中随机选取一个多个个体组成样本。在Python中,可以使用random.choice()函数实现簇抽样。

例如,从多维列表[[1, 2, 3], [4, 5, 6], [7, 8, 9]]中随机选择一个簇:

import random

clusters = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

cluster = random.choice(clusters)
print(cluster)

输出

[4, 5, 6]

4. 系统抽样

系统抽样是指按照一定比例从总体中选取个体组成样本,例如每隔k元素选取一个。在Python中,可以使用切片(slicing)实现系统抽样。

例如,从列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]中每隔2个元素选取一个

population = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
k = 2

sample = population[::k]
print(sample)

输出

[1, 3, 5, 7, 9]

5. 分层整群抽样

分层整群抽样是指将总体划分为若干同质性较高的小组然后随机选取其中的若干小组作为样本。在Python中,可以使用random.sample()函数实现分层整群抽样。

例如,从一个数据框中按照地区分层抽取2个地区,并在每个选定的地区中随机抽取3个人

import pandas as pd
import random

data = {'Region': ['East', 'East', 'East', 'West', 'West', 'West'],
        'Age': [25, 30, 35, 40, 45, 50],
        'Income': [50000, 60000, 70000, 80000, 90000, 100000]}

df = pd.DataFrame(data)

sample_size_per_group = 3
selected_groups = random.sample(df['Region'].unique().tolist(), 2)

sample = df[df['Region'].isin(selected_groups)].groupby('Region').apply(lambda x: x.sample(sample_size_per_group))
print(sample)

输出

                 Region  Age  Income
Region                              
East   0           East   25   50000
       1           East   30   60000
       2           East   35   70000
West   3           West   40   80000
       4           West   45   90000
       5           West   50  100000

6. 自助法

自助法是一种有放回的抽样方法,即从总体中随机选取一个样本,将其加入样本集合后再放回总体中。重复这个过程多次,就可以得到一个较大的样本集合。在Python中,可以使用random.choice()函数实现自助法。

例如,从列表[1, 2, 3, 4, 5]中进行3次自助抽样:

import random

population = [1, 2, 3, 4, 5]
loop_times = 3

sample = [random.choice(population) for _ in range(loop_times)]
print(sample)

输出

[1, 2, 5]

由于自助法样本具有重复性,因此可以用于样本小、总体分布复杂时的情况。

7. 集群抽样

集群抽样是指将总体划分为若干异质性较高的小组然后随机选取其中的若干小组作为样本。与分层整群抽样相比,集群抽样更适用于总体异质性强的情况,例如地理位置分散的样本。在Python中,可以使用random.sample()函数实现集群抽样。

例如,从地图上的8个城镇中随机选取其中的3个城镇作为样本:

import random

towns = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
sample_size = 3

sample = random.sample(towns, sample_size)
print(sample)

输出

['A', 'H', 'E']

8. 分层抽样

分层抽样是指将总体按照某些重要特征分为若干层,从每一层中随机选取一定数量的个体组成样本。这种抽样方法用于总体具有明显层次结构的情形。在Python中,可以使用pandas.DataFrame.groupby()方法实现分层抽样。

例如,从一个数据框中按照性别进行分层抽样,每层随机选取其中的2个人

import pandas as pd
import numpy as np

np.random.seed(42)

data = {'Gender': ['Male', 'Male', 'Female', 'Female', 'Female', 'Male', 'Male'],
        'Age': [25, 30, 35, 40, 45, 50, 55],
        'Income': [50000, 60000, 70000, 80000, 90000, 100000, 110000]}

df = pd.DataFrame(data)

sample_size_per_stratum = 2
strata = df.groupby('Gender').apply(lambda x: x.sample(sample_size_per_stratum))
sample = strata.reset_index(drop=True)

print(sample)

输出

   Gender  Age  Income
0  Female   40   80000
1  Female   35   70000
2    Male   55  110000
3    Male   30   60000

9. 系统整群抽样

系统整群抽样是指将总体分为若干个群体,然后按照一定的规律(例如每k个群体)选取其中的一个群体作为样本。在Python中,可以使用切片(slicing)实现系统整群抽样。

例如,从8个城镇中每隔2个城镇选取一个城镇:

towns = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H']
k = 2

sample = towns[::k]
print(sample)

输出:

['A', 'C', 'E', 'G']

10. 非概率抽样

概率抽样是指不基于概率理论而进行的抽样方法,通常根据经验或者偏见选择样本。这种抽样方法无法保证样本具有代表性,因此应该谨慎使用。在Python中,可以使用random.sample()等函数进行非概率抽样。

例如,从一个人名列表中粗略地抽取5个人名:

import random

names = ['Alice', 'Bob', 'Charlie', 'David', 'Emma', 'Frank']

sample_size = 5
sample = random.sample(names, sample_size)

print(sample)

输出:

['Bob', 'Charlie', 'Alice', 'Frank', 'Emma']

总之,以上是从样本中抽样的Python技术,包括简单随机抽样、分层随机抽样、簇抽样、系统抽样、分层整群抽样、自助法、集群抽样、分层抽样、系统整群抽样和非概率抽样。这些方法可以帮助我们在数据分析机器学习中更有效地对样本进行处理

原文地址:https://blog.csdn.net/AdamCY888/article/details/129793200

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_32346.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注