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

MATLAB Discussion :

Problèmes lors de la classification hiérarchique ascendante


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Femme Profil pro
    Inscrit en
    Mai 2011
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 21
    Points : 16
    Points
    16
    Par défaut Problèmes lors de la classification hiérarchique ascendante
    Bonjour,
    J'ai des fichiers txt de tailles supérieures 250000 lignes et 17 colonnes.
    Et, j'aimerai lancer la classification hiérarchique ascendante (CHA) tout d'abord sur ces fichiers un par un.
    Mais j'obtiens l'erreur suivante pour un fichier de 28 ligne comme premier test:
    Columns 365 through 378
    
       NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN   NaN
    Warning: ward's linkage specified with non-Euclidean dissimilarity matrix. 
    > In linkage at 171

    Le fichier comporte les lignes ayant la forme suivante:
    0 0 5.7487e+007 1 709.679 3.66707e+008 7 562.07 2.37053e+009 1 765.347 1.82988e+010 1 464.948 1.82988e+010 1 464.948 
    Est ce qu'à cause des valeurs exponentiels?


    Par la suite, je veux lancer la classification pour n fichiers et construire par la suite une matrice comportant les données de n fichiers pour pouvoir lancer la CHA sur n fichiers.
    Mais sûrement j'aurais le problème de mémoire pour pdist.
    Y a t il une solution pour remédier à ce problème?
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
     
    clear all
    close all
    clc
    variablesAtester = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17];
    files=dir('C:/MATLAB/DataClassification/d*.txt');
    nbrfiles = size(files);
    for cptnbrfiles=1:nbrfiles(1,1)
    fileName = files(cptnbrfiles,1).name;
    pathFile = strcat('C:/DataClassification/',fileName);
    [pathstr, name, ext] = fileparts(pathFile);
     
    %------ load data -----
    features_data = load (pathFile, '-ascii');
    dim_features = size(features_data);
    numb_pixels = dim_features(1,1);
     
    newPixel = 1;
    features_data_clean = zeros(numb_pixels,17);
    for pixels = 1:numb_pixels
        if((features_data(pixels,variablesAtester(4))==0) && (features_data(pixels,variablesAtester(5))==0))
            features_data_clean(newPixel,:) = features_data(pixels,variablesAtester); %-- Alors on le rajoute au nouveau tableau clean
            newPixel = newPixel+1;
        end
    end
     
    features_norm = zeros(size(features_data_clean));
    %------ Normaliser - Centrer reduire les donnees -------
    for i=1:15
        features_norm(:,i) = (features_data_clean(:,i)-mean(features_data_clean(:,i)))/sqrt(var(features_data_clean(:,i)));
    end
     
    dim = size(features_norm);
    pixelsNumber = dim(1,1);
    Wgts = [1/17,1/17,1/17,1/17,1/17,1/17,1/17,1/17,1/17,1/17,1/17,1/17,1/17,1/17,1/17,1/17,1/17]; %-- Poids pour la ponderation des variables
    weuc = @(XI,XJ,W)(sqrt(bsxfun(@minus,XI,XJ).^2 * W'));
    %--------- distance between observations -- dist = euclid, mahalanobis, correlation or chebychev
    Y = pdist(features_norm, @(Xi,Xj) weuc(Xi,Xj,Wgts))
     
    %-------- Create hierarchical cluster tree ------
    Z = linkage(Y,'ward');
     
    inc  = inconsistent(Z)
     
    %-------- display the hierarchical tree ------
    H = dendrogram(Z,'colorthreshold',2.3)
     
    %utiliser l'inconsistance comme la critère pour la partitionnement
    %	clus = cluster(tree, 'cutoff', cutoff, 'depth', 5);
    C = cluster(Z, 'maxclust', 20, 'depth', 5)
    end
    Merci,
    Cordialement,
    Maroua

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ta variable Y (et donc features_norm) semble comporter des valeurs NaN, ce qui te donne ce message Warning.

Discussions similaires

  1. Réponses: 0
    Dernier message: 08/05/2015, 00h46
  2. Classification hiérarchique ascendante
    Par manel_elloumi dans le forum Débuter avec Java
    Réponses: 7
    Dernier message: 25/04/2013, 18h02
  3. classification hiérarchique ascendante
    Par helmouch dans le forum MATLAB
    Réponses: 11
    Dernier message: 02/05/2011, 10h20
  4. Problème de classification hiérarchique
    Par carine974 dans le forum R
    Réponses: 0
    Dernier message: 12/02/2009, 16h54
  5. Réponses: 2
    Dernier message: 17/08/2003, 20h07

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