層別無作為分割
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
。