Scipy Leastsq

Scipy Leastsq
Scipy est une bibliothèque open source de Python qui donne des solutions à des problèmes mathématiques et scientifiques. Il est construit sur Numpy, étendant les fonctionnalités en fournissant des outils supplémentaires pour l'informatique du tableau et une structure de données spécialisée.

La large gamme de commandes de haut niveau permet à l'utilisateur de visualiser et de transformer les données. Les commandes ou fonctions de la bibliothèque d'optimisation Scipy est LeasSQ (). La fonction leasq () utilise la moindre méthode de minimisation carrée.

Dans cet article, nous vous ferons découvrir la fonction leasq (); sa syntaxe, son fonctionnement, et nous fournirons des exemples utiles qui vous aideront à comprendre comment implémenter la fonction leasq (). Parcourez cet article si vous êtes nouveau dans le concept de Scipy Leastsq et que vous voulez en savoir plus.

Quelle est la syntaxe de la Fonction Lastsq ()?

La fonction leasq () minimise la somme du carré d'un ensemble d'équations. Il est utilisé pour résoudre un problème le moins linéaire carré. Le scipy.LesStsq () a la syntaxe suivante:

# scipy.optimiser.LeasSQ (f, x, args = (), df = aucun, pleinout = 0, coolive = 0, f-tol = 1.49012E-08, x-tol = 1.49012E-08, g-tol = 0.0, max-fev = 0, eps-fcn = aucun, fac = 100, dia = aucun)

Les paramètres de la fonction LEASQ () sont décrits comme suit: Le paramètre «f» est appelant, il prend l'argument «n» et renvoie le numéro de point flottant «M». Il est important que 'm> = n' et il ne devrait pas retourner NANS.

Le paramètre «x» spécifie le point de départ de la minimisation. Le paramètre «args» est une valeur de tuple utilisée pour placer tout argument supplémentaire nécessaire à la fonction et c'est un paramètre facultatif. Le «DF» est un autre paramètre appelant à calculer le jacobien de fonction avec des dérivés à travers les lignes. C'est aussi un paramètre facultatif.

Le 'Fulloutput' est un paramètre facultatif et renvoie toutes les sorties facultatives. Le «Colive» est un paramètre Bool en option spécifiant la fonction jacobienne qui calcule les dérivés dans les colonnes. Le 'F-Tol' est un paramètre de flotteur facultatif utilisé pour présenter l'erreur relative souhaitée dans la somme des carrés.

Le 'X-Tol' est un autre paramètre de flotteur facultatif utilisé pour présenter l'erreur relative souhaitée dans la solution approximative. Le 'G-Tol' est un paramètre facultatif utilisé pour présenter l'orthogonalité entre les colonnes jacobiennes et les vecteurs de fonction dans un numéro de point flottant. Le «Max-Fev» spécifie le nombre maximum d'appels à la fonction; Cependant, c'est un paramètre facultatif.

Le 'EPS-FCN' spécifie la longueur de pas souhaitable pour la distance avant de la fonction. Le «FAC», un paramètre facultatif, détermine l'étape initiale liée, et enfin, le dernier paramètre facultatif «Dia» sert de facteur d'échelle pour les variables.

Ci-dessous, nous élaborerons l'utilisation de la fonction LEAFSQ () à l'aide d'exemples simples et simples.

Exemple 1:

Nous commencerons par un exemple très simple et de base afin que vous ne soyez pas confus au début et arrêtez de lire plus loin. Ceci est le programme simple qui vous aidera à comprendre la fonctionnalité de la méthode LEASQ ().

Voyons le code ci-dessous. Notez que le code est exécuté dans la collaboration. Le collaboration est un interprète Python open source utilisé pour implémenter et exécuter des programmes Python. C'est un outil gratuit et ouvertement disponible dans le référentiel Google. Vous pouvez facilement télécharger le .Fichier d'extension PY après implémentation et exécution de votre programme dans un cahier de collaboration et exécuté plus tard dans tout autre interprète Python comme Jupyter ou Spyder.

de Scipy.Optimiser l'importation de leasq
def func_one (ABC):
retour 33 * (ABC-2) ** 1 + 3
Print (LEASSQ (Func_One, 0))

Voyons la sortie ci-dessous:

Exemple 2:

Dans cet exemple, nous présenterons le jacobien de la fonction d'erreur à l'aide de la fonction d'algopy pour expliquer l'utilisation de la fonction leasq (). Ici, vous pouvez voir que les bibliothèques sont importées en premier qui sont importantes pour l'exécution du code.

Ensuite, nous avons créé les tableaux NP indiqués comme «y_data» et «val». Après cela, nous avons défini trois fonctions et leur avons transmis les valeurs requises. Et enfin, les valeurs estimées et le nombre total d'appels effectués par la fonction sont affichés comme vous pouvez le voir dans les lignes finales du programme de code.

Importer Numpy comme NP
à partir de Scipy Import Optimize
Importer des algopies comme alg
y_data = np.Array ([0.2387, 0.1214, -0.0321, 0.2456, 0.6453, 0.4578, 0.2214, 0.2814, 0.2774, 0.5671, 0.4454, 0.6743, 0.1109, 0.1543, 0.0203, 0.1286, 0, 0, 0])
val = np.Array ([58., 78, 109, 118, 129, 141, 165, 176, 178, 265, 246, 265, 272, 288, 299, 301, 344, 356, 332])
Def func (P, Val):
retour p [0] + (p [1] -p [0]) * ((1 / (1 + alg.exp (-p [2] * (val-p [3])))) + (1 / (1 + alg.exp (p [4] * (val-p [5])))) -1)
DEF ERROR_FUNC (P, Val, Y):
retourner func (p, val) -y
def jac_error_func (p, val, y):
ap = alg.UTPM.init_jacobian (p)
retour alg.UTPM.extract_jacobian (error_func (ap, val, y))
deviner = np.Array ([0, max (y_data), 0.1, 120, -0.1, 250])
p2, c, info, msg, succès = optimiser.leasq (error_func, deviner, args = (val, y_data), dfun = jac_error_func, full_output = 1)
imprimer ('L'estimation de la fonction lessq () est:', p2, succès)
print ('Le nombre total d'appels par la fonction est:', info ['nfev'])

Lorsque vous exécutez le code donné, vous verrez la sortie suivante.

Exemple 3:

L'utilisation de base de la fonction de minimisation LEASQ () est l'ajustement de la courbe. C'est le point où une technique de modèle paramétré est utilisée pour ajuster les valeurs numériques.

Dans l'exemple suivant, nous montrerons comment modéliser la courbe des données d'ajustement et vérifier les différences dans l'ajustement. Nous utilisons deux équations pour définir deux types de fonctions pour s'adapter. Les équations peuvent être modifiées, donc si vous souhaitez utiliser vos équations, remplacez simplement l'équation donnée par vos équations et que vous êtes prêt à partir.

De cette façon, vous pouvez mieux comprendre et observer la différence d'ajustement. Voir le code donné ci-dessous:

de Scipy.Optimiser l'importation de leasq
Importer Matplotlib.Pypllot comme MTB
un = tableau ([6, 8, 11, 4, 2, 3, 6, 8, 5, 7,8, 11, 14])
deux = tableau (plage (len (un)))
def func_one (param, un, deux):
ABC, XYZ, ABZ = PARAM [0], Param [1], Aram [2]
sortie = deux-lab
Sortie de retour
def func_two (param, un, deux):
ABC, XYZ, ABZ = PARAM [0], Param [1], Param [2]
sortie = deux- (abc * un ** 3 + xyz * un + abz)
Sortie de retour
param = [0, 0, 0]
output_two = leastsq (func one, param, (un, deux))
ABC, XYZ, ABZ = Output_TWO [0] [0], output_two [0] [1], output_two [0] [2]
yfit1 = abc * un ** 2 + xyz * un + abz
output_two = leassq (func_two, param, (un, deux)) ABC, xyz, abz = output_two [0] [0], output_two [0] [1], output_two [0] [2]
yfit2 = abc * un ** 3 + deux * un + abz
VTT.tracé (un, deux, 'bo', label = "y-originginat")
VTT.Plot (un, yfitl, color = "noir", label = "y = ox ^ 24-bx + c")
VTT.Plot (un, yfit2, color = "rouge", label = "y = ox ^ 24-b + c")
VTT.xlabel ('x')
VTT.ylabel ('y')
VTT.légende (loc = 'meilleur', sancybox = true, shadow = true)
VTT.grille (vrai)
VTT.montrer()

La sortie de ce qui précède est indiquée ci-dessous:

Conclusion

Dans cet article, nous avons présenté des détails sur la fonction LEASQ () de SciPy. Nous avons vu la syntaxe de LEASSQ () avec l'explication de chaque paramètre requis et facultatif en détail. La fonction LEASSQ () élimine 12 paramètres dont 2 sont des paramètres obligatoires et les 10 autres sont des paramètres facultatifs.

En outre, comment utiliser la fonction leasq () est également mentionné avec des exemples. Le premier exemple est très simple et basique et explique l'utilisation de base de la fonction tandis que les deux autres exemples expliquent la fonctionnalité complexe de la fonction lessq ().