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