SCIPY Leastsq

SCIPY Leastsq
Scipy è una biblioteca open source di Python che offre soluzioni per problemi matematici e scientifici. È costruito su Numpy, estendendo la funzionalità fornendo strumenti aggiuntivi per il calcolo dell'array e la struttura dei dati specializzati.

L'ampia gamma di comandi di alto livello consente all'utente di visualizzare e trasformare i dati. Uno dei comandi o delle funzioni nella libreria di ottimizzazione Scipy è Leastsq (). La funzione Leastsq () utilizza il metodo di minimizzazione del minimo quadrato.

In questo articolo, ti faremo imparare sulla funzione Leastsq (); La sua sintassi, come funziona e forniremo alcuni esempi utili che ti aiuteranno a capire come implementare la funzione Leastsq (). Attraversa questo articolo se sei nuovo nel concetto di Scipy Leastsq e vuoi conoscerlo.

Qual è la sintassi della funzione Leastsq ()?

La funzione Leastsq () minimizza la somma del quadrato di un insieme di equazioni. Viene utilizzato per risolvere un problema meno quadrato non lineare. Il Scipy.Leastsq () ha la seguente sintassi:

# Scipy.ottimizzare.leastsq (f, x, args = (), df = nessuno, fulloutput = 0, Colderive = 0, f-tol = 1.49012e-08, x-tol = 1.49012e-08, g-tol = 0.0, max-fev = 0, eps-fcn = nessuno, fac = 100, dia = nessuno)

I parametri della funzione Leastsq () sono descritti come segue: il parametro 'F' è richiamabile, assume l'argomento vettoriale 'n' e restituisce il numero di punto mobile 'M'. È importante che 'm> = n' e non debbano restituire nans.

Il parametro "X" specifica il punto di partenza per la minimizzazione. Il parametro "Args" è un valore di tupla utilizzato per posizionare qualsiasi argomento extra necessario per la funzione ed è un parametro opzionale. Il 'df' è un altro parametro callone utilizzato per calcolare il giacobino della funzione con derivati ​​attraverso le righe. È anche un parametro opzionale.

Il "fulloutput" è un parametro opzionale e restituisce tutte le uscite opzionali. Il "Coldantive" è un parametro bool opzionale che specifica la funzione giacobina che calcola i derivati ​​giù per le colonne. La "f-tol" è un parametro float opzionale usato per presentare l'errore relativo desiderato nella somma dei quadrati.

La "X-TOL" è un altro parametro float opzionale utilizzato per presentare l'errore relativo desiderato nella soluzione approssimativa. Il 'G-TOL' è un parametro opzionale utilizzato per presentare l'ortogonalità tra le colonne giacobine e i vettori di funzione in un numero a virgola mobile. Il 'Max-FEV' specifica il numero massimo di chiamate alla funzione; Tuttavia, è un parametro opzionale.

L'EPS-FCN "specifica la lunghezza del passaggio desiderabile per la distanza in avanti della funzione. La "FAC", un parametro opzionale, determina il limite iniziale e, infine, l'ultimo parametro opzionale "Dia" funge da fattore di scala per le variabili.

Di seguito, elaboreremo l'uso della funzione Leastsq () con l'aiuto di esempi semplici e diretti.

Esempio 1:

Inizieremo con un esempio molto semplice e fondamentale in modo da non essere confuso all'inizio e smettere di leggere ulteriormente. Questo è il programma semplice che ti aiuterà a comprendere la funzionalità del metodo Leastsq ().

Vediamo il codice qui sotto. Si noti che il codice viene eseguito in collaboratorio. Il collaboratorio è un interprete di Python open source utilizzato per implementare ed eseguire programmi Python. È uno strumento gratuito e disponibile apertamente dal repository di Google. Puoi facilmente scaricare il .File di estensione PY Dopo aver implementato ed eseguito il programma in un notebook di collaborazione e successivamente eseguire in qualsiasi altro interprete di Python come Jupyter o Spyder.

da Scipy.Ottimizza leaste di importazione
def func_one (ABC):
return 33*(ABC-2) ** 1+3
stampa (leastsq (func_one, 0))

Vediamo l'output di seguito:

Esempio 2:

In questo esempio, presenteremo il giacobino della funzione di errore usando la funzione Algopy per spiegare l'uso della funzione Leastsq (). Qui, puoi vedere che le librerie vengono importate per prime che sono importanti per l'esecuzione del codice.

Quindi, abbiamo creato gli array NP indicati come "y_data" e "val". Successivamente, abbiamo definito tre funzioni e abbiamo superato i valori richiesti ad esse. E infine, i valori stimati e il numero totale di chiamate effettuate dalla funzione vengono visualizzati come è possibile vedere nelle righe finali del programma di codice.

Importa Numpy come NP
da Scipy Import Optimize
Algopia di importazione come 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):
return 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):
Return Func (P, Val) -y
def jac_error_func (p, val, y):
ap = alg.Utpm.init_jacobian (P)
Alg di ritorno.Utpm.extract_jacobian (errore_func (AP, val, y))
indovinare = np.array ([0, max (y_data), 0.1, 120, -0.1, 250])
p2, c, info, msg, successo = ottimizza.Leastsq (Error_Func, Guess, Args = (Val, Y_Data), dfun = jac_error_func, full_output = 1)
Print ('La stima della funzione Leastsq () è:', P2, successo)
print ('Numero totale di chiamate per funzione sono:', info ['nfev'])

Quando esegui il codice dato, vedrai il seguente output.

Esempio 3:

L'uso di base della funzione di minimizzazione Leastsq () è il raccordo della curva. Questo è il punto in cui viene utilizzata una tecnica del modello parametrizzato per regolare i valori numerici.

Nel seguente esempio, mostreremo come modellare la curva dei dati di adattamento e controllare le differenze nel raccordo. Stiamo usando due equazioni per definire due tipi di funzioni per adattarsi. Le equazioni possono essere modificate, quindi se vuoi usare le tue equazioni, sostituisci l'equazione data con le tue equazioni e sei a posto.

In questo modo, puoi capire meglio e osservare la differenza di adattamento. Vedi il codice dato di seguito:

da Scipy.Ottimizza leaste di importazione
Importa matplotlib.Pyplot come mtb
One = Array ([6, 8, 11, 4, 2, 3, 6, 8, 5, 7,8, 11, 14])
due = array (intervallo (len (one)))
def func_one (param, uno, due):
ABC, XYZ, ABZ = param [0], param [1], Aram [2]
output = due leggi • uno •• 2+xyz • uno+abzi
Output di restituzione
def func_two (param, uno, due):
ABC, XYZ, ABZ = param [0], param [1], param [2]
output = Two- (ABC*One ** 3+Xyz*One+Abz)
Output di restituzione
param = [0, 0, 0]
output_two = leastsq (func one, param, (uno, due))
ABC, XYZ, ABZ = output_two [0] [0], output_two [0] [1], output_two [0] [2]
yfit1 = abc*one ** 2+xyz*one+abz
output_two = leastsq (func_two, param, (one, due)) ABC, xyz, abz = output_two [0] [0], output_two [0] [1], output_two [0] [2]
yfit2 = ABC*One ** 3+due*One+Abz
mtb.trama (uno, due, 'bo', etichetta = "y-originat")
mtb.Plot (one, yfitl, color = "black", etichetta = "y = ox^24-bx+c")
mtb.Trama (uno, yfit2, color = "rosso", etichetta = "y = ox^24-b+c")
mtb.xlabel ('x')
mtb.ylabel ('y')
mtb.Legend (loc = 'best', fancyBox = true, shadow = true)
mtb.griglia (vero)
mtb.spettacolo()

L'output di quanto sopra è riportato di seguito:

Conclusione

In questo articolo, abbiamo presentato dettagli sulla funzione Leastsq () di Scipy. Abbiamo visto la sintassi di leastsq () con la spiegazione di ciascun parametro richiesto e opzionale in dettaglio. La funzione Leastsq () prende 12 parametri di cui 2 sono parametri obbligatori e i restanti 10 sono parametri opzionali.

Inoltre, come utilizzare la funzione Leastsq () è anche menzionato con esempi. Il primo esempio è molto semplice e di base e spiega l'uso di base della funzione mentre gli altri due esempi spiegano la funzionalità complessa della funzione Leastsq ().