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

Calcul scientifique Python Discussion :

fonction curve_fit de scipy.optimize


Sujet :

Calcul scientifique Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2020
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2020
    Messages : 13
    Par défaut fonction curve_fit de scipy.optimize
    Bonjour
    j'utilise python pour sa puissance d'analyse et d'affiche graphique, mais je ne maîtrise pas tout.
    j'analyse une série de données dont la distribution par seaborn.distplot indique deux populations d'apparence Gaussiennes comme l'indique le graphe.
    P38-1 G3 Syracuse temps de vol 1à5000 400items (distplot)#168.pdf
    je cherche la moyenne et les paramètres de deux distributions ainsi que les coeff de corrélation à une Gaussienne en appliquant le code suivant, inspiré d'un post, à liste des données RR.
    post =https://stackoverflow.com/questions/...of-data-python
    le fichier de donnée csv est ici : www.grosfichiers.com/ZtCuG48mX3x

    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
     
    import csv
    import matplotlib.pyplot as plt
    import numpy as np
    import seaborn as sns
    from scipy.optimize import curve_fit
    from pandas import DataFrame
     
    DATA_FIC = []
    DATA_FIC.append('Temps de vol 1à5000 300 Items.csv')
    data = [] # données temps de vol en csv 
     
    DEB = 0
    FIN = len(DATA_FIC)
     
    data = []
    with open(DATA_FIC[0],newline='') as f2: # lire_csv
        readcsv = csv.reader(f2)
        for row in readcsv:
            data.append(row)
    LG = len (data[0]) # la liste [1] qui contient les temps de vol en texte
    RR = [] # liste des temps de vol en int
    for i in range(LG) :
        N = int(data[0][i])
        RR.append(N)
     
    nbins=50
     
    #-----------------------------------------------
    #distribution avec seaborn
    #-----------------------------------------------
    DFRR = DataFrame (RR,columns=['Temps de vol']) # dataframe_vers_liste
    TITRE = DATA_FIC[0]+ str(' (sns.distplot)')
    plt.figure()
    plt.title(TITRE)
    xlabel='temps de vol';plt.xlabel(xlabel)
    ylabel='fréquence';plt.ylabel(ylabel)
    plt.xlim(-10,200)
     
    sns.distplot(DFRR,nbins)
     
     
    #-----------------------------------------------
    # analyse bimodale, produit Moy, ec pour chaque série
    #-----------------------------------------------
    plt.figure()
     
    y,x,_=plt.hist(RR,nbins,alpha=.3,label='data') # distribution des données
     
    x = x[0:len(x)-1]
     
    def gauss(x,mu,sigma,A):
        return A*np.exp(-(x-mu)**2/2/sigma**2)
     
    def bimodal(x,mu1,sigma1,A1,mu2,sigma2,A2):
        return gauss(x,mu1,sigma1,A1)+gauss(x,mu2,sigma2,A2)
    #-----------------------------------------------
    #expected=(1,.2,250,2,.2,125)  # ligne occultée
    params,cov=curve_fit(bimodal,x,y) # x,y,expected remplacé par x,y
    sigma=np.sqrt(np.diag(cov))
    TITRE = DATA_FIC[0]+ str(' (bimodal)')
    plt.title(TITRE)
    xlabel='temps de vol';plt.xlabel(xlabel)
    ylabel='Effectif';plt.ylabel(ylabel)
    plt.xlim(-10,200)
    #-----------------------------------------------
    plt.plot(x,bimodal(x,*params),color='red',lw=3,label='model') # dist. du modele
    plt.legend()
    je ne comprends pas l'underscore dans : y,x,_=plt.hist(RR,nbins,alpha=.3,label='data')
    j'obtiens les paramètres des 2 distributions en supprimant expected

    params : [118.43735482 29.5634689 145.61003059 38.58313203 18.00092132 295.60971648]
    où je comprends mu2 = 38 mu1 = 118 ce qui correspond au gaphe, mais quid des autres nombres ?

    sigma : [ 2.67719315 2.96249925 9.96313864 1.03867182 1.06554962 12.50581778]
    je ne m'y retrouve pas dans les sigma

    Merci d'avance de votre aide

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par serpipanton Voir le message
    je ne comprends pas l'underscore dans : y,x,_=plt.hist(RR,nbins,alpha=.3,label='data')
    j'obtiens les paramètres des 2 distributions en supprimant expected
    Pourquoi ne pas commencer par lire la documentation de hist et de curve_fit?

    Çà va expliquer ce que çà retourne, les paramètres à passer, ceux qui sont par défaut,...

    note: '_' est un nom de variable valide.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [Python 2.X] scipy.optimize.curve_fit avec une fonction log et echelle log
    Par Suntory dans le forum Calcul scientifique
    Réponses: 6
    Dernier message: 06/06/2019, 09h05
  2. [optimize.curve_fit] fonction avec liste de plusieurs paramètres
    Par Kalhou dans le forum Calcul scientifique
    Réponses: 0
    Dernier message: 23/06/2015, 18h40
  3. fonction brute de scipy
    Par membreComplexe12 dans le forum Général Python
    Réponses: 0
    Dernier message: 19/03/2015, 02h06
  4. scipy.optimize.fsolve probleme de dimension
    Par mattthieu dans le forum Calcul scientifique
    Réponses: 3
    Dernier message: 25/06/2008, 10h52
  5. [scipy] Séries mathématiques - fonction comme argument d'une autre
    Par sebsainte dans le forum Calcul scientifique
    Réponses: 6
    Dernier message: 20/09/2007, 00h59

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