[問題] support vector machine問題?
看板Prob_Solve (計算數學 Problem Solving)作者apoil (apple)時間17年前 (2007/12/17 00:30)推噓3(3推 0噓 1→)留言4則, 2人參與討論串1/1
我最近在實作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
推
12/17 04:35, , 1F
12/17 04:35, 1F
推
12/17 22:59, , 2F
12/17 22:59, 2F
→
12/17 23:01, , 3F
12/17 23:01, 3F
推
12/17 23:03, , 4F
12/17 23:03, 4F
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章