2013-05-02 4 views
0

J'essaie de comparer différents classificateurs sur mes données, telles que LDA et SVM, etc., en examinant visuellement l'hyperplan de séparation. Actuellement, j'utilise ClassificationDiscriminant comme classificateur LDA, contrairement à SVM qui peut dessiner l'hyperplan sur le graphique, je n'ai pas trouvé de moyen de tracer l'hyperplan du classificateur LDA.Tracer l'hyperplan de LDA (ClassificationDiscriminant)

Le script suivant est ainsi que je produis des données d'échantillon et l'obtenir été classé en utilisant 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); 

Quelqu'un peut-il s'il vous plaît aidez-moi à tracer l'hyperplan de séparation de C? Toute suggestion serait une aide précieuse.

En outre, l'échantillon ci-dessus est en 2D, mais je suis également intéressé par les tracer en 3D (c'est-à-dire que les données d'échantillon X ont trois colonnes). Ce serait plus génial si vous pouviez aider.

Répondre

0

emprunt de l'exemple dans la documentation de 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))]); 

Notez que l'exemple ci-dessus trace la frontière entre les deux classes par paires dans deux dimensions d'espace. Si vous avez des classes supplémentaires, vous devrez modifier Class1 et Class2 de manière appropriée. Je suis sûr qu'avec un travail supplémentaire, vous pouvez trouver une extension de cette fonction à l'espace N dimensionnel.

+0

Merci beaucoup Ryan. Comme il y a une différence entre 'classify' et' ClassificationDiscriminant' (vu dans [link] (http://stackoverflow.com/questions/14944812/difference-between-matlabs-classify-and-classificationdiscriminant)), je suis plus intéressé à coller avec le dernier classificateur pour garder l'intégrité avec mon travail précédent. Toute autre suggestion sur la recherche d'hyperplan de cette fonction? –

+0

Avez-vous * essayé * le code? Même si je me suis basé sur 'classifier', je l'ai réécrit pour travailler avec' ClassificationDiscriminant'. Littéralement tout ce que vous avez à faire est de copier et coller et exécutez-le en suivant votre extrait de code initial. –