アットウィキロゴ

さいしょp

package hanbun;
 
 
public class pro {
 
 double[][] x=new double[200][5];
 double[][] xs=new double[200][5];
    int datanumber,number;
    double[] a=new double[5];
    double[] b=new double[5];
 
     double[][] bs=new double[5][21];
     double[] as=new double[21];
      double[] bx=new double[21];
 
      double[] alpha=new double[5];
        double[][] beta=new double[5][5];
 
    public static void main(String[] args) {
        pro test=new pro();
    }
    pro(){
 
        datanumber=100;
        number=2;
 
        int s;
        for(s=1;s<datanumber+1;s++){
        x[s][1]=5*Math.random()+4;
        x[s][2]=2*Math.random()-3;
        }
 
 
      fasrstep sub=new fasrstep();
      sub.x=x;
      sub.number=number;
      sub.datanumber=datanumber;
      sub.makedata();
      alpha=sub.alpha;
      beta=sub.beta;
 
      System.out.println(alpha[1]);
      System.out.println(alpha[2]);
      System.out.println(beta[1][1]);
      System.out.println(beta[1][2]);
        System.out.println(beta[2][1]);
      System.out.println(beta[2][2]);
 
 
    }}
 
 
 
package hanbun;
 
 
public class fasrstep {
 
 double[][] x=new double[200][5];
 double[][] xs=new double[200][5];
    int datanumber,number;
    double[] a=new double[5];
    double[] b=new double[5];
 
     double[][] bs=new double[5][21];
     double[] as=new double[21];
      double[] bx=new double[21];
 
      double[] alpha=new double[5];
        double[][] beta=new double[5][5];
 
 
    void makedata(){
 
 
        int tr,s;
        for(tr=1;tr<number+1;tr++){
        double minx=x[1][tr];
        double maxx=x[1][tr];
        for(s=1;s<datanumber+1;s++){
        if(x[s][tr]>maxx)maxx=x[s][tr];
        if(x[s][tr]<minx)minx=x[s][tr];
        }
 
        b[tr]=1/(maxx-minx);
        a[tr]=-minx/(maxx-minx);
 
        for(s=1;s<datanumber+1;s++){
        xs[s][tr]=(x[s][tr]-minx)/(maxx-minx);
        }
 
        }
 
 
 
        for(tr=1;tr<number+1;tr++){
 
    for(s=1;s<number+1;s++){
    bx[s]=Math.random();
    }
 
    double den=datanumber/2;
 
  int k;   
  double a1=number;
  double a2=-number;
 
  double a3=0;
  for(k=1;k<50;k++){  
 a3=(a1+a2)/2; 
  int c1=count(a3);
  if(c1>den)a1=a3;
  if(c1<den)a2=a3;
 
  }
 
 
as[tr]=a3;
for(s=1;s<number+1;s++){
bs[tr][s]=bx[s];
        }
 
        }        
 
 
for(tr=1;tr<number+1;tr++){        
alpha[tr]=as[tr];
for(s=1;s<number+1;s++){
alpha[tr]=alpha[tr]+bs[tr][s]*a[s];      
}
for(s=1;s<number+1;s++){
beta[tr][s]=bs[tr][s]*b[s];      
}
}        
 
 
 
 
 
 
    }
    int count(double ax){
 
          int s,sx;
 
          int n=0;
    for(s=1;s<datanumber+1;s++){
    double z1=ax;
 for(sx=1;sx<number+1;sx++){
    z1=z1+bx[sx]*xs[s][sx];
    }
    double z2=1/(1+Math.exp(-z1));
    if(z2>0.5)n=n+1;
    }
 
 
 
 
 return n;   
 
}
}
最終更新:2016年12月25日 20:35