アットウィキロゴ

;lkjh

import java.io.*;

class pro{

String[] data=new String[50000];
int s,sx,datanumber,wordnumber;
int[][] sdata=new int[500][10000];
int[][] xx=new int[500][10000];
int[] y=new int[500];
int xp;
double[][] x=new double[500][10000];
double[] a=new double[21];
double b,q;
double[] v=new double[21];
int point;
double[] vec=new double[21];
double e,delta;

public static void main(String args[]){
pro test=new pro();
}

pro(){

readfile("svm.txt");

for(s=1;s<datanumber+1;s++){
String[] z=data[s].split(",");
wordnumber=z.length;
for(sx=0;sx<z.length;sx++){
sdata[s][sx+1]=Integer.parseInt(z[sx]);
}
}
System.out.println(wordnumber);
System.out.println(datanumber);


for(s=1;s<datanumber+1;s++){
xx[s][1]=sdata[s][35];
xx[s][2]=sdata[s][455];
xx[s][3]=sdata[s][446];
xx[s][4]=sdata[s][197];
xx[s][5]=sdata[s][849];
xx[s][6]=sdata[s][799];
xx[s][7]=sdata[s][251];
xx[s][8]=sdata[s][127];
xx[s][9]=sdata[s][174];
xx[s][10]=sdata[s][304];
xx[s][11]=sdata[s][614];
xx[s][12]=sdata[s][667];
xx[s][13]=sdata[s][537];
xx[s][14]=sdata[s][945];
xx[s][15]=sdata[s][1035];
xx[s][16]=sdata[s][1809];
xx[s][17]=sdata[s][1689];
xx[s][18]=sdata[s][1678];
xx[s][19]=sdata[s][1630];
xx[s][20]=sdata[s][306];
}

for(s=1;s<8;s++){
y[s]=1;
}

for(s=8;s<datanumber+1;s++){
y[s]=0;
}


for(s=1;s<datanumber+1;s++){
xp=0;
for(sx=1;sx<21;sx++){
xp=xp+xx[s][sx];
}
for(sx=1;sx<21;sx++){
x[s][sx]=(double)xx[s][sx]/xp;
}
}


for(sx=1;sx<21;sx++){
a[sx]=1;
}
b=1;

s=1;
System.out.println(g(a,b,s,x));
System.out.println(met(a,b,s,x));

point=makepoint();

q=-0.05;

for(sx=1;sx<21;sx++){
v[sx]=df(point,sx)+q*dp(sx);
}

e=0;
for(sx=1;sx<21;sx++){
e=e+v[sx]*v[sx];
}
e=Math.pow(e,0.5);


for(sx=1;sx<21;sx++){
vec[sx]=v[sx]/e;
System.out.println(vec[sx]);
}


delta=0.01;
for(sx=1;sx<21;sx++){
a[sx]=a[sx]+vec[sx]*delta;
System.out.println(a[sx]);
}



}

double dp(int n){
int m,h;
double d1;
d1=0;
for(m=1;m<datanumber+1;m++){
h=0;
if(g(a,b,m,x)>0)h=h+1;
if(y[m]<0)h=h+1;
if(h==2)d1=d1+a[n];
h=0;
if(g(a,b,m,x)<0)h=h+1;
if(y[m]>0)h=h+1;
if(h==2)d1=d1-a[n];
}
return d1;
}

double df(int m,int n){
double delta,m1,m2;
double[] alpha=new double[21];
delta=0.01;
for(sx=1;sx<21;sx++){
alpha[sx]=a[sx];
}
alpha[n]=alpha[n]+delta;
m1=met(a,b,m,x);
m2=met(alpha,b,m,x);
return (m2-m1)/delta;
}

int makepoint(){
double f1,minf;
int m,h,mx;
minf=999;
mx=0;
for(m=1;m<datanumber+1;m++){
f1=9999;
h=0;
if(g(a,b,m,x)>0)h=h+1;
if(y[m]>0)h=h+1;
if(h==2)f1=met(a,b,m,x);
h=0;
if(g(a,b,m,x)<0)h=h+1;
if(y[m]<0)h=h+1;
if(h==2)f1=met(a,b,m,x);
if(f1<minf)mx=m;
if(f1<minf)minf=f1;
}
return mx;
}


double met(double[] a,double b,int m,double[][] x){
double m1,m2,t,mt;
m1=b;
for(sx=1;sx<21;sx++){
m1=m1+a[sx]*a[sx];
}
m2=-g(a,b,m,x);
t=m2/m1;
mt=t*t*m1;
mt=Math.pow(mt,0.5);
return mt;
}


void readfile(String file){

String str;
BufferedReader br;
int s;
s=0;

try {
br = new BufferedReader(new InputStreamReader(new FileInputStream(file),"SJIS"));  
while((str = br.readLine()) != null) {  
s=s+1;
data[s]=str;  
}
br.close();
} catch (IOException e) {System.out.println(e);}
datanumber=s;

}

double g(double[] a,double b,int m,double[][] x){
double g1;
g1=b;
for (sx=1;sx<21;sx++){
g1=g1+a[sx]*x[m][sx];
}
return g1;
}





}
最終更新:2011年06月03日 22:28