Esempio n. 1
0
  void RandomTree::findProximity(DataFrame & data, std::vector<unsigned int> & proximity)
  {
    std::vector<unsigned int> proxVec;

    unsigned int dSize = data.getNumDataVectors();
    proxVec.resize(dSize);

    //Find out which node each vector is classified as 
    for(unsigned int i = 0; i < dSize; i++)
    {
      std::string resultClass;
      unsigned int nodeId = classifyDataVector(data.getDataVector(i), resultClass);

      proxVec[i] = nodeId;
    }

    for(unsigned int j = 0; j < dSize; j++)
    {
      unsigned int tempId = proxVec[j];
      for(unsigned int k = j; k < dSize;j++)
      {
        if(proxVec[k] == tempId)
        {
          proximity[j * dSize + k] += 1;
        }
      }
    }
  }
Esempio n. 2
0
  double RandomTree::computeErrorRate(DataFrame & data)
  {
    unsigned int correct = 0;
    unsigned int incorrect = 0;

    std::string result;

    for(unsigned int i = 0; i < _oobSet.size(); i++)
    {
      classifyDataVector(data.getDataVector(_oobSet[i]), result);

      if(result == data.getTrainingLabel(_oobSet[i]))
      {
        correct++;
      }
      else
      {
        incorrect++;
      }
    }

    return (double)incorrect / (double)(incorrect + correct);
  }