在 MATLAB 中从带有数据集的矩阵或数组中选择随机样本的方法
-
使用 MATLAB 中的
randsample
函数提取随机样本 -
使用 MATLAB 中的
datasample
函数提取随机样本 -
在 MATLAB 中使用
datasample
从数据集矩阵中提取列的随机样本子集
我们将研究使用 MATLAB 的不同命令从任何数据集、数组或矩阵中选择随机样本的不同方法。
为了清除你的概念并让你全面了解如何获取随机样本,我们将通过提供代码示例来解释诸如 Randn
、randsample
、datasample
之类的函数,以从你的数据集中提取随机样本并进行替换。因为没有替换/替换以及显示你的输出外观的片段。
让我们假设我们有一个包含 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)
如果 Replace
是 true
,我们选择有替换的样本;否则,我们选择不替换的样本。如果 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 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