[問題] support vector machine問題?

看板Prob_Solve (計算數學 Problem Solving)作者 (apple)時間17年前 (2007/12/17 00:30), 編輯推噓3(301)
留言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
好難 QQ 完全看不懂
12/17 04:35, 1F

12/17 22:59, , 2F
我需要 pseudocode.... 還有演算法及註解....
12/17 22:59, 2F

12/17 23:01, , 3F

12/17 23:03, , 4F
有 C++ 和 Java 的 source code, 參考看看吧!
12/17 23:03, 4F
文章代碼(AID): #17PLAoHV (Prob_Solve)
文章代碼(AID): #17PLAoHV (Prob_Solve)