0

SVM トレーニングを終了し、X、Y のようなデータを取得しました。X は 2 次元のみの特徴マトリックスで、Y は分類ラベルです。データは 2 次元しかないため、決定境界を描画してサポート ベクターの表面を表示したいと思います。

私は Matlab で contouf を使用してこのトリックを実行していますが、関数の使用方法を理解するのは本当に難しいと感じています。

私は次のように書きました:

#1 try:    
contourf(X);

#2 try:
contourf([X(:,1) X(:,2) Y]);

#3 try:
Z(:,:,1)=X(Y==1,:);
Z(:,:,2)=X(Y==2,:);
contourf(Z);

これらすべてが正しく行われるわけではありません。また、Matlab のヘルプ ファイルを調べたところ、ほとんどが Z を関数として作成しているため、正しい Z 行列を作成する方法が本当にわかりません。

4

2 に答える 2

0

svmtrainBioinformatics Toolbox のおよびコマンドを使用しているsvmclassify場合、追加の入力引数 を使用するだけ(...'showplot', true)で、決定境界とサポート ベクターが強調表示された散布図が表示されます。

独自の SVM または libSVM などのサードパーティ ツールを使用している場合、おそらく次のことを行う必要があります。

  1. meshgridコマンドを使用して、2D 入力特徴空間に点のグリッドを作成します。
  2. トレーニング済みの SVM を使用してこれらの点を分類する
  3. を使用して点のグリッドと分類をプロットしcontourfます。

たとえば、一種の MATLAB の疑似コードで、入力機能が X1 および X2 と呼ばれるとします。

numPtsInGrid = 100;
x1Range = linspace(x1lower, x1upper, numPtsInGrid);
x2Range = linspace(x2lower, x2upper, numPtsInGrid);
[X1, X2] = meshgrid(x1Range, x2Range);
Z = classifyWithMySVMSomehow([X1(:), X2(:)]);
contourf(X1(:), X2(:), Z(:))

それが役立つことを願っています。

于 2013-02-18T16:44:57.013 に答える