25 int32_t match_count=0;
26 for (int32_t i=l1.
vlen-1; i >= 0; --i)
28 if (l1[i] == m1 && l2[i] == m2)
37 return l1.
vlen - find_match_count(l1, m1, l2, m2);
52 int32_t n_class=
max(label_p.vlen, label_g.
vlen);
56 for (int32_t i=0; i < label_g.
vlen; ++i)
58 for (int32_t j=0; j < label_p.vlen; ++j)
60 G(i, j)=find_mismatch_count(groundtruth_ilabels, static_cast<int32_t>(label_g[i]),
61 predicted_ilabels, static_cast<int32_t>(label_p[j]));
66 munkres_solver.
solve();
68 std::map<int32_t, int32_t> label_map;
69 for (int32_t i=0; i < label_p.vlen; ++i)
71 for (int32_t j=0; j < label_g.
vlen; ++j)
75 label_map.insert(make_pair(static_cast<int32_t>(label_p[i]),
76 static_cast<int32_t>(label_g[j])));
82 for (int32_t i= 0; i < predicted_ilabels.
vlen; ++i)
83 ((
CMulticlassLabels*) predicted)->set_int_label(i, label_map[predicted_ilabels[i]]);
virtual ELabelType get_label_type() const =0
void best_map(CLabels *predicted, CLabels *ground_truth)
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.
int32_t find_mismatch_count(SGVector< int32_t > l1, int32_t m1, SGVector< int32_t > l2, int32_t m2)
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)
Matrix::Scalar max(Matrix m)