if (files.size() != bow.size()){
System.err.println("Bow and files of different size !!!! STOPING ...");
return null;
}
DoubleGaussChi2 gaussKernel = new DoubleGaussChi2(gamma);
double distmean = 0.0;
if (bComptuteMeanDist){
int cpt = 0;
for (int i=0; i < files.size(); i++ ){
for (int j = i + 1; j < files.size(); j++ ){
distmean += gaussKernel.distChi2(bow.get(i).get(0), bow.get(j).get(0));
cpt++;
}
}
distmean = distmean / ((double)cpt);
if (distmean < Double.MIN_VALUE)
System.err.println("distmean = " + distmean + " to small - pathological signatures !!!!!! STOPING ...");
gamma = 1/distmean;
gaussKernel.setGamma(gamma);
System.out.println("distmean = " + distmean + " gamma = " + gamma);
}
ThreadedSumKernel<ArrayList<double[]>> tsk = new ThreadedSumKernel<ArrayList<double[]>>();