アットウィキロゴ

bnoio

package anime;
 
import java.io.*;
 
 
public class pro {
int s,datanumber;
      String[] data=new String[70000];
     String[] t=new String[70000];
         String[] r=new String[70000];
             int[] point=new int[70000];
         int number_t,number_r;
          String[] dic_t=new String[70000];
              String[] dic_r=new String[70000];
 
               int[] code_t=new int[70000];
               int[] code_r=new int[70000];
 
               int number_group;
               double[][] p=new double[5000][11];
               int number_credit;
               double[][] q=new double[5000][11];
                double[][] mu=new double[11][11];
    double[][] sig=new double[11][11];
 
       double[][] mus=new double[11][11];
    double[][] sigs=new double[11][11];
    double[][] ps=new double[5000][11];
     double[][] qs=new double[5000][11];
 
              public static void main(String[] args) {
        pro te=new pro();
    }
 
    pro(){
 
        readx("data.csv");
 
        for(s=2;s<datanumber+1;s++){
        String[] x=data[s].split(",");
        point[s-1]=numx(x[0]);
        t[s-1]=x[1];
        r[s-1]=x[2];
        }
        datanumber=datanumber-1;
 
        number_t=0;
        int sx;
         for(s=1;s<datanumber+1;s++){
     int h=0;
 for(sx=1;sx<number_t+1;sx++){
 if(t[s].equals(dic_t[sx]))h=100;
 }    
 if(h<60)number_t=number_t+1;
 if(h<60)dic_t[number_t]=t[s];
 }
 
 number_r=0;        
 
 for(s=1;s<datanumber+1;s++){
 int h=0;
 for(sx=1;sx<number_r+1;sx++){
 if(r[s].equals(dic_r[sx]))h=100;
 }    
 if(h<60)number_r=number_r+1;
 if(h<60)dic_r[number_r]=r[s];
 }
 
 System.out.println(number_t);         
 System.out.println(number_r);         
 
 
  for(s=1;s<datanumber+1;s++){
 for(sx=1;sx<number_t+1;sx++){
 if(t[s].equals(dic_t[sx]))code_t[s]=sx;
 }    
 }         
 
 for(s=1;s<datanumber+1;s++){
 for(sx=1;sx<number_r+1;sx++){
 if(r[s].equals(dic_r[sx]))code_r[s]=sx;
 }    
 }            
 
 
 
 number_group=10;
 
 for(s=1;s<number_r+1;s++){
for(sx=1;sx<number_group+1;sx++){
p[s][sx]=Math.random();
 }
 }       
 
 
 
for(s=1;s<number_r+1;s++){
double p1=0;
for(sx=1;sx<number_group+1;sx++){
p1=p1+p[s][sx];
 }
for(sx=1;sx<number_group+1;sx++){
p[s][sx]=p[s][sx]/p1; 
}
}    
 
 
number_credit=4;
 
 
 for(s=1;s<number_t+1;s++){
for(sx=1;sx<number_credit+1;sx++){
q[s][sx]=Math.random();
 }
 }       
 
  for(s=1;s<number_t+1;s++){
double p1=0;
for(sx=1;sx<number_credit+1;sx++){
p1=p1+q[s][sx];
 }
for(sx=1;sx<number_credit+1;sx++){
q[s][sx]=q[s][sx]/p1; 
}
}    
 
 
for(s=1;s<number_group+1;s++){
for(sx=1;sx<number_credit+1;sx++){
mu[s][sx]=50+10*Math.random();
sig[s][sx]=10+3*Math.random();
}
} 
 int tr;
for(tr=1;tr<50;tr++){
 
 
toyo sub22=new toyo();
sub22.datanumber=datanumber;
sub22.number_group=number_group;
sub22.number_credit=number_credit;
sub22.point=point;
sub22.p=p;
sub22.q=q;
sub22.code_r=code_r;
sub22.code_t=code_t;
sub22.makedata();
mus=sub22.mus;
sigs=sub22.sigs;
 
for(s=1;s<number_group+1;s++){
if(p[1][s]>0.01)System.out.println(tr+","+s+","+p[1][s]);
}
 
nobu sub21=new nobu();
sub21.datanumber=datanumber;
sub21.number_group=number_group;
sub21.number_credit=number_credit;
sub21.point=point;
sub21.mu=mu;
sub21.sig=sig;
sub21.code_r=code_r;
sub21.code_t=code_t;
sub21.q=q;
sub21.number_r=number_r;
sub21.makedata();
ps=sub21.ps;
 
toku sub23=new toku();
sub23.datanumber=datanumber;
sub23.number_group=number_group;
sub23.number_credit=number_credit;
sub23.point=point;
sub23.mu=mu;
sub23.sig=sig;
sub23.code_r=code_r;
sub23.code_t=code_t;
sub23.p=p;
sub23.number_t=number_t;
sub23.makedata();
qs=sub23.qs;
 
for(s=1;s<number_t+1;s++){
for(sx=1;sx<number_credit+1;sx++){
q[s][sx]=qs[s][sx];
}   
}
 
 
for(s=1;s<number_r+1;s++){
for(sx=1;sx<number_group+1;sx++){
p[s][sx]=ps[s][sx];
}   
}
 
for(s=1;s<number_group+1;s++){
for(sx=1;sx<number_credit+1;sx++){
mu[s][sx]=mus[s][sx];
sig[s][sx]=sigs[s][sx];
}   
}
 
 
}
 
 
    }
 
     int numx(String str){
 
    int nx;
 
    nx=0;
 
 try{
 
    nx=Integer.parseInt(str);
 
 }catch (Exception e) {}
 
 return nx;
 
 
 
}
 
 
       void readx(String file){
 
String str;
BufferedReader br;  
int s;
s=0;
try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"UTF-8"));  
while((str = br.readLine()) != null) {  
s=s+1;
data[s]=str;  
}
br.close();
} catch (IOException e) {System.out.println(e);}  
 
datanumber=s;
 
} 
 
 
 
}
 
 
package anime;
 
 
public class nobu {
 
int[] point=new int[9000];
 
 int[] code_t=new int[70000];
               int[] code_r=new int[70000];
 
               int number_group;
               double[][] p=new double[5000][11];
                 double[][] ps=new double[5000][11];
               int number_credit;
               double[][] q=new double[5000][11];
                double[][] mu=new double[11][11];
    double[][] sig=new double[11][11];
 
 
 
    int datanumber;
     double[] pon=new double[70000];
 int number_r;
 
void makedata(){
 
    int tr;
 
for(tr=1;tr<number_r+1;tr++){    
 
int[] subx=new int[5000];
int subnumber;
int sx,s;
sx=0;
for(s=1;s<datanumber+1;s++){
if(code_r[s]==tr)sx=sx+1;
if(code_r[s]==tr)subx[sx]=s;
}
 
subnumber=sx;
 
 
int n;
int g1,c1;
for(g1=1;g1<number_group+1;g1++){
double py=1;
for(s=1;s<subnumber+1;s++){
sx=subx[s];
int t1=code_t[sx];
double sump=0;
for(c1=1;c1<number_credit+1;c1++){
double p4=q[t1][c1]*f(point[sx],mu[g1][c1],sig[g1][c1]);    
sump=sump+p4;
}
py=py*sump;
}
 
ps[tr][g1]=py;
}
 
 
double p7=0;
for(g1=1;g1<number_group+1;g1++){
p7=p7+ps[tr][g1];
}
 
 
for(g1=1;g1<number_group+1;g1++){
if(p7==0)ps[tr][g1]=1;
}
if(p7==0)p7=number_group;
 
for(g1=1;g1<number_group+1;g1++){
ps[tr][g1]=ps[tr][g1]/p7;
}
 
 
 
 
 
 
} 
 
 
 
}
 
    double f(double x1,double mux,double sigx){
double pi,f1,f2;
 
        pi=Math.PI;
 
        f2=Math.sqrt(2*pi*sigx*sigx);
        f1=-(x1-mux)*(x1-mux)/(2*sigx*sigx);
 
        return Math.exp(f1)/f2;
}  
}
 
 
package anime;
 
class toku{
 
int[] point=new int[9000];
 
 int[] code_t=new int[70000];
               int[] code_r=new int[70000];
 
               int number_group;
               double[][] p=new double[5000][11];
                 double[][] ps=new double[5000][11];
               int number_credit;
               double[][] qs=new double[5000][11];
                double[][] mu=new double[11][11];
    double[][] sig=new double[11][11];
 
 
 
    int datanumber;
     double[] pon=new double[70000];
 int number_t;
 
 
void makedata(){
 
    int tr;
 
for(tr=1;tr<number_t+1;tr++){    
 
int[] subx=new int[3000];
int subnumber;
int sx,s;
sx=0;
for(s=1;s<datanumber+1;s++){
if(code_t[s]==tr)sx=sx+1;
if(code_t[s]==tr)subx[sx]=s;
}
 
subnumber=sx;
int n;
int g1,c1;
for(c1=1;c1<number_credit+1;c1++){
double py=1;
for(s=1;s<subnumber+1;s++){
sx=subx[s];
int r1=code_r[sx];
double sump=0;
for(g1=1;g1<number_group+1;g1++){
double p4=p[r1][g1]*f(point[sx],mu[g1][c1],sig[g1][c1]);    
sump=sump+p4;
}
py=py*sump;
}
qs[tr][c1]=py;
}
 
 
double p7=0;
for(c1=1;c1<number_credit+1;c1++){
p7=p7+qs[tr][c1];
}
 
if(p7==0)p7=1;
 
for(c1=1;c1<number_credit+1;c1++){
qs[tr][c1]=qs[tr][c1]/p7;
}
 
 
 
 
} 
 
 
 
}
 
    double f(double x1,double mux,double sigx){
double pi,f1,f2;
 
        pi=Math.PI;
 
        f2=Math.sqrt(2*pi*sigx*sigx);
        f1=-(x1-mux)*(x1-mux)/(2*sigx*sigx);
 
        return Math.exp(f1)/f2;
}  
}
 
 
 
package anime;
 
 
public class toyo {
 
    int[] t=new int[9000];
int[] r=new int[9000];  
int[] point=new int[9000];
 
 int[] code_t=new int[70000];
               int[] code_r=new int[70000];
 
               int number_group;
               double[][] p=new double[5000][11];
               int number_credit;
               double[][] q=new double[5000][11];
                double[][] mu=new double[11][11];
    double[][] sig=new double[11][11];
 
      double[][] mus=new double[11][11];
    double[][] sigs=new double[11][11];
 
    int datanumber;
     double[] pon=new double[70000];
 
     void makedata(){
 
    int s,g1,c1;
  for(g1=1;g1<number_group+1;g1++){     
  for(c1=1;c1<number_credit+1;c1++){     
 
    for(s=1;s<datanumber+1;s++){
        int t1=code_t[s];    
        int r1=code_r[s]; 
  double p1=p[r1][g1];      
  double q1=q[t1][c1];       
  pon[s]=p1*q1;
  }
double a1=0; 
 double a2=0; 
for(s=1;s<datanumber+1;s++){
  a1=a1+pon[s]*point[s];
   a2=a2+pon[s];
  }
mus[g1][c1]=a1/a2;    
a1=0;
a2=0;
for(s=1;s<datanumber+1;s++){
  a1=a1+pon[s]*(point[s]-mus[g1][c1])*(point[s]-mus[g1][c1]);
  a2=a2+pon[s];
  }
sigs[g1][c1]=Math.sqrt(a1/a2);
 
 
 
 
  }}
 
 
 
 
 
 
}
 
 
 
}
 
最終更新:2016年08月16日 10:29