package ch;
public class faststep {
double[][] x=new double[700][5];
int datanumber,number;
double[] bx=new double[4];
double[] alpha=new double[4];
double[][] beta=new double[4][4];
void makedata(){
int s;
int tr;
for(tr=1;tr<number+1;tr++){
for(s=1;s<number+1;s++){
bx[s]=2*Math.random()-1;
}
double maxa=-999*number;
double mina=999*number;
int sx;
for(s=1;s<datanumber+1;s++){
double z=0;
for(sx=1;sx<number+1;sx++){
z=z+bx[sx]*x[s][sx];
}
if(z>maxa)maxa=z;
if(z<mina)mina=z;
}
double a1=-mina;
double a2=-maxa;
double a3=0;
int mode=0;
while(mode<50){
a3=(a1+a2)/2;
int c1=count(a3);
if(c1>datanumber/2)a1=a3;
if(c1<datanumber/2)a2=a3;
double m1=(c1-datanumber/2)*(c1-datanumber/2);
if(m1<1)mode=1000;
mode=mode+1;
}
alpha[tr]=a3;
for(s=1;s<number+1;s++){
beta[tr][s]=bx[s];
}
}
}
int count(double a1){
int s,sx,c1;
c1=0;
for(s=1;s<datanumber+1;s++){
double z=a1;
for(sx=1;sx<number+1;sx++){
z=z+bx[sx]*x[s][sx];
}
double z1=1/(1+Math.exp(-z));
if(z1>0.5)c1=c1+1;
}
return c1;
}}
最終更新:2016年12月27日 18:51