📄 distancemajority.java
字号:
package learner;
public class DistanceMajority implements Classifier {
int k;
Data data;
DistanceMajority(Data data, int k) {
this.data = data;
this.k = k;
}
public double test(Datastructure[] testdata) {
int good = 0;
for (int i = 0; i < testdata.length; i++)
if (classify(testdata[i].data) == testdata[i].label)
good++;
return (good * 100.0) / testdata.length;
}
public int classify(double testdata) {
int i,j=0;
double classified = 0;
Datastructure[] distance = data.distance(testdata);
for (i = 0; i < k; i++)
// if (distance[i].data!=0)
classified += distance[i+j].label * distance[i+j].data;
// else j++;
if (classified == 0)
classified += distance[++i+j].label * distance[i+j].data;
if (classified > 0)
return 1;
else
return -1;
}
public double[] crossvalidate(int folds) {
double average = 0;
double[] results = new double[folds];
for (int i = 0; i < folds; i++) {
data.split(i, folds);
results[i] = test(data.test);
}
average = average / folds;
return results;
}
public double findparameter() {
int k = 0;
double performance, bestperformance = 0;
data.split(1, 1);
for (int i = 0; i < data.test.length / 2; i++) {
DistanceMajority distance = new DistanceMajority(data, i);
performance = distance.test(data.test);
if (performance > bestperformance) {
bestperformance = performance;
k = i;
}
}
System.out.println("Best parameter found: " + k);
return k;
}
public Data getdata() {
return this.data;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -