15 #ifndef __MLPACK_METHODS_HOEFFDING_TREES_GINI_INDEX_HPP
16 #define __MLPACK_METHODS_HOEFFDING_TREES_GINI_INDEX_HPP
26 static double Evaluate(
const arma::Mat<size_t>& counts)
32 arma::vec splitCounts(counts.n_cols);
33 for (
size_t i = 0; i < counts.n_cols; ++i)
35 splitCounts[i] = arma::accu(counts.col(i));
36 numElem += splitCounts[i];
43 arma::Col<size_t> classCounts = arma::sum(counts, 1);
46 double impurity = 0.0;
47 for (
size_t i = 0; i < classCounts.n_elem; ++i)
49 const double f = ((double) classCounts[i] / (
double) numElem);
50 impurity += f * (1.0 - f);
55 for (
size_t i = 0; i < counts.n_cols; ++i)
57 if (splitCounts[i] > 0)
59 double splitImpurity = 0.0;
60 for (
size_t j = 0; j < counts.n_rows; ++j)
62 const double f = ((double) counts(j, i) / (double) splitCounts[i]);
63 splitImpurity += f * (1.0 - f);
66 impurity -= ((double) splitCounts[i] / (
double) numElem) *
79 static double Range(
const size_t numClasses)
84 return 1.0 - (1.0 / double(numClasses));
Linear algebra utility functions, generally performed on matrices or vectors.
static double Evaluate(const arma::Mat< size_t > &counts)
static double Range(const size_t numClasses)
Return the range of the Gini impurity for the given number of classes.
Include all of the base components required to write MLPACK methods, and the main MLPACK Doxygen docu...