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

Calcul scientifique Python Discussion :

Méthode de classification


Sujet :

Calcul scientifique Python

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 6
    Points : 9
    Points
    9
    Par défaut Méthode de classification
    Bonsoir,

    Je suis actuellement entrain de découvrir le machine learning et j'essaye de résoudre un problème simple a 8 features (8D) pour environ 400 observation. J'ai commencer par réduire la taille de mon problème grâce a une ACP pour distinguer des nuages de points. J'aimerai maintenant appliquer un SVM afin de pouvoir faire des expérimentation avec de nouveau jeu de donnée et déterminer leurs classes.
    Le probleme c'est que même avec ma réduction de dimension je n'ai pas eu un problème totalement linéairement séparable, j'ai des outliers et donc ma SVM est complétement décaler.

    Nom : Capture1.PNG
Affichages : 54
Taille : 21,2 Ko
    Entropie.xlsx (fichier donnée liée au code)

    Auriez-vous une idée pour pénalisez les outliers ou autre afin d'avoir une bonne SVM pour prédire des résultat de classification par la suite.

    Voici mon code
    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    import matplotlib.pyplot as plt
    import pandas as pd
    import numpy as np
     
    # In[1] : Importer les données
     
    data = pd.read_excel('Entropie.xlsx')
    temp = data[data.label != 1] # suppression d'un label pour avoir pour avoir un  SVM a 2 classe
    df = temp.drop(['label'], axis = 1)
    X = df.values
    categ = temp['label']
     
    # In[2]: Standardisation des données
    from sklearn import preprocessing
    std_scale = preprocessing.StandardScaler().fit(X)
    X_scaled = std_scale.transform(X)
     
    # In[3]: Calcul des composantes pricipales
    from sklearn import decomposition
    pca = decomposition.PCA(n_components=2) # Choix du nombre de composante principal
    pca.fit(X_scaled)
     
    # In[6]: projeter X sur les composantes principales
    X_projected = pca.transform(X_scaled)
     
    # In[7]: afficher chaque observation
    plt.figure()
    plt.scatter(X_projected[:, 0], X_projected[:, 1], s=10,
        c=temp.get('label'), cmap='viridis')
     
    plt.xlabel('PC 1')
    plt.ylabel('PC 2')
    plt.xlim([-3, 6])
    plt.ylim([-3, 4])
    plt.colorbar()
    plt.title('Classification selon composante principal')
     
    # Ajout des 2 composante principal au dataset "temp"
    temp['PC1'] = X_projected[:,0]
    temp['PC2'] = X_projected[:,1]
     
     
    # In[8]: SVM 
    from sklearn import svm
    import seaborn as sns;
    #sns.set(font_scale=1.2)
     
    # In[4]: Fit the SVM model with a Low C
    model = svm.SVC(kernel='linear', C = 2**-5)
    model.fit(X_projected, categ)
     
    # In[5]: Visualize Results
    # Get the separating hyperplane
    w = model.coef_[0]
    a = -w[0] / w[1]
    xx = np.linspace(-3, 5)
    yy = a * xx - (model.intercept_[0]) / w[1]
     
    # Plot the parallels to the separating hyperplane that pass through the support vectors
    b = model.support_vectors_[0]
    yy_down = a * xx + (b[1] - a * b[0])
    b = model.support_vectors_[-1]
    yy_up = a * xx + (b[1] - a * b[0])
     
    # Plot the hyperplane
    sns.lmplot('PC1', 'PC2', data=temp, hue='label', palette='Set1', fit_reg=False, scatter_kws={"s": 20})
    plt.plot(xx, yy, linewidth=2, color='black');
    plt.ylim([-5,5])
     
    # In[6]: Look at the margins and support vectors
    sns.lmplot('PC1', 'PC2', data=temp, hue='label', palette='Set1', fit_reg=False, scatter_kws={"s": 20})
    plt.plot(xx, yy, linewidth=2, color='black')
    plt.plot(xx, yy_down, 'k--')
    plt.plot(xx, yy_up, 'k--')
    plt.scatter(model.support_vectors_[:, 0], model.support_vectors_[:, 1], s=80, facecolors='none');
    plt.ylim([-5,5])
    Cordialement,

    LarleKain.

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : juin 2019
    Messages : 6
    Points : 9
    Points
    9
    Par défaut
    Bonjour,

    J'ai finalement résolu mon problème en trifouillant un peu dans sur le site scikit-learn dans la rubrique SVM

    Cordialement,

    LarleKain.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparatifs méthodes de classification images médicales
    Par blackmisery dans le forum Traitement d'images
    Réponses: 73
    Dernier message: 09/02/2012, 21h36
  2. Réponses: 4
    Dernier message: 09/12/2011, 19h23
  3. Inventaire des méthodes de classification
    Par joyeux_lapin13 dans le forum SAS STAT
    Réponses: 2
    Dernier message: 29/05/2010, 23h10
  4. Méthodes de Classification
    Par medchok dans le forum MATLAB
    Réponses: 4
    Dernier message: 18/03/2009, 12h59
  5. Méthode de classification en 3D
    Par adriangarello dans le forum Images
    Réponses: 4
    Dernier message: 03/07/2008, 12h55

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