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 の場合、置換のあるサンプルを選択します。それ以外の場合は、交換せずにサンプルを選択します。Replacefalse に設定されている場合、N_obs を制限して、データセット内の設定された要素数を超えないようにします。

デフォルトでは、Replacetrue です。

true =置換されたサンプル。

false =置換なしのサンプル。

これは、1 行のコードを記述することで実現できます。上記の仮定を念頭に置いて、以下のようにコードを作成します。

%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 行 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