summaryrefslogtreecommitdiff
path: root/model
diff options
context:
space:
mode:
authorJoe Zhao <ztuowen@gmail.com>2015-05-31 23:47:10 +0800
committerJoe Zhao <ztuowen@gmail.com>2015-05-31 23:47:10 +0800
commit17be62773adb99fc3fac11c13b3f7cd8bf5f2258 (patch)
treeed696a0da8617df487fcbd2d2baae1cd92abdf92 /model
parentf77a4937a5f09d1f49a114ada70b9e11be44b1d6 (diff)
downloadranksvm-17be62773adb99fc3fac11c13b3f7cd8bf5f2258.tar.gz
ranksvm-17be62773adb99fc3fac11c13b3f7cd8bf5f2258.tar.bz2
ranksvm-17be62773adb99fc3fac11c13b3f7cd8bf5f2258.zip
misc
Diffstat (limited to 'model')
-rw-r--r--model/rankmisc.h51
-rw-r--r--model/ranksvm.cpp5
2 files changed, 56 insertions, 0 deletions
diff --git a/model/rankmisc.h b/model/rankmisc.h
new file mode 100644
index 0000000..2d2011d
--- /dev/null
+++ b/model/rankmisc.h
@@ -0,0 +1,51 @@
+//
+// Created by joe on 5/31/15.
+//
+
+#ifndef RANKSVM_RANKMISC_H
+#define RANKSVM_RANKMISC_H
+
+#include"ranksvm.h"
+
+class RSVML1:public RSVM
+{
+public:
+ std::string getName()
+ {
+ return "L1";
+ };
+ virtual int train(RidList &D){LOG(FATAL)<< "NOT IMPLEMENTED"; return 0;};
+ virtual int predict(RidList &D,std::vector<double> &res){
+ res.clear();
+ int n = D.getSize();
+ Eigen::VectorXd one=Eigen::VectorXd::Ones(fsize);
+ for (int i=0;i<n;++i)
+ {
+ double r=D.getVecDot(i,one);
+ res.push_back(-r);
+ }
+ return 0;
+ };
+};
+
+class RSVMBH:public RSVM
+{
+public:
+ std::string getName()
+ {
+ return "BH";
+ };
+ virtual int train(RidList &D){LOG(FATAL)<< "NOT IMPLEMENTED"; return 0;};
+ virtual int predict(RidList &D,std::vector<double> &res){
+ res.clear();
+ int n = D.getSize();
+ for (int i=0;i<n;++i)
+ {
+ double r=D.getBha(i);
+ res.push_back(-r);
+ }
+ return 0;
+ };
+};
+
+#endif //RANKSVM_RANKMISC_H
diff --git a/model/ranksvm.cpp b/model/ranksvm.cpp
index d246b2b..ed78fbe 100644
--- a/model/ranksvm.cpp
+++ b/model/ranksvm.cpp
@@ -1,5 +1,6 @@
#include"ranksvm.h"
#include"ranksvmtn.h"
+#include"rankmisc.h"
#include"../tools/matrixIO.h"
#include<iostream>
#include<fstream>
@@ -43,6 +44,10 @@ RSVM* RSVM::loadModel(const string fname){
if (type=="TN")
rsvm = new RSVMTN();
+ if (type=="L1")
+ rsvm = new RSVML1();
+ if (type=="BH")
+ rsvm = new RSVMBH();
rsvm->fsize=fsize;
SVMModel model;