original_string: protected function getBestNumericalSplit(array $samples, array $targets, int $col): array
      {
          $values = array_column($samples, $col);
          // Trying all possible points may be accomplished in two general ways:
          // 1- Try all values in the $samples array ($values)
          // 2- Artificially split the range of values into several parts and try them
          // We choose the second one because it is faster in larger datasets
          $minValue = min($values);
          $maxValue = max($values);
          $stepSize = ($maxValue - $minValue) / $this->numSplitCount;
  
          $split = [];
  
          foreach (['<=', '>'] as $operator) {
              // Before trying all possible split points, let's first try
              // the average value for the cut point
              $threshold = array_sum($values) / (float) count($values);
              [$errorRate, $prob] = $this->calculateErrorRate($targets, $threshold, $operator, $values);
              if (!isset($split['trainingErrorRate']) || $errorRate < $split['trainingErrorRate']) {
                  $split = [
                      'value' => $threshold,
                      'operator' => $operator,
                      'prob' => $prob,
                      'column' => $col,
                      'trainingErrorRate' => $errorRate,
                  ];
              }
  
              // Try other possible points one by one
              for ($step = $minValue; $step <= $maxValue; $step += $stepSize) {
                  $threshold = (float) $step;
                  [$errorRate, $prob] = $this->calculateErrorRate($targets, $threshold, $operator, $values);
                  if ($errorRate < $split['trainingErrorRate']) {
                      $split = [
                          'value' => $threshold,
                          'operator' => $operator,
                          'prob' => $prob,
                          'column' => $col,
                          'trainingErrorRate' => $errorRate,
                      ];
                  }
              }// for
          }
  
          return $split;
      }
code: protected function getBestNumericalSplit(array $samples, array $targets, int $col): array
      {
          $values = array_column($samples, $col);
          // Trying all possible points may be accomplished in two general ways:
          // 1- Try all values in the $samples array ($values)
          // 2- Artificially split the range of values into several parts and try them
          // We choose the second one because it is faster in larger datasets
          $minValue = min($values);
          $maxValue = max($values);
          $stepSize = ($maxValue - $minValue) / $this->numSplitCount;
  
          $split = [];
  
          foreach (['<=', '>'] as $operator) {
              // Before trying all possible split points, let's first try
              // the average value for the cut point
              $threshold = array_sum($values) / (float) count($values);
              [$errorRate, $prob] = $this->calculateErrorRate($targets, $threshold, $operator, $values);
              if (!isset($split['trainingErrorRate']) || $errorRate < $split['trainingErrorRate']) {
                  $split = [
                      'value' => $threshold,
                      'operator' => $operator,
                      'prob' => $prob,
                      'column' => $col,
                      'trainingErrorRate' => $errorRate,
                  ];
              }
  
              // Try other possible points one by one
              for ($step = $minValue; $step <= $maxValue; $step += $stepSize) {
                  $threshold = (float) $step;
                  [$errorRate, $prob] = $this->calculateErrorRate($targets, $threshold, $operator, $values);
                  if ($errorRate < $split['trainingErrorRate']) {
                      $split = [
                          'value' => $threshold,
                          'operator' => $operator,
                          'prob' => $prob,
                          'column' => $col,
                          'trainingErrorRate' => $errorRate,
                      ];
                  }
              }// for
          }
  
          return $split;
      }
code_tokens: protected function getBestNumericalSplit ( array $ samples , array $ targets , int $ col ) : array { $ values = array_column ( $ samples , $ col ) ; // Trying all possible points may be accomplished in two general ways: // 1- Try all values in the $samples array ($values) // 2- Artificially split the range of values into several parts and try them // We choose the second one because it is faster in larger datasets $ minValue = min ( $ values ) ; $ maxValue = max ( $ values ) ; $ stepSize = ( $ maxValue - $ minValue ) / $ this -> numSplitCount ; $ split = [ ] ; foreach ( [ '<=' , '>' ] as $ operator ) { // Before trying all possible split points, let's first try // the average value for the cut point $ threshold = array_sum ( $ values ) / ( float ) count ( $ values ) ; [ $ errorRate , $ prob ] = $ this -> calculateErrorRate ( $ targets , $ threshold , $ operator , $ values ) ; if ( ! isset ( $ split [ 'trainingErrorRate' ] ) || $ errorRate < $ split [ 'trainingErrorRate' ] ) { $ split = [ 'value' => $ threshold , 'operator' => $ operator , 'prob' => $ prob , 'column' => $ col , 'trainingErrorRate' => $ errorRate , ] ; } // Try other possible points one by one for ( $ step = $ minValue ; $ step <= $ maxValue ; $ step += $ stepSize ) { $ threshold = ( float ) $ step ; [ $ errorRate , $ prob ] = $ this -> calculateErrorRate ( $ targets , $ threshold , $ operator , $ values ) ; if ( $ errorRate < $ split [ 'trainingErrorRate' ] ) { $ split = [ 'value' => $ threshold , 'operator' => $ operator , 'prob' => $ prob , 'column' => $ col , 'trainingErrorRate' => $ errorRate , ] ; } } // for } return $ split ; }
docstring: Determines best split point for the given column
docstring_tokens: Determines best split point for the given column