在 MATLAB 中从带有数据集的矩阵或数组中选择随机样本的方法

Mehak Mubarik 2023年1月30日
  1. 使用 MATLAB 中的 randsample 函数提取随机样本
  2. 使用 MATLAB 中的 datasample 函数提取随机样本
  3. 在 MATLAB 中使用 datasample 从数据集矩阵中提取列的随机样本子集
在 MATLAB 中从带有数据集的矩阵或数组中选择随机样本的方法

我们将研究使用 MATLAB 的不同命令从任何数据集、数组或矩阵中选择随机样本的不同方法。

为了清除你的概念并让你全面了解如何获取随机样本,我们将通过提供代码示例来解释诸如 Randnrandsampledatasample 之类的函数,以从你的数据集中提取随机样本并进行替换。因为没有替换/替换以及显示你的输出外观的片段。

让我们假设我们有一个包含 50,000 行数据集的矩阵。我们想从我们的矩阵中选择一个包含 50 个实体的随机样本。我们可以使用不止一种随机抽样方法来执行此任务。在开始列出这些方法之前,请记住,随机样本/数据/数据集是从数据集的矩阵中随机选择的一些数据。为了消除偏见和其他不希望的可能影响,我们使用随机抽样。但我们必须记住,它并不像我们看起来那么简单。从数据集中选择随机样本比从包含 500 个实体的数据集中选择 10 个实体更复杂。另外,我们必须确保随机样本是否确实是随机的!

继续我们的假设,我们可以使用 MATLAB 从我们的数据集中提取随机样本。MATLAB 为我们提供了几个函数来从给定的数据集中选择随机样本/数据。例如,我们可以使用 MATLAB 中的函数 randsample 从任何包含数据的数组或矩阵中随机选择样本,无论是否有替换/替换。

使用 MATLAB 中的 randsample 函数提取随机样本

假设 N_obs 观察是随机选择的,并从数据集中的条目中替换,我们使用以下函数:

O_put = randsample(ourdata,N_obs)

其中 N_obs 表示观察次数。如果 ourdata 是一个向量,我们的输出 O_put 也将是一个包含数据集中 N_obs 个随机样本的向量。

让我们使用这个函数来解决我们假设的问题。

代码:

%Let's assume we have 50,000 entries in a dataset "ourdata".

ourdata=50000;

%We want to obtain 5 random samples from this dataset 

N_obs=5;

%Let's follow the above-explained concept and write our code

O_put = randsample(ourdata,N_obs);

输出:

O_put =

       46700
       33937
       42457
       32788
        1786

使用 MATLAB 中的 datasample 函数提取随机样本

如果我们想在提取随机样本时牢记尺寸,那么我们使用下面的函数。

y = datasample(ourdata,N_obs,'Replace',false)

如果 Replacetrue,我们选择有替换的样本;否则,我们选择不替换的样本。如果 Replace 设置为 false,我们限制 N_obs,使其不超过我们在数据集中设置的元素数量。

Replace 默认为 true

true = 替换样本。

false = 没有替换的样本。

我们可以通过编写单行代码来实现这一点。牢记上述假设,我们将代码制定如下。

%Let's assume we have 50,000 entries in a dataset "ourdata".
%We want to obtain 5 random samples from this dataset 
%Let's follow the above-explained concept and write our code using function
%datasample
%Let's Draw five unique values from the integers 1:50000 using 1 line code.

O_put = datasample(1:50000,5,'Replace',false);

输出:

O_put =

       24489       22279       32315       35467       37732

在 MATLAB 中使用 datasample 从数据集矩阵中提取列的随机样本子集

为此,我们将使用 MATLAB 中的 randn 函数。它创建具有正态分布的随机值数组。

I_put=randn(A) 生成一个 A-by-A 矩阵,其中包含随机生成的元素。

如果 A 不是标量(向量),则 MATLAB 将显示错误消息。

现在,为了获得我们的随机样本,我们将使用 datasample 函数,给出给定数据矩阵的随机列的子集。

代码:

I_put = randn(10,100000);
O_put = datasample(I_put,5,2,'Replace',false)

输出:

O_put =

-0.5995   -0.7377   -1.1902   -0.6021   -1.0812
-0.0572   -0.7831    0.4746    0.7105   -0.8038
 0.8401    1.0824   -0.3507    0.4069   -2.0817
-1.1358   -0.9041   -0.1702    0.5950    0.3954
-1.0887   -0.7766   -1.6901   -0.5047    1.1286
-0.0187   -0.3354   -0.7458    1.8554    0.8492
 0.3251   -0.4219    0.2440   -0.4750    0.7628
 1.4713   -1.9788   -1.6672    0.0035   -0.4316
 0.6880    1.4387   -1.3525   -0.6950    0.6411
-0.2777   -0.4776   -0.9841    1.2752    0.2645
作者: Mehak Mubarik
Mehak Mubarik avatar Mehak Mubarik avatar

Mehak is an electrical engineer, a technical content writer, a team collaborator and a digital marketing enthusiast. She loves sketching and playing table tennis. Nature is what attracts her the most.

LinkedIn

相关文章 - MATLAB Random