19 ASSERT(predicted && ground_truth)
25 if (label_p.vlen != label_g.
vlen)
26 SG_ERROR(
"Number of classes are different\n")
34 for (
index_t i=0; i < n_class; ++i)
36 for (
index_t j=0; j < n_class; ++j)
38 ilabels_p, label_p[j])/n_label;
45 for (
index_t i=0; i < n_class; ++i)
47 for (
index_t j=0; j < n_class; ++j)
49 G_rowsum[i] += G(i, j);
50 G_colsum[i] += G(j, i);
55 for (
index_t i=0; i < n_class; ++i)
57 for (
index_t j=0; j < n_class; ++j)
60 mutual_info += G(i, j) * log(G(i,j) /
61 (G_rowsum[i]*G_colsum[j]))/log(2.);
67 for (
index_t i=0; i < n_class; ++i)
69 entropy_g += -G_rowsum[i] * log(G_rowsum[i])/log(2.);
70 entropy_p += -G_colsum[i] * log(G_colsum[i])/log(2.);
73 return mutual_info /
CMath::max(entropy_g, entropy_p);
virtual ELabelType get_label_type() const =0
The class Labels models labels, i.e. class assignments of objects.
virtual int32_t get_num_labels() const =0
multi-class labels 0,1,...
Multiclass Labels for multi-class classification.
all of classes and functions are contained in the shogun namespace
int32_t find_match_count(SGVector< int32_t > l1, int32_t m1, SGVector< int32_t > l2, int32_t m2)