層別無作為分割

RandomSpilt クラスに類似して、標本は二つのグループに分割されます: 訓練グループとテストグループ。標本の分配はそれらの目的を考慮し、それらを等しく分割しようとします。各グループ内の標本の数を調整することができます。

コンストラクタのパラメータ

  • $dataset - Dataset インタフェースを実装するオブジェクト
  • $testSize - テスト分割の断片 (float, 0 から 1, デフォルト: 0.3)
  • $seed - ランダム生成のためのシード (例えば テストのため)
$split = new StratifiedRandomSplit($dataset, 0.2);

標本とラベルグループ

テストおよび訓練グループから標本あるいはラベルを取得するために、以下のgetterを使うことができます:

$dataset = new StratifiedRandomSplit($dataset, 0.3, 1234);

// train group
$dataset->getTrainSamples();
$dataset->getTrainLabels();

// test group
$dataset->getTestSamples();
$dataset->getTestLabels();

$dataset = new ArrayDataset(
    $samples = [[1], [2], [3], [4], [5], [6], [7], [8]],
    $targets = ['a', 'a', 'a', 'a', 'b', 'b', 'b', 'b']
);

$split = new StratifiedRandomSplit($dataset, 0.5);

Split will have equals amount of each target. 二つの target a と、二つの b