两个向量之间的欧式距离及radial-basis-functions(RBF)


template <class DataType1, class DataType2>
double EuclideanDistance(std::vector<DataType1> &inst1, std::vector<DataType2> &inst2) {
  if(inst1.size() != inst2.size()) {
    std::cout<<"the size of the vectors is not the same\n";
    return -1;
  }
  std::vector<double> temp;
  for(size_t i=0; i<inst1.size(); ++i) {
    temp.push_back(pow(inst1.at(i)-inst2.at(i), 2.0));
  }
  double distance=accumulate(temp.begin(), temp.end(), 0.0);
  distance=sqrt(distance);

  return distance;
}

The radial-basis-functions(RBF) technique consists of choosing a function F that has the form

  F(x)=Σwiφ(||x-xi||)

where {φ(||x-xi||)|i=1,2,...,N} is a set of N arbitrary (generally nonlinear) functions, known as 

radial-basis functions, and ||•|| denotes a norm that is usually Euclidean.

Much of the theory developed on RBF networks builds on the Gaussian function, an important member

of the class of  radial-basis functions. The Gaussian function may also be viewed as a kernel--hence the 

designation of the two-stage procedure based on the Gaussian function as a kernel method.


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM