IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Téléchargez Discussion :

Observer des points dans l'espace kernel (gaussien)


Sujet :

Téléchargez

  1. #1
    Membre averti

    Profil pro
    Étudiant
    Inscrit en
    Décembre 2004
    Messages
    499
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2004
    Messages : 499
    Points : 422
    Points
    422
    Par défaut Observer des points dans l'espace kernel (gaussien)
    bonsoir, obnubilé que je suis en ce moment par les noyaux gaussiens, je mets un petit code qui montre comment dans kernel pca les données deviennent linéairement séparables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    %% fabrication des donnees jouet 2D : un cercle et un segment
     
    N = 128; % 128 points
    tmp = exp(i*rand(N/2,1)*2*pi)*2;
    Xcercle = [real(tmp),imag(tmp)]  + randn(N/2,2)*0.1;
    Xtrait = rand(N/2,1)*[1,-0.5];
    X = [Xcercle; Xtrait];
     
    %% affichage en 2D
    subplot(211);
    plot(Xcercle(:,1),Xcercle(:,2),'+b');
    hold on;
    plot(Xtrait(:,1),Xtrait(:,2),'or');
    hold off;
     
     
    %% calcul de la matrice des produits scalaires (application de la fonction noyau)
    matDist = repmat(sum(X.^2,2),1,N) +  repmat(sum(X.^2,2),1,N)' - X*X';
    sigma2 = 400;
    K = exp(-matDist / (2*sigma2));
     
     
    %% diagonalisation de K pour récupérer les points dans l'espace de resdescription K = Y * Y'
     
    [P,Lambda] = eig(K);
    % c'est pas precis, certain lambda sont < 0 !
    Y = P * max(Lambda,0).^0.5;
     
    % projection dans PCA des points de Y
    PCAMat = princomp(Y);
    Ypca = Y * PCAMat;
     
    %% affichage dans l'espace kernel PCA
    subplot(212);
    plot3(Ypca(1:N/2,1),Ypca(1:N/2,2),Ypca(1:N/2,3),'+b');
    hold on;
    plot3(Ypca(N/2+1:N,1),Ypca(N/2+1:N,2),Ypca(N/2+1:N,3),'or');
    hold off;
     
    %% affichage de la matrice de similarité
    figure; imagesc(K);
    Images attachées Images attachées   

Discussions similaires

  1. Relier deux points dans l'espace par des segments perpendiculaires
    Par Poupi0 dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 27/04/2010, 15h06
  2. Relier des points dans une paintbox par une courbe
    Par Benjikos dans le forum Débuter
    Réponses: 4
    Dernier message: 19/08/2007, 13h06
  3. Problème d'ordre des points dans un Tchart
    Par pasqual dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2007, 12h04
  4. Réponses: 4
    Dernier message: 11/06/2004, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo