📄 parzen.java
字号:
package learner;
public class Parzen implements Classifier {
Data data;
double smoothing = 0;
// ============================================================ Constructor
Parzen(Data data, double smoothing) {
this.data = data;
data.split(0, 1);
this.smoothing = smoothing;
}
// ------------------------------------------------------ Testing functions
public int classify(double testdata) {
double kernels1 = 0, kernels2 = 0;
for (int i = 0; i < data.training.length; i++) {
if (data.training[i].label == -1)
kernels1 += 1
/ (Math.sqrt(2 * Math.PI))
* Math.exp(-Math.pow((testdata - data.training[i].data)
/ smoothing, 2) / 2);
else
kernels2 += 1
/ (Math.sqrt(2 * Math.PI))
* Math.exp(-Math.pow((testdata - data.training[i].data)
/ smoothing, 2) / 2);
}
kernels1 = 1 / (data.c1 * smoothing) * kernels1;
kernels2 = 1 / (data.c2 * smoothing) * kernels2;
if (kernels1 / kernels2 < 1)
return 1;
else
return -1;
}
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 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() {
Datastructure[] temp;
double average = 0;
for (int i = 0; i < data.fulldata.length; i++) {
temp = data.distance(data.fulldata[i].data);
average += temp[20].data;
}
average = average / data.fulldata.length;
return average;
}
public Data getdata() {
return this.data;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -