KSquare Utilities
SVM289_MFS::Svm_Model Struct Reference

#include <svm2.h>

Public Member Functions

 Svm_Model ()
 
 Svm_Model (const Svm_Model &_model, FileDescPtr _fileDesc)
 
 Svm_Model (FileDescPtr _fileDesc)
 
 Svm_Model (const svm_parameter &_param, const FeatureNumList &_selFeatures, FileDescPtr _fileDesc)
 
 ~Svm_Model ()
 
void CancelFlag (bool cancelFlag)
 
void CleanUpMemory ()
 
double * DecValues ()
 
kkint32 MemoryConsumedEstimated () const
 
void NormalizeProbability ()
 Derives multi-class probability. More...
 
double ** PairwiseProb ()
 
double * ProbEstimates ()
 
virtual void ReadXML (XmlStream &s, XmlTagConstPtr tag, VolConstBool &cancelFlag, RunLog &log)
 
virtual void WriteXML (const KKStr &varName, ostream &o) const
 

Public Attributes

volatile bool cancelFlag
 
double * dec_values
 
FileDescPtr fileDesc
 
kkint32label
 
kkint32 nr_class
 
kkint32nSV
 
kkint32 numSVs
 
double ** pairwise_prob
 
svm_parameter param
 
double * prob_estimates
 
double * probA
 
double * probB
 
double * rho
 
FeatureNumList selFeatures
 
FeatureVectorList SV
 
double ** sv_coef
 
bool weOwnSupportVectors
 

Detailed Description

Definition at line 160 of file svm2.h.

Constructor & Destructor Documentation

SVM289_MFS::Svm_Model::Svm_Model ( )

Definition at line 4067 of file svm2.cpp.

References cancelFlag, dec_values, fileDesc, label, nr_class, nSV, numSVs, pairwise_prob, param, prob_estimates, probA, probB, rho, selFeatures, sv_coef, Svm_Model(), SVM289_MFS::svm_parameter::svm_parameter(), and weOwnSupportVectors.

Referenced by Svm_Model().

4067  :
4068  cancelFlag (false),
4069  fileDesc (NULL),
4070  param (),
4071  nr_class (0),
4072  numSVs (0),
4073  SV (),
4074  sv_coef (NULL),
4075  rho (NULL),
4076  probA (NULL),
4077  probB (NULL),
4078  label (NULL),
4079  nSV (NULL), // number of SVs for each class (nSV[k])
4080  weOwnSupportVectors (true),
4081  selFeatures (),
4082  dec_values (NULL),
4083  pairwise_prob (NULL),
4084  prob_estimates (NULL)
4085 {
4086 }
double ** sv_coef
Definition: svm2.h:208
FeatureNumList selFeatures
Definition: svm2.h:212
svm_parameter param
Definition: svm2.h:204
kkint32 nr_class
Definition: svm2.h:205
double * probB
Definition: svm2.h:211
kkint32 * nSV
Definition: svm2.h:217
kkint32 * label
Definition: svm2.h:216
FileDescPtr fileDesc
Definition: svm2.h:203
double * prob_estimates
Definition: svm2.h:227
FeatureVectorList SV
Definition: svm2.h:207
kkint32 numSVs
Definition: svm2.h:206
double ** pairwise_prob
Definition: svm2.h:226
bool weOwnSupportVectors
Definition: svm2.h:220
volatile bool cancelFlag
Definition: svm2.h:202
double * probA
Definition: svm2.h:210
double * rho
Definition: svm2.h:209
double * dec_values
Definition: svm2.h:225
SVM289_MFS::Svm_Model::Svm_Model ( const Svm_Model _model,
FileDescPtr  _fileDesc 
)

Definition at line 4089 of file svm2.cpp.

References cancelFlag, dec_values, KKMLL::FeatureNumList::FeatureNumList(), fileDesc, label, nr_class, nSV, numSVs, pairwise_prob, param, prob_estimates, probA, probB, rho, selFeatures, sv_coef, Svm_Model(), SVM289_MFS::svm_parameter::svm_parameter(), and weOwnSupportVectors.

Referenced by KKMLL::ModelSvmBase::ModelSvmBase(), and Svm_Model().

4091  :
4092  cancelFlag (false),
4093  fileDesc (_fileDesc),
4094  param (_model.param),
4095  nr_class (_model.nr_class),
4096  numSVs (_model.numSVs),
4097  SV (),
4098  sv_coef (NULL),
4099  rho (NULL),
4100  probA (NULL),
4101  probB (NULL),
4102  label (NULL),
4103  nSV (NULL), // number of SVs for each class (nSV[k])
4105  selFeatures (_model.selFeatures),
4106  dec_values (NULL),
4107  pairwise_prob (NULL),
4108  prob_estimates (NULL)
4109 
4110 {
4111  kkint32 m = nr_class - 1;
4112  kkint32 numBinaryCombos = nr_class * (nr_class - 1) / 2;
4113 
4114  {
4115  // Copy over support vectors.
4116  FeatureVectorList::const_iterator idx;
4118  for (idx = _model.SV.begin (); idx != _model.SV.end (); idx++)
4119  {
4120  FeatureVectorPtr fv = *idx;
4121  if (weOwnSupportVectors)
4122  SV.push_back (new FeatureVector (*fv));
4123  else
4124  SV.push_back (fv);
4125  }
4126  }
4127 
4128  if (_model.sv_coef)
4129  {
4130  sv_coef = new double*[m];
4131  for (kkint32 j = 0; j < m; j++)
4132  {
4133  sv_coef[j] = new double[numSVs];
4134  for (kkint32 i = 0; i < numSVs; ++i)
4135  sv_coef[j][i] = _model.sv_coef[j][i];
4136  }
4137  }
4138 
4139  if (_model.rho)
4140  {
4141  // Copy over RHO
4142  rho = new double[numBinaryCombos];
4143  for (kkint32 i = 0; i < numBinaryCombos; i++)
4144  rho[i] = _model.rho[i];
4145  }
4146 
4147  if (_model.probA)
4148  {
4149  probA = new double[numBinaryCombos];
4150  for (kkint32 i = 0; i < numBinaryCombos; i++)
4151  probA[i] = _model.probA[i];
4152  }
4153 
4154  if (_model.probB)
4155  {
4156  probB = new double[numBinaryCombos];
4157  for (kkint32 i = 0; i < numBinaryCombos; i++)
4158  probB[i] = _model.probB[i];
4159  }
4160 
4161  if (_model.label)
4162  {
4163  label = new kkint32[nr_class];
4164  for (kkint32 i = 0; i < nr_class; i++)
4165  label[i] = _model.label[i];
4166  }
4167 
4168  if (_model.nSV)
4169  {
4170  nSV = new kkint32[nr_class];
4171  for (kkint32 i = 0; i < nr_class; i++)
4172  nSV[i] = _model.nSV[i];
4173  }
4174 }
double ** sv_coef
Definition: svm2.h:208
__int32 kkint32
Definition: KKBaseTypes.h:88
FeatureNumList selFeatures
Definition: svm2.h:212
bool Owner() const
Definition: KKQueue.h:305
svm_parameter param
Definition: svm2.h:204
kkint32 nr_class
Definition: svm2.h:205
double * probB
Definition: svm2.h:211
kkint32 * nSV
Definition: svm2.h:217
kkint32 * label
Definition: svm2.h:216
FileDescPtr fileDesc
Definition: svm2.h:203
double * prob_estimates
Definition: svm2.h:227
FeatureVectorList SV
Definition: svm2.h:207
kkint32 numSVs
Definition: svm2.h:206
double ** pairwise_prob
Definition: svm2.h:226
Represents a Feature Vector of a single example, labeled or unlabeled.
Definition: FeatureVector.h:59
bool weOwnSupportVectors
Definition: svm2.h:220
volatile bool cancelFlag
Definition: svm2.h:202
double * probA
Definition: svm2.h:210
double * rho
Definition: svm2.h:209
double * dec_values
Definition: svm2.h:225
SVM289_MFS::Svm_Model::Svm_Model ( FileDescPtr  _fileDesc)

Definition at line 4178 of file svm2.cpp.

References cancelFlag, dec_values, KKMLL::FeatureNumList::FeatureNumList(), fileDesc, label, nr_class, nSV, numSVs, pairwise_prob, param, prob_estimates, probA, probB, rho, selFeatures, sv_coef, Svm_Model(), SVM289_MFS::svm_parameter::svm_parameter(), and weOwnSupportVectors.

Referenced by Svm_Model().

4178  :
4179  cancelFlag (false),
4180  fileDesc (_fileDesc),
4181  param (),
4182  nr_class (0),
4183  numSVs (0),
4184  SV (_fileDesc, true),
4185  sv_coef (NULL),
4186  rho (NULL),
4187  probA (NULL),
4188  probB (NULL),
4189  label (NULL),
4190  nSV (NULL), // number of SVs for each class (nSV[k])
4191  weOwnSupportVectors (false),
4192  selFeatures (_fileDesc),
4193  dec_values (NULL),
4194  pairwise_prob (NULL),
4195  prob_estimates (NULL)
4196 {
4197 }
double ** sv_coef
Definition: svm2.h:208
FeatureNumList selFeatures
Definition: svm2.h:212
svm_parameter param
Definition: svm2.h:204
kkint32 nr_class
Definition: svm2.h:205
double * probB
Definition: svm2.h:211
kkint32 * nSV
Definition: svm2.h:217
kkint32 * label
Definition: svm2.h:216
FileDescPtr fileDesc
Definition: svm2.h:203
double * prob_estimates
Definition: svm2.h:227
FeatureVectorList SV
Definition: svm2.h:207
kkint32 numSVs
Definition: svm2.h:206
double ** pairwise_prob
Definition: svm2.h:226
bool weOwnSupportVectors
Definition: svm2.h:220
volatile bool cancelFlag
Definition: svm2.h:202
double * probA
Definition: svm2.h:210
double * rho
Definition: svm2.h:209
double * dec_values
Definition: svm2.h:225
SVM289_MFS::Svm_Model::Svm_Model ( const svm_parameter _param,
const FeatureNumList _selFeatures,
FileDescPtr  _fileDesc 
)

Definition at line 4200 of file svm2.cpp.

References cancelFlag, dec_values, KKMLL::FeatureNumList::FeatureNumList(), fileDesc, label, nr_class, nSV, numSVs, pairwise_prob, param, prob_estimates, probA, probB, rho, selFeatures, sv_coef, Svm_Model(), SVM289_MFS::svm_parameter::svm_parameter(), and weOwnSupportVectors.

Referenced by Svm_Model(), and SVM289_MFS::svm_train().

4203  :
4204  cancelFlag (false),
4205  fileDesc (_fileDesc),
4206  param (_param),
4207  nr_class (0),
4208  numSVs (0),
4209  SV (_fileDesc, true),
4210  sv_coef (NULL),
4211  rho (NULL),
4212  probA (NULL),
4213  probB (NULL),
4214  label (NULL),
4215  nSV (NULL), // number of SVs for each class (nSV[k])
4216  weOwnSupportVectors (false),
4217  selFeatures (_selFeatures),
4218  dec_values (NULL),
4219  pairwise_prob (NULL),
4220  prob_estimates (NULL)
4221 
4222 {
4223 }
double ** sv_coef
Definition: svm2.h:208
FeatureNumList selFeatures
Definition: svm2.h:212
svm_parameter param
Definition: svm2.h:204
kkint32 nr_class
Definition: svm2.h:205
double * probB
Definition: svm2.h:211
kkint32 * nSV
Definition: svm2.h:217
kkint32 * label
Definition: svm2.h:216
FileDescPtr fileDesc
Definition: svm2.h:203
double * prob_estimates
Definition: svm2.h:227
FeatureVectorList SV
Definition: svm2.h:207
kkint32 numSVs
Definition: svm2.h:206
double ** pairwise_prob
Definition: svm2.h:226
bool weOwnSupportVectors
Definition: svm2.h:220
volatile bool cancelFlag
Definition: svm2.h:202
double * probA
Definition: svm2.h:210
double * rho
Definition: svm2.h:209
double * dec_values
Definition: svm2.h:225
SVM289_MFS::Svm_Model::~Svm_Model ( )

Definition at line 4229 of file svm2.cpp.

References CleanUpMemory().

4230 {
4231  CleanUpMemory ();
4232 }

Member Function Documentation

void SVM289_MFS::Svm_Model::CancelFlag ( bool  cancelFlag)

Definition at line 4277 of file svm2.cpp.

References cancelFlag.

4278 {
4279  cancelFlag = _cancelFlag;
4280 }
volatile bool cancelFlag
Definition: svm2.h:202
void SVM289_MFS::Svm_Model::CleanUpMemory ( )

Definition at line 4235 of file svm2.cpp.

References dec_values, label, nr_class, nSV, pairwise_prob, prob_estimates, probA, probB, rho, and sv_coef.

Referenced by ReadXML(), and ~Svm_Model().

4236 {
4237  if (weOwnSupportVectors)
4238  SV.Owner (true);
4239  else
4240  SV.Owner (false);
4241 
4242  kkint32 i;
4243 
4244  if (sv_coef)
4245  {
4246  for (i = 0; i < (nr_class - 1); i++)
4247  delete sv_coef[i];
4248  delete sv_coef;
4249  sv_coef = NULL;
4250  }
4251 
4252  delete rho; rho = NULL;
4253  delete probA; probA = NULL;
4254  delete probB; probB = NULL;
4255  delete label; label = NULL;
4256  delete nSV; nSV = NULL;
4257 
4258  if (pairwise_prob)
4259  {
4260  for (i = 0; i < nr_class; i++)
4261  {
4262  delete pairwise_prob[i];
4263  pairwise_prob[i] = NULL;
4264  }
4265  delete pairwise_prob;
4266  pairwise_prob = NULL;
4267  }
4268 
4269  delete dec_values;
4270  dec_values = NULL;
4271  delete prob_estimates;
4272  prob_estimates = NULL;
4273 } /* CleanUpMemory */
double ** sv_coef
Definition: svm2.h:208
__int32 kkint32
Definition: KKBaseTypes.h:88
bool Owner() const
Definition: KKQueue.h:305
kkint32 nr_class
Definition: svm2.h:205
double * probB
Definition: svm2.h:211
kkint32 * nSV
Definition: svm2.h:217
kkint32 * label
Definition: svm2.h:216
double * prob_estimates
Definition: svm2.h:227
FeatureVectorList SV
Definition: svm2.h:207
double ** pairwise_prob
Definition: svm2.h:226
bool weOwnSupportVectors
Definition: svm2.h:220
double * probA
Definition: svm2.h:210
double * rho
Definition: svm2.h:209
double * dec_values
Definition: svm2.h:225
double * SVM289_MFS::Svm_Model::DecValues ( )

Definition at line 4303 of file svm2.cpp.

References dec_values, and nr_class.

Referenced by SVM289_MFS::svm_predict_probability().

4304 {
4305  if (!dec_values)
4306  dec_values = new double[nr_class * (nr_class - 1) / 2];
4307  return dec_values;
4308 }
kkint32 nr_class
Definition: svm2.h:205
double * dec_values
Definition: svm2.h:225
kkint32 SVM289_MFS::Svm_Model::MemoryConsumedEstimated ( ) const

Definition at line 4284 of file svm2.cpp.

References dec_values, label, nr_class, nSV, numSVs, pairwise_prob, prob_estimates, probA, probB, rho, and sv_coef.

Referenced by KKMLL::ModelSvmBase::MemoryConsumedEstimated().

4285 {
4286  kkint32 numBinaryClassCombos = nr_class * (nr_class - 1) / 2;
4287  kkint32 memoryConsumedEstimated = sizeof (*this) + SV.MemoryConsumedEstimated ();
4288 
4289  if (sv_coef) memoryConsumedEstimated += sizeof (double) * (nr_class - 1) * numSVs; // sv_coef
4290  if (rho) memoryConsumedEstimated += sizeof (double) * numBinaryClassCombos; // rho
4291  if (probA) memoryConsumedEstimated += sizeof (double) * numBinaryClassCombos; // probA
4292  if (probB) memoryConsumedEstimated += sizeof (double) * numBinaryClassCombos; // probB
4293  if (label) memoryConsumedEstimated += sizeof (kkint32) * nr_class;
4294  if (nSV) memoryConsumedEstimated += sizeof (kkint32) * nr_class;
4295  if (pairwise_prob) memoryConsumedEstimated += sizeof (double*) * nr_class + sizeof (double) * nr_class * nr_class;
4296  if (dec_values) memoryConsumedEstimated += sizeof (double) * numBinaryClassCombos;
4297  if (prob_estimates) memoryConsumedEstimated += sizeof (double) * nr_class;
4298  return memoryConsumedEstimated;
4299 } /* Svm_Model::MemoryConsumedEstimated */
double ** sv_coef
Definition: svm2.h:208
__int32 kkint32
Definition: KKBaseTypes.h:88
virtual kkint32 MemoryConsumedEstimated() const
kkint32 nr_class
Definition: svm2.h:205
double * probB
Definition: svm2.h:211
kkint32 * nSV
Definition: svm2.h:217
kkint32 * label
Definition: svm2.h:216
double * prob_estimates
Definition: svm2.h:227
FeatureVectorList SV
Definition: svm2.h:207
kkint32 numSVs
Definition: svm2.h:206
double ** pairwise_prob
Definition: svm2.h:226
double * probA
Definition: svm2.h:210
double * rho
Definition: svm2.h:209
double * dec_values
Definition: svm2.h:225
void SVM289_MFS::Svm_Model::NormalizeProbability ( )

Derives multi-class probability.

Definition at line 4581 of file svm2.cpp.

References nr_class, pairwise_prob, prob_estimates, and ProbEstimates().

Referenced by SVM289_MFS::svm_predict_probability().

4582 {
4583  // Make sure that the ProbEstimates array exists.
4584  ProbEstimates ();
4585 
4586  if (pairwise_prob == NULL)
4587  return;
4588 
4589  kkint32 x = 0;
4590  kkint32 y = 0;
4591  double totalProb = 0.0;
4592 
4593  for (x = 0; x < nr_class; x++)
4594  {
4595  prob_estimates[x] = 1.0;
4596  for (y = 0; y < nr_class; y++)
4597  {
4598  if (x != y)
4599  prob_estimates[x] *= pairwise_prob[x][y];
4600  }
4601 
4602  totalProb += prob_estimates[x];
4603  }
4604 
4605  for (x = 0; x < nr_class; x++)
4606  prob_estimates[x] /= totalProb;
4607 } /* NormalizeProbability */
__int32 kkint32
Definition: KKBaseTypes.h:88
kkint32 nr_class
Definition: svm2.h:205
double * prob_estimates
Definition: svm2.h:227
double ** pairwise_prob
Definition: svm2.h:226
double * ProbEstimates()
Definition: svm2.cpp:4311
double ** SVM289_MFS::Svm_Model::PairwiseProb ( )

Definition at line 4319 of file svm2.cpp.

References nr_class, and pairwise_prob.

Referenced by KKMLL::ModelSvmBase::RetrieveCrossProbTable(), and SVM289_MFS::svm_predict_probability().

4320 {
4321  if (!pairwise_prob)
4322  {
4323  pairwise_prob = new double*[nr_class];
4324  for (kkint32 x = 0; x < nr_class; x++)
4325  pairwise_prob[x] = new double[nr_class];
4326  }
4327  return pairwise_prob;
4328 }
__int32 kkint32
Definition: KKBaseTypes.h:88
kkint32 nr_class
Definition: svm2.h:205
double ** pairwise_prob
Definition: svm2.h:226
double * SVM289_MFS::Svm_Model::ProbEstimates ( )

Definition at line 4311 of file svm2.cpp.

References nr_class, and prob_estimates.

Referenced by NormalizeProbability(), and SVM289_MFS::svm_predict_probability().

4312 {
4313  if (!prob_estimates)
4314  prob_estimates = new double[nr_class];
4315  return prob_estimates;
4316 }
kkint32 nr_class
Definition: svm2.h:205
double * prob_estimates
Definition: svm2.h:227
void SVM289_MFS::Svm_Model::ReadXML ( XmlStream s,
XmlTagConstPtr  tag,
VolConstBool cancelFlag,
RunLog log 
)
virtual

Reading in all the info needed to build the Svm_Model data structure including allocating needed memory.

Definition at line 4417 of file svm2.cpp.

References CleanUpMemory(), SVM289_MFS::svm_parameter::coef0, KKB::KKStr::Concat(), SVM289_MFS::svm_parameter::degree, KKB::KKStr::EqualIgnoreCase(), fileDesc, SVM289_MFS::svm_parameter::gamma, KKB::XmlStream::GetNextToken(), SVM289_MFS::svm_parameter::kernel_type, SVM289_MFS::Kernel_Type_FromStr(), label, nr_class, nSV, numSVs, param, probA, probB, rho, sv_coef, SVM289_MFS::svm_parameter::svm_type, SVM289_MFS::SVM_Type_FromStr(), KKB::XmlToken::tokElement, KKB::XmlToken::TokenType(), KKMLL::XmlElementFileDesc::Value(), KKB::XmlToken::VarName(), and weOwnSupportVectors.

4422 {
4423  CleanUpMemory ();
4424  SV.Owner (true);
4425  weOwnSupportVectors = true;
4426 
4427  kkint32 numBinaryCombos = 0;
4428 
4429  KKStr svmParametersStr;
4430  XmlTokenPtr t = s.GetNextToken (cancelFlag, log);
4431  while (t && (!cancelFlag))
4432  {
4433  const KKStr& varName = t->VarName ();
4434  if (t->TokenType () == XmlToken::TokenTypes::tokElement)
4435  {
4436  XmlElementPtr e = dynamic_cast<XmlElementPtr> (t);
4437  if (e)
4438  {
4439  KKStr valueStr;
4440  double valueDouble = 0.0;
4441  kkint32 valueInt32 = 0;
4442 
4443  if (typeid(*e) == typeid(XmlElementKKStr))
4444  valueStr = *(dynamic_cast<XmlElementKKStrPtr> (e)->Value ());
4445 
4446  else if (typeid(*e) == typeid(XmlElementInt32))
4447  valueInt32 = dynamic_cast<XmlElementInt32Ptr> (e)->Value ();
4448 
4449  else if (typeid(*e) == typeid(XmlElementDouble))
4450  valueDouble = dynamic_cast<XmlElementDoublePtr> (e)->Value ();
4451 
4452  if (varName.EqualIgnoreCase ("FileDesc"))
4453  {
4454  fileDesc = dynamic_cast<XmlElementFileDescPtr> (e)->Value ();
4456  }
4457 
4458  else if (varName.EqualIgnoreCase ("svm_type"))
4459  param.svm_type = SVM_Type_FromStr (valueStr);
4460 
4461  else if (varName.EqualIgnoreCase ("kernel_type"))
4462  param.kernel_type = Kernel_Type_FromStr (valueStr);
4463 
4464  else if (varName.EqualIgnoreCase ("degree"))
4465  param.degree = valueInt32;
4466 
4467  else if (varName.EqualIgnoreCase ("gamma"))
4468  param.gamma = valueDouble;
4469 
4470  else if (varName.EqualIgnoreCase ("coef0"))
4471  param.coef0 = valueDouble;
4472 
4473  else if (varName.EqualIgnoreCase ("selFeatures"))
4474  selFeatures = *(dynamic_cast<XmlElementFeatureNumListPtr> (e)->Value ());
4475 
4476  else if (varName.EqualIgnoreCase ("nr_class"))
4477  {
4478  nr_class = valueInt32;
4479  numBinaryCombos = nr_class * (nr_class - 1) / 2;
4480  }
4481 
4482  else if (varName.EqualIgnoreCase ("numSVs"))
4483  numSVs = valueInt32;
4484 
4485  else if (varName.EqualIgnoreCase ("rho"))
4486  {
4487  delete rho;
4488  rho = dynamic_cast<XmlElementArrayDoublePtr> (e)->TakeOwnership ();
4489  numSVs = valueInt32;
4490  }
4491 
4492  else if (varName.EqualIgnoreCase ("label"))
4493  {
4494  delete label;
4495  label = dynamic_cast<XmlElementArrayInt32Ptr> (e)->TakeOwnership ();
4496  }
4497 
4498  else if (varName.EqualIgnoreCase ("probA"))
4499  {
4500  delete probA;
4501  probA = dynamic_cast<XmlElementArrayDoublePtr> (e)->TakeOwnership (); // numBinaryCombos
4502  }
4503 
4504  else if (varName.EqualIgnoreCase ("probB"))
4505  {
4506  delete probB;
4507  probB = dynamic_cast<XmlElementArrayDoublePtr> (e)->TakeOwnership (); // numBinaryCombos
4508  }
4509 
4510  else if (varName.EqualIgnoreCase ("nSV"))
4511  {
4512  delete nSV;
4513  nSV = dynamic_cast<XmlElementArrayInt32Ptr> (e)->TakeOwnership (); // numBinaryCombos
4514  }
4515 
4516  else if (varName.EqualIgnoreCase ("SupportVector"))
4517  {
4518  kkint32 m = nr_class - 1;
4519  kkint32 i = 0, j = 0;
4520 
4521  if (!sv_coef)
4522  {
4523  sv_coef = new double*[m];
4524  for (i = 0; i < m; i++)
4525  {
4526  sv_coef[i] = new double[numSVs];
4527  for (j = 0; j < numSVs; j++)
4528  sv_coef[i][j] = 0.0;
4529  }
4530  }
4531 
4532  if (SV.QueueSize () >= numSVs)
4533  {
4534  KKStr errorMsg = "SVM289_MFS::Svm_Model::Read ***ERROR*** To many Support Vector's Defined.";
4535  log.Level (-1) << endl << errorMsg << endl << endl;
4536  }
4537  else
4538  {
4539  KKStrParser p (valueStr);
4540  p.TrimWhiteSpace (" ");
4541  KKStr imageFileName = p.GetNextToken ("\t");
4542  kkint32 numOffeatures = p.GetNextTokenInt ("\t");
4543 
4544  FeatureVectorPtr fv = new FeatureVector (numOffeatures);
4545 
4546  for (kkint32 j = 0; (j < (nr_class - 1)) && p.MoreTokens (); ++j)
4547  sv_coef[j][i] = p.GetNextTokenDouble ("\t");
4548 
4550  {
4551  log.Level (-1) << endl << endl
4552  << "SVM289_MFS::Svm_Model::Read ***ERROR*** PRECOMPUTED Can not Handle." << endl
4553  << endl;
4554  }
4555  else
4556  {
4557  for (kkint32 zed = 0; (zed < numOffeatures) && (p.MoreTokens ()); ++zed)
4558  {
4559  KKStr featureField = p.GetNextToken ("\t");
4560  kkint32 featureNumber = featureField.ExtractTokenInt (":");
4561  double featureValue = featureField.ExtractTokenDouble ("\t");
4562  fv->FeatureData (featureNumber, (float)featureValue);
4563  }
4564  }
4565  SV.PushOnBack (fv);
4566  }
4567  }
4568  }
4569  }
4570  delete t;
4571  t = s.GetNextToken (cancelFlag, log);
4572  }
4573  delete t;
4574  t = NULL;
4575 } /* ReadXML */
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
void PushOnBack(FeatureVectorPtr image)
Overloading the PushOnBack function in KKQueue so we can monitor the Version and Sort Order...
double ** sv_coef
Definition: svm2.h:208
__int32 kkint32
Definition: KKBaseTypes.h:88
Kernel_Type kernel_type
Definition: svm2.h:132
FeatureNumList selFeatures
Definition: svm2.h:212
bool EqualIgnoreCase(const KKStr &s2) const
Definition: KKStr.cpp:1250
RunLog & Level(kkint32 _level)
Definition: RunLog.cpp:220
bool Owner() const
Definition: KKQueue.h:305
svm_parameter param
Definition: svm2.h:204
kkint32 nr_class
Definition: svm2.h:205
double * probB
Definition: svm2.h:211
kkint32 * nSV
Definition: svm2.h:217
double ExtractTokenDouble(const char *delStr)
Definition: KKStr.cpp:3180
SVM_Type SVM_Type_FromStr(KKStr s)
Definition: svm2.cpp:534
void ResetFileDesc(FileDescPtr newFileDesc)
void FeatureData(kkint32 _featureNum, float _featureValue)
Assign a value to a specific feature number for the feature vector.
Kernel_Type Kernel_Type_FromStr(KKStr s)
Definition: svm2.cpp:564
kkint32 ExtractTokenInt(const char *delStr)
Definition: KKStr.cpp:3129
kkint32 * label
Definition: svm2.h:216
FileDescPtr fileDesc
Definition: svm2.h:203
kkint32 QueueSize() const
Definition: KKQueue.h:313
FeatureVectorList SV
Definition: svm2.h:207
kkint32 numSVs
Definition: svm2.h:206
virtual TokenTypes TokenType()=0
Class that manages the extraction of tokens from a String without being destructive to the original s...
Definition: KKStrParser.h:18
virtual XmlTokenPtr GetNextToken(VolConstBool &cancelFlag, RunLog &log)
Definition: XmlStream.cpp:116
Represents a Feature Vector of a single example, labeled or unlabeled.
Definition: FeatureVector.h:59
bool weOwnSupportVectors
Definition: svm2.h:220
virtual const KKStr & VarName() const
Definition: XmlStream.h:269
volatile bool cancelFlag
Definition: svm2.h:202
double * probA
Definition: svm2.h:210
double * rho
Definition: svm2.h:209
void SVM289_MFS::Svm_Model::WriteXML ( const KKStr varName,
ostream &  o 
) const
virtual

Definition at line 4332 of file svm2.cpp.

References KKB::XmlTag::AddAtribute(), SVM289_MFS::svm_parameter::coef0, KKB::KKStr::Concat(), SVM289_MFS::svm_parameter::degree, KKB::KKStr::Empty(), KKMLL::FeatureVector::ExampleFileName(), KKMLL::FeatureVector::FeatureData(), fileDesc, SVM289_MFS::svm_parameter::gamma, SVM289_MFS::svm_parameter::kernel_type, SVM289_MFS::Kernel_Type_ToStr(), KKB::KKStr::KKStr(), label, nr_class, nSV, KKMLL::FeatureVector::NumOfFeatures(), numSVs, param, SVM289_MFS::POLY, SVM289_MFS::PRECOMPUTED, probA, probB, SVM289_MFS::RBF, rho, selFeatures, SVM289_MFS::SIGMOID, KKB::SPRINTF(), sv_coef, SVM289_MFS::svm_parameter::svm_type, SVM289_MFS::SVM_Type_ToStr(), KKB::XmlTag::tagEnd, KKB::XmlTag::tagStart, KKMLL::FeatureNumList::WriteXML(), KKB::XmlTag::WriteXML(), KKMLL::FileDesc::WriteXML(), KKB::KKStr::WriteXML(), and KKB::XmlTag::XmlTag().

Referenced by KKMLL::ModelSvmBase::WriteXML().

4335 {
4336  XmlTag startTag ("Svm_Model", XmlTag::TagTypes::tagStart);
4337  if (!varName.Empty ())
4338  startTag.AddAtribute ("VarName", varName);
4339  startTag.WriteXML (o);
4340  o << endl;
4341 
4342  fileDesc->WriteXML ("FileDesc", o);
4343 
4344  SVM_Type_ToStr (param.svm_type).WriteXML ("svm_type", o);
4345 
4346  Kernel_Type_ToStr (param.kernel_type).WriteXML ("kernel_type", o);
4347 
4349  XmlElementInt32::WriteXML (param.degree, "degree", o);
4350 
4352  XmlElementDouble::WriteXML (param.gamma, "gamma", o);
4353 
4355  XmlElementDouble::WriteXML (param.coef0, "coef0", o);
4356 
4357  selFeatures.WriteXML ("selFeatures", o);
4358 
4359  XmlElementInt32::WriteXML (nr_class, "nr_class", o);
4360 
4361  kkint32 numBinaryCombos = nr_class * (nr_class - 1) / 2;
4362 
4363  XmlElementInt32::WriteXML (numSVs, "numSVs", o);
4364 
4365  XmlElementArrayDouble::WriteXML (numBinaryCombos, rho, "rho", o);
4366 
4367  XmlElementArrayInt32::WriteXML (nr_class, label, "label", o);
4368 
4369  if (probA) // regression has probA only
4370  XmlElementArrayDouble::WriteXML (numBinaryCombos, probA, "probA", o);
4371 
4372  if (probB)
4373  XmlElementArrayDouble::WriteXML (numBinaryCombos, probB, "probB", o);
4374 
4375  if (nSV)
4376  XmlElementArrayInt32::WriteXML (nr_class, nSV, "nSV", o);
4377 
4378  char buff[128];
4379 
4380  for (kkint32 i = 0; i < numSVs; ++i)
4381  {
4382  const FeatureVector& p = SV[i];
4383 
4384  KKStr svStr (512);
4385  svStr << p.ExampleFileName () << "\t" << p.NumOfFeatures ();
4386  for (kkint32 j = 0; j < nr_class - 1; j++)
4387  {
4388  SPRINTF (buff, sizeof (buff), "%0.15g", sv_coef[j][i]);
4389  svStr << "\t" << buff;
4390  }
4391 
4393  {
4394  svStr << "\t" << p.FeatureData (0);
4395  }
4396  else
4397  {
4398  for (kkint32 zed = 0; zed < p.NumOfFeatures (); zed++)
4399  svStr << "\t" << zed << ":" << p.FeatureData (zed);
4400  }
4401 
4402  svStr.WriteXML ("SupportVector", o);
4403  }
4404 
4405  XmlTag endTag ("Svm_Model", XmlTag::TagTypes::tagEnd);
4406  endTag.WriteXML (o);
4407  o << endl;
4408 } /* WriteXML */
void ExampleFileName(const KKStr &_exampleFileName)
Name of source of feature vector, ex: file name of image that the feature vector was computed from...
Definition: FeatureVector.h:75
HTMLReport &__cdecl endl(HTMLReport &htmlReport)
Definition: HTMLReport.cpp:240
double ** sv_coef
Definition: svm2.h:208
__int32 kkint32
Definition: KKBaseTypes.h:88
Kernel_Type kernel_type
Definition: svm2.h:132
kkint32 NumOfFeatures() const
Number of features in this FeatureVector.
FeatureNumList selFeatures
Definition: svm2.h:212
svm_parameter param
Definition: svm2.h:204
kkint32 nr_class
Definition: svm2.h:205
double * probB
Definition: svm2.h:211
KKStr Kernel_Type_ToStr(Kernel_Type kernelType)
Definition: svm2.cpp:580
kkint32 * nSV
Definition: svm2.h:217
bool Empty() const
Definition: KKStr.h:241
kkint32 SPRINTF(char *buff, kkint32 buffSize, const char *formatSpec, kkint16 right)
Definition: KKStr.cpp:162
void FeatureData(kkint32 _featureNum, float _featureValue)
Assign a value to a specific feature number for the feature vector.
void WriteXML(const KKStr &varName, std::ostream &o) const
Definition: KKStr.cpp:4420
kkint32 * label
Definition: svm2.h:216
FileDescPtr fileDesc
Definition: svm2.h:203
FeatureVectorList SV
Definition: svm2.h:207
kkint32 numSVs
Definition: svm2.h:206
KKStr SVM_Type_ToStr(SVM_Type svmType)
Definition: svm2.cpp:549
Represents a Feature Vector of a single example, labeled or unlabeled.
Definition: FeatureVector.h:59
void WriteXML(const KKStr &varName, std::ostream &o) const
Definition: FileDesc.cpp:875
void WriteXML(const KKStr &varName, std::ostream &o) const
double * probA
Definition: svm2.h:210
double * rho
Definition: svm2.h:209

Member Data Documentation

volatile bool SVM289_MFS::Svm_Model::cancelFlag

Definition at line 202 of file svm2.h.

Referenced by CancelFlag(), and Svm_Model().

double* SVM289_MFS::Svm_Model::dec_values

Definition at line 225 of file svm2.h.

Referenced by CleanUpMemory(), DecValues(), MemoryConsumedEstimated(), and Svm_Model().

FileDescPtr SVM289_MFS::Svm_Model::fileDesc

Definition at line 203 of file svm2.h.

Referenced by ReadXML(), Svm_Model(), and WriteXML().

double** SVM289_MFS::Svm_Model::pairwise_prob
double* SVM289_MFS::Svm_Model::prob_estimates
double* SVM289_MFS::Svm_Model::rho
FeatureNumList SVM289_MFS::Svm_Model::selFeatures

Definition at line 212 of file svm2.h.

Referenced by Svm_Model(), and WriteXML().

FeatureVectorList SVM289_MFS::Svm_Model::SV

Definition at line 207 of file svm2.h.

double** SVM289_MFS::Svm_Model::sv_coef
bool SVM289_MFS::Svm_Model::weOwnSupportVectors

Definition at line 220 of file svm2.h.

Referenced by ReadXML(), Svm_Model(), and SVM289_MFS::svm_train().


The documentation for this struct was generated from the following files: