MCPcopy Create free account
hub / github.com/davisking/dlib / dotest_sparse_vectors

Function dotest_sparse_vectors

dlib/test/ranking.cpp:226–302  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

224// ----------------------------------------------------------------------------------------
225
226 void dotest_sparse_vectors()
227 {
228 print_spinner();
229 dlog << LINFO << "in dotest_sparse_vectors()";
230
231 typedef std::map<unsigned long,double> sample_type;
232
233 typedef sparse_linear_kernel<sample_type> kernel_type;
234
235 svm_rank_trainer<kernel_type> trainer;
236
237
238 std::vector<ranking_pair<sample_type> > samples;
239
240 ranking_pair<sample_type> p;
241 sample_type samp;
242
243 samp[3] = 1; p.relevant.push_back(samp); samp.clear();
244 samp[0] = 1; p.nonrelevant.push_back(samp); samp.clear();
245 samples.push_back(p);
246
247 samp[2] = 1; p.relevant.push_back(samp); samp.clear();
248 samp[0] = 1; p.nonrelevant.push_back(samp); samp.clear();
249 samp[1] = 1; p.nonrelevant.push_back(samp); samp.clear();
250 samp[1] = 1; p.nonrelevant.push_back(samp); samp.clear();
251 samples.push_back(p);
252
253
254 trainer.set_c(10);
255
256 decision_function<kernel_type> df = trainer.train(samples);
257
258 matrix<double,1,2> res;
259 res = 1,1;
260
261 dlog << LINFO << "accuracy: "<< test_ranking_function(df, samples);
262 DLIB_TEST(equal(test_ranking_function(df, samples), res));
263
264 DLIB_TEST(equal(test_ranking_function(trainer.train(samples[1]), samples), res));
265
266 trainer.set_epsilon(1e-13);
267 df = trainer.train(samples);
268
269 dlog << LINFO << sparse_to_dense(df.basis_vectors(0));
270 sample_type truew;
271 truew[0] = -0.5;
272 truew[1] = -0.5;
273 truew[2] = 0.5;
274 truew[3] = 0.5;
275 DLIB_TEST(length(subtract(truew , df.basis_vectors(0))) < 1e-10);
276
277 dlog << LINFO << "accuracy: "<< test_ranking_function(df, samples);
278 DLIB_TEST(equal(test_ranking_function(df, samples), res));
279
280 dlog << LINFO << "cv-accuracy: "<< cross_validate_ranking_trainer(trainer, samples,2);
281 DLIB_TEST(std::abs(cross_validate_ranking_trainer(trainer, samples,2)(0) - 0.7777777778) < 0.0001);
282
283 trainer.set_learns_nonnegative_weights(true);

Callers 1

perform_testMethod · 0.85

Calls 14

print_spinnerFunction · 0.85
test_ranking_functionFunction · 0.85
sparse_to_denseFunction · 0.85
subtractFunction · 0.85
absFunction · 0.85
equalFunction · 0.50
lengthFunction · 0.50
push_backMethod · 0.45
clearMethod · 0.45
set_cMethod · 0.45
trainMethod · 0.45

Tested by

no test coverage detected