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