在 MATLAB 中從帶有資料集的矩陣或陣列中選擇隨機樣本的方法

Mehak Mubarik 2023年1月30日 2022年5月11日
  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 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