2013-05-02 64 views
0

我試圖通過視覺研究分離超平面來比較我的數據上的各種分類器,如LDA和SVM等。繪製LDA的超平面(ClassificationDiscriminant)

目前我正在使用ClassificationDiscriminant作爲LDA分類器,與SVM可以在圖上繪製超平面不同,我無法找到繪製LDA分類器超平面的方法。

下面的腳本是怎麼產生的樣本數據,並把它使用了分類ClassificationDiscriminant:

%% Data & Label 
X = [randn(100,2); randn(150,2) + 1.5]; 
Y = [zeros(100,1); ones(150,1)]; 
%% Plot 
gscatter(X(:,1),X(:,2),Y); 
%% Train LDA Classifier 
C = ClassificationDiscriminant.fit(X,Y); 

任何人都可以請幫我從C繪製分離的超平面?任何建議都會有很大的幫助。此外,上面的示例是2D的,但是,我也有興趣將它們繪製在3D中(即樣本數據X有三列)。如果你能提供幫助,情況會更好。

回答

0

從Matlab的classify()文檔中的示例借用:

Class1 = 1; 
Class2 = 2; 
K = C.Coeffs(Class1,Class2).Const; 
L = C.Coeffs(Class1,Class2).Linear; 
f = @(x,y) K + [x y]*L; 

hold on; 
ezplot(f, [min(X(:,1)) max(X(:,1)) min(X(:,2)) max(X(:,2))]); 

注意,上面的例子中繪製2維空間兩個類之間的成對邊界。如果您有其他課程,則必須適當修改Class1Class2。我敢肯定,你可以找到一些額外的工作,將這個功能擴展到N維空間。

+0

非常感謝瑞安。 由於'classify'和'ClassificationDiscriminant'之間有一些區別(見[鏈接](http://stackoverflow.com/questions/14944812/difference-between-matlabs-classify-and-classificationdiscriminant)),我更多有興趣堅持後一個分類,以保持我以前的工作的完整性。有關從這個函數中找到超平面的進一步建議? – 2013-05-04 00:34:17

+0

您是否嘗試過*代碼?即使我將其基於'classify',我將其重寫爲與'ClassificationDiscriminant'一起使用。從字面上看,您所要做的就是複製並粘貼,並在您的初始代碼片段之後運行它。 – 2013-05-04 17:15:07