MCPcopy Create free account
hub / github.com/antmachineintelligence/mtgbmcode / CalDCGAtK

Method CalDCGAtK

src/metric/dcg_calculator.cpp:109–127  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

107
108
109double DCGCalculator::CalDCGAtK(data_size_t k, const label_t* label,
110 const double* score, data_size_t num_data) {
111 // get sorted indices by score
112 std::vector<data_size_t> sorted_idx(num_data);
113 for (data_size_t i = 0; i < num_data; ++i) {
114 sorted_idx[i] = i;
115 }
116 std::stable_sort(sorted_idx.begin(), sorted_idx.end(),
117 [score](data_size_t a, data_size_t b) {return score[a] > score[b]; });
118
119 if (k > num_data) { k = num_data; }
120 double dcg = 0.0f;
121 // calculate dcg
122 for (data_size_t i = 0; i < k; ++i) {
123 data_size_t idx = sorted_idx[i];
124 dcg += label_gain_[static_cast<int>(label[idx])] * discount_[i];
125 }
126 return dcg;
127}
128
129void DCGCalculator::CalDCG(const std::vector<data_size_t>& ks, const label_t* label,
130 const double * score, data_size_t num_data, std::vector<double>* out) {

Callers

nothing calls this directly

Calls 3

stable_sortFunction · 0.85
beginMethod · 0.45
endMethod · 0.45

Tested by

no test coverage detected