System.out.print("Training Knn...\n");
time_mark=System.currentTimeMillis();
SparseVectorSimilarity sim=new SparseVectorSimilarity();
pp.removeTargetPipe();
KNNClassifier knn=new KNNClassifier(trainset, pp, sim, af, 9);
af.setStopIncrement(true);
ItemFrequency tf=new ItemFrequency(trainset);
FeatureSelect fs=new FeatureSelect(tf.getFeatureSize());
long time_train=System.currentTimeMillis()-time_mark;
System.out.print("..Training compelte!\n");
System.out.print("Saving model...\n");
knn.saveTo(knnModelFile);
knn = null;
System.out.print("..Saving model compelte!\n");
System.out.print("Loading model...\n");
knn =KNNClassifier.loadFrom(knnModelFile);
System.out.print("..Loading model compelte!\n");
System.out.println("Testing Knn...\n");
int count=0;
fs.fS_CS(tf, 0.1f);
knn.setFs(fs);
for(int i=0;i<testset.size();i++){
Instance data = testset.getInstance(i);
Integer gold = (Integer) data.getTarget();
Predict<String> pres=(Predict<String>) knn.classify(data, Type.STRING, 3);
String pred_label=pres.getLabel();
String gold_label = knn.getLabel(gold);
if(pred_label.equals(gold_label)){
//System.out.println(pred_label+" : "+testsetknn.getInstance(i).getTempData());
count++;
}
else{
// System.err.println(gold_label+"->"+pred_label+" : "+testset.getInstance(i).getTempData());
// for(int j=0;j<3;j++)
// System.out.println(pres.getLabel(j)+":"+pres.getScore(j));
}
}
int knnCount=count;
System.out.println("..Testing Knn Complete");
System.out.println("Knn Precision:"+((float)knnCount/testset.size())+"("+knnCount+"/"+testset.size()+")");
knn.noFeatureSelection();
int flag=0;
long time_sum=0,time_times=0;
float[] percents_cs=new float[]{1.0f,0.9f,0.8f,0.7f,0.5f,0.3f,0.2f,0.1f};
int[] counts_cs=new int[10];
for(int test=0;test<percents_cs.length;test++){
long time_st=System.currentTimeMillis();
System.out.println("Testing Bayes"+percents_cs[test]+"...");
if(test!=0){
fs.fS_CS(tf, percents_cs[test]);
knn.setFs(fs);
}
count=0;
for(int i=0;i<testset.size();i++){
Instance data = testset.getInstance(i);
Integer gold = (Integer) data.getTarget();
Predict<String> pres=(Predict<String>)knn.classify(data, Type.STRING, 3);
String pred_label=pres.getLabel();
String gold_label = knn.getLabel(gold);
if(pred_label.equals(gold_label)){
count++;
}
else{
}
}
counts_cs[test]=count;
long time_ed=System.currentTimeMillis();
time_sum+=time_ed-time_st;
time_times++;
System.out.println("Knn Precision("+percents_cs[test]+"):"
+((float)count/testset.size())+"("+count+"/"+testset.size()+")"+" "+(time_ed-time_st)+"ms");
}
knn.noFeatureSelection();
float[] percents_csmax=new float[]{1.0f,0.9f,0.8f,0.7f,0.5f,0.3f,0.2f,0.1f};
int[] counts_csmax=new int[10];
for(int test=0;test<percents_csmax.length;test++){
long time_st=System.currentTimeMillis();
System.out.println("Testing Bayes"+percents_csmax[test]+"...");
if(test!=0){
fs.fS_CS_Max(tf, percents_cs[test]);
knn.setFs(fs);
}
count=0;
for(int i=0;i<testset.size();i++){
Instance data = testset.getInstance(i);
Integer gold = (Integer) data.getTarget();
Predict<String> pres=(Predict<String>)knn.classify(data, Type.STRING, 3);
String pred_label=pres.getLabel();
String gold_label = knn.getLabel(gold);
if(pred_label.equals(gold_label)){
count++;
}
else{
}
}
counts_csmax[test]=count;
long time_ed=System.currentTimeMillis();
time_sum+=time_ed-time_st;
time_times++;
System.out.println("Knn Precision("+percents_csmax[test]+"):"
+((float)count/testset.size())+"("+count+"/"+testset.size()+")"+" "+(time_ed-time_st)+"ms");
}
knn.noFeatureSelection();
float[] percents_ig=new float[]{1.0f,0.9f,0.8f,0.7f,0.5f,0.3f,0.2f,0.1f};
int[] counts_ig=new int[10];
for(int test=0;test<percents_ig.length;test++){
long time_st=System.currentTimeMillis();
System.out.println("Testing Bayes"+percents_ig[test]+"...");
if(test!=0){
fs.fS_IG(tf, percents_cs[test]);
knn.setFs(fs);
}
count=0;
for(int i=0;i<testset.size();i++){
Instance data = testset.getInstance(i);
Integer gold = (Integer) data.getTarget();
Predict<String> pres=(Predict<String>)knn.classify(data, Type.STRING, 3);
String pred_label=pres.getLabel();
String gold_label = knn.getLabel(gold);
if(pred_label.equals(gold_label)){
count++;
}
else{