L'ajustement expérimental des données (Python) est en cours d'ajout ...

Aperçu

Ici, nous visons à déterminer les paramètres en ajustant les données expérimentales à partir de l'état obtenu dans le fichier txt ou le fichier dat. Afin d'utiliser la fonction indépendamment du fait qu'elle soit linéaire ou non linéaire, nous utilisons un module appelé curve_fit, qui fait partie du module scipy.optimize inclus dans le package Python scipy.

Ajustement de fonction de premier ordre

Commencez par charger le module requis.

#Nécessaire pour le montage
from scipy.optimize import curve_fit
import numpy as np
#Requis pour l'illustration
import matplotlib.pyplot as plt

Essayez d'ajuster les données suivantes.

x = np.asarray([1,2,4,6,7])
y = np.asarray([1,3,3,5,4])
plt.scatter(x, y, c='k')
plt.show()

fit1.png Définissez la forme fonctionnelle à ajuster et effectuez effectivement l'ajustement.

#Définissez l'expression de fonction que vous souhaitez adapter. Voici une fonction linéaire.
def linear_fit(x, a, b):
    return a*x + b
#Effectuer l'ajustement.
#prameter_initial = np.array([1,2])← Définissez la valeur initiale ici, mais sautez-la ici.
popt, pcov = curve_fit( linear_fit, x, y)#, p0= prameter_initial)

L'ajustement a été effectué jusqu'à présent et les résultats des paramètres a et b sont stockés dans la première valeur de retour popt. Cette fois, les deux paramètres de la pente a et de la section b de la fonction linéaire sont inclus dans popt comme [a, b] = [popt [0], popt [1]]. Vérifiez quelle est la valeur.

print (popt[0],popt[1])

Peut-être que vous pouvez trouver a = 0,4999 ..., b = 1,2000 ... Tracez la superposition pour voir si cette valeur est valide. Ça n'a pas l'air bien.

c=popt[0]
d=popt[1]
f = c*x + d #f = linear_fit(x,popt[0],popt[1])Ou f= linear_fit(x,*popt)Mais d'accord.
plt.scatter(x, y, c='k')
plt.plot(x, f, c='r')
plt.show()

fit2.png

Ajustement de la fonction quadratique

De même, chargez le module requis.

#Nécessaire pour le montage
from scipy.optimize import curve_fit
import numpy as np
#Requis pour l'illustration
import matplotlib.pyplot as plt

Essayez d'ajuster les données suivantes.

x = np.asarray([1,2,2.5,4,5,6,7,8,9,10])
y = np.asarray([10,8,5,2,1,1.2,2.5,5,7,10])
plt.scatter(x, y, c='k')
plt.show()

fit3.png Définissez la forme fonctionnelle à ajuster et effectuez effectivement l'ajustement.

#Définissez l'expression de fonction que vous souhaitez adapter. Voici une fonction quadratique.
def two_fit(x,a,b):
    return  a*(x-b)**2

#Effectuer l'ajustement. La valeur initiale est également définie.
prameter_initial = np.array([1,5])
popt, pcov = curve_fit(two_fit, x, y, p0= prameter_initial)

L'ajustement a été effectué jusqu'à présent et les résultats des paramètres a et b sont stockés dans la première valeur de retour popt. Cette fois, les deux paramètres de la pente a et de la section b de la fonction linéaire sont inclus dans popt comme [a, b] = [popt [0], popt [1]]. Vérifiez quelle est la valeur.

print (popt[0],popt[1])

Peut-être que vous pouvez trouver a = 0.5404046977156955, b = 5.48472528172034. Tracez la superposition pour voir si cette valeur est valide. Bien que cela ne soit pas expliqué dans la fonction linéaire, il existe actuellement deux méthodes de tracé. Tout d'abord, essayez la même méthode que pour la fonction linéaire.

c=popt[0]
d=popt[1]
f = c*(x-d)**2 #f = two_fit(x,popt[0],popt[1])#Tu peux écrire comme ça, f= two_fit(x,*popt)Mais d'accord.
plt.scatter(x, y, c='k')
plt.plot(x, f, c='r')
plt.show()

fit4.png Je ne savais pas quand c'était une fonction linéaire, mais vous pouvez voir que c'est saccadé. S'il y a beaucoup de données, cela ne me dérange pas, mais je n'aime pas son apparence, alors je vais l'écrire en douceur comme deuxième méthode.

#Spécification de la plage de dessin
# x1 = np.arange(axe x minimum,Valeur maximale sur l'axe des x,Cranté)
x1 = np.arange(1, 10, 0.000001)
c=popt[0]
d=popt[1]
f = c*(x1-d)**2
plt.scatter(x, y, c='k')
plt.plot(x1, f, c='r')
plt.show()

fit5.png C'est agréable et lisse. Créez x1 comme plage de dessin et affinez les étapes. Maintenant que nous connaissons la méthode d'ajustement de base et la méthode de dessin, nous allons enfin lire les données expérimentales du fichier txt et du fichier dat et effectuer l'ajustement.

Ajustement des données expérimentales

Enfin, sur la base de ce qui précède, lisez les données du fichier txt et du fichier dat, effectuez l'ajustement et déterminez les paramètres. Je mettrai tout le code à la toute fin.

Recommended Posts

L'ajustement expérimental des données (Python) est en cours d'ajout ...
Analyse de données python
[python] Lecture de données
Analyse de données avec python 2
Bibliothèques de visualisation de données Python
Présentation de l'analyse de données python
Nettoyage des données à l'aide de Python
Ne pas être conscient du contenu des données en python
Modèle d'analyse de données Python
[Tutoriel Python] Structure des données
[Python] Tri des données Numpy
Analyse de données avec Python
Fonctionnalités de grammaire ajoutées à partir de Python3.6
Expérience de réglage des données Tensorflow
Afficher les données UTM-30LX en Python
Fiche technique de la science des données (Python)
[Python] Notes sur l'analyse des données
Mon environnement d'analyse de données python
Application Python: visualisation de données, partie 2: matplotlib
Notes d'apprentissage sur l'analyse des données Python
Mémo récapitulatif des types de données Python
[Python] Ajustement de courbe avec polypoly
[Python] Tracer des données de séries chronologiques
Python pour l'analyse des données Chapitre 2
Conversion de type de données d'image [Python]
Analyse de données à l'aide de pandas python
python> tuple> données, adresse = s.recvfrom (10000)
Python pour l'analyse des données Chapitre 3
Lire des données json avec python