两个向量之间的欧式距离及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.

posted @ 2018-08-21 19:52  东宫得臣  阅读(1657)  评论(0编辑  收藏  举报