作者apoil (apple)
站内Prob_Solve
标题[问题] support vector machine问题?
时间Mon Dec 17 00:30:41 2007
我最近在实作svm....用十笔资料作training data (例:(1,3,-1)而内积用一般内积但是
我将Ld作偏微解联立方程式a1,a2.....aN解不出来.....请各位对svm熟的大大....能否帮
我解答...谢谢
以下是我的程式码:
//---------------------------------------------------------------------------
#pragma hdrstop
#include <stdio.h>
//---------------------------------------------------------------------------
#pragma argsused
void main(int argc, char* argv[])
{
int i, j,k,m,l,g=0,p;
float s;
int k1[10][10];
int A[10][11];
int x[10][3] = { {1, 1, 1},
{1, 3, 1},
{-1,2, 1},
{-2,3, 1},
{-2,5, 1},
{4, 10, -1},
{5, 20, -1},
{5, -1, -1},
{10, 50, -1},
{9, 12, -1} };
float d,w[2],N,n;
float b[10][11];
for (i=0;i<10;i++){
for (j=0;j<10;j++){k1[i][j]=x[i][0]*x[j][0]+x[i][1]*x[j][1];}
}
printf("------------------------K(X1,X2)-----------------------------------");
printf("\n");
for (i=0;i<10;i++){
for (j=0;j<10;j++){printf(" %4d ", k1[i][j]);}
printf("\n");
}
printf("-------对Ld作偏微所得到之联立方程式(augmented
matrix)----------------");
printf("\n");
for (i=0;i<10;i++){
for (j=0;j<10;j++)
{
A[i][j]=(x[i][2]*x[j][2]*k1[i][j]+x[j][2]*x[i][2]*k1[j][i])*0.5;
}
}
for (j=0;j<10;j++){
A[j][10]=1;
}
for (i=0;i<10;i++){
for (j=0;j<11;j++){
printf(" %4.2d ", A[i][j]); }
printf("\n");
}
printf("---------------------求解
a1,a2,a3....a10------------------------------");
printf("\n");
for(i=0;i<10;i++){
for(j=0;j<11;j++)
{ b[i][j]=A[i][j];} }
for (i=0;i<2;i++){
d=b[i][i];
for(j=0;j<11;j++){
b[i][j]= (b[i][j]*1.0)/d ; }
for(k=i+1;k<10;k++){
s=b[k][i]*(-1) ;
for(l=0;l<11;l++){
b[k][l]=b[i][l]*s+b[k][l];}
}
for(k=i-1;k>=0;k--) {
s=b[k][i]*(-1) ;
for(l=0;l<11;l++){
b[k][l]=b[i][l]*s+b[k][l]; }
}
}
for (i=0;i<10;i++){
for (j=0;j<10;j++){
printf(" %6.1f ", b[i][j]);}
printf("\n");
}
for (i=0;i<10;i++){
printf(" %6.1f ", b[i][10]);
printf("\n");
}
printf("---------------------找出一个非零的
a--------------------------------");
printf("\n");
while(g<10){
if(b[g][10]!=0.000000){
printf("%d",g);
printf("\n");
p=g;
g++ ;
break;
}
g++ ;
}
printf("--------------------求
b-----------------------------------------------");
printf("\n");
for(i=0;i<10;i++){
n+=b[i][10]*x[i][2]*A[i][p];}
N=n-A[p][2] ;
printf("%f",N);
printf("\n");
printf("-----------------求 vector
W---------------------------------------") ;
printf("\n");
for(i=0;i<10;i++){
w[0] +=b[i][10]*x[i][2]*x[i][0] ;
w[1] +=b[i][10]*x[i][2]*x[i][1] ;
}
for(i=0;i<2;i++){
printf("%f",w[i]);
printf("\n");}
printf("-----------------optimal
hyperplane----------------------------------");
printf("\n");
printf("Wx+b=(%f,%f)x+%f",w[0],w[1],N);
getc(stdin);
}
//---------------------------------------------------------------------------
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.217.153.243
1F:推 yoco315:好难 QQ 完全看不懂 12/17 04:35
2F:推 H45:我需要 pseudocode.... 还有演算法及注解.... 12/17 22:59
4F:推 H45:有 C++ 和 Java 的 source code, 参考看看吧! 12/17 23:03