public function stratifiedFold(int $k = 10) : array
    {
        if ($k < 2) {
            throw new InvalidArgumentException('Cannot create less than'
                . " 2 folds, $k given.");
        }

        $folds = [];

        for ($i = 0; $i < $k; $i++) {
            $samples = $labels = [];

            foreach ($this->_stratify() as $label => $stratum) {
                $n = (int) floor(count($stratum) / $k);

                $samples = array_merge($samples, array_slice($stratum, $i * $n, $n));
                $labels = array_merge($labels, array_fill(0, $n, $label));
            }

            $folds[] = self::quick($samples, $labels);
        }

        return $folds;
    }
public function stratifiedFold(int $k = 10) : array
    {
        if ($k < 2) {
            throw new InvalidArgumentException('Cannot create less than'
                . " 2 folds, $k given.");
        }

        $folds = [];

        for ($i = 0; $i < $k; $i++) {
            $samples = $labels = [];

            foreach ($this->_stratify() as $label => $stratum) {
                $n = (int) floor(count($stratum) / $k);

                $samples = array_merge($samples, array_slice($stratum, $i * $n, $n));
                $labels = array_merge($labels, array_fill(0, $n, $label));
            }

            $folds[] = self::quick($samples, $labels);
        }

        return $folds;
    }
public function stratifiedFold ( int $ k = 10 ) : array { if ( $ k < 2 ) { throw new InvalidArgumentException ( 'Cannot create less than' . " 2 folds, $k given." ) ; } $ folds = [ ] ; for ( $ i = 0 ; $ i < $ k ; $ i ++ ) { $ samples = $ labels = [ ] ; foreach ( $ this -> _stratify ( ) as $ label => $ stratum ) { $ n = ( int ) floor ( count ( $ stratum ) / $ k ) ; $ samples = array_merge ( $ samples , array_slice ( $ stratum , $ i * $ n , $ n ) ) ; $ labels = array_merge ( $ labels , array_fill ( 0 , $ n , $ label ) ) ; } $ folds [ ] = self :: quick ( $ samples , $ labels ) ; } return $ folds ; }
Fold the dataset into k equal sized stratified datasets.

@param int $k
@throws \InvalidArgumentException
@return array
Fold the dataset into k equal sized stratified datasets .