[PYTHON] Finden Sie den Koeffizienten des Polypolys mit dem kleinsten Quadrat

Überblick

Minimum-Quadrat-Methode

Die Methode der minimalen Quadrate ist eine Methode zum Finden eines relationalen Ausdrucks durch Minimieren der Summe der Quadrate der Fehler bei der Verarbeitung von Messwerten mit Fehlern.

Über das Programm

Das diesmal erstellte Programm ist ein Prozess, der die im Voraus vorbereiteten Daten "x" y "auflistet, die Matrix" S "" T "aus den Daten findet und den Koeffizienten" a "ableitet. Außerdem wird die Reihenfolge des Polynoms, das Sie finden möchten, auf "m" gesetzt. Möglicherweise gibt es bereits eine Bibliothek, die die Methode der kleinsten Quadrate leicht finden kann, aber dieses Mal werden wir keine solche Bibliothek verwenden, sondern nur die Array-Manipulationsbibliothek "numpy", und selbst wenn die Datenmenge geändert wird Wir haben einen flexiblen Prozess geschaffen.

Programm

LeastSquares.py


# -*- coding: utf-8 -*-
#!/usr/bin/env python3

import numpy as np

X_data = [10, 20, 50, 70, 100]
Y_data = [9.3, 9.8, 10.9, 11.9, 13.1]
m = 1

def ST_list(power):
    S, T = 0, 0
    for i, j in zip(X_data,Y_data):
        S += i**power
        T += i**power * j
    return S, T

def A_matrix(n_size, len):
    A = []
    for k in range(n_size):
        A.append(S_list[k+len-m*2-1:k+len-m*2-1+n_size])
    return A

S_list = []
T_list = []
for n in range(len(X_data)):
    S , T = ST_list(n)
    S_list.insert(0, S)
    T_list.insert(0, T)

A = np.array(A_matrix(m+1, len(S_list)))
b = np.array(T_list[-1*m-1::]).reshape(m+1, 1)
Ainv = np.linalg.inv(A)
x = np.dot(Ainv, b)

print("S ="); print(A); print()
print("T ="); print(b); print()
print("a ="); print(x)

Ausführungsergebnis

Finden Sie den Koeffizienten a des Polypolys erster Ordnung
m = 1
S =
[[17900   250]
 [  250     5]]

T =
[[2977.]
 [  55.]]

a =
[[0.04203704]
 [8.89814815]]

Finden Sie den Koeffizienten a des quadratischen Polypolys
m = 2
S =
[[130430000   1477000     17900]
 [  1477000     17900       250]
 [    17900       250         5]]

T =
[[2.2141e+05]
 [2.9770e+03]
 [5.5000e+01]]

a =
[[1.22729504e-05]
 [4.07142857e-02]
 [8.92034855e+00]]

Zusammenfassung

In diesen Daten fanden wir den Koeffizienten "a" für die Polynome erster und zweiter Ordnung. Wenn Sie die Datenmenge erhöhen, können Sie auch kubische und quaternäre Daten ausführen. Da diese jedoch von schwebenden Brüchen wie dem quadratischen Polynom beeinflusst werden, müssen Sie "rund" oder "format" verwenden, um die Anzeige zu vereinfachen. Korrekt.

Am Ende

Das ist alles für diesen Artikel. Entschuldigung für das schwer zu erkennende Programm. Ich denke, es gibt einen besseren Weg, besonders wenn es um die Manipulation von Arrays geht. Wenn Sie einen Rat haben, lassen Sie ihn bitte im Kommentarbereich. Vielen Dank, dass Sie bis zum Ende bei uns bleiben.

Recommended Posts

Finden Sie den Koeffizienten des Polypolys mit dem kleinsten Quadrat
Finden Sie die Definition des Wertes von errno
Migemo-Version des Befehls: find,: mfind
So finden Sie den Bereich des Boronoi-Diagramms
Ich habe die Methode der kleinsten Quadrate in Python ausprobiert
Finden Sie die Anzahl der Tage in einem Monat
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Annäherung nach der Methode der kleinsten Quadrate eines Kreises mit zwei festen Punkten
Finden Sie die Lösung der Gleichung n-ter Ordnung mit Python
Finden Sie den Tag nach Datum / Uhrzeit heraus
Projecet Euler 12 Ermitteln Sie die Anzahl der Brüche ohne Division.
Berechnen Sie die Summe der eindeutigen Werte durch Pandas-Kreuztabellen
Kennen Sie den Speicherort der Python-Klassendefinitionsdatei.
Finden Sie den Speicherort der mit pip installierten Pakete heraus
Berechnung der Homographiematrix nach der Methode der kleinsten Quadrate (DLT-Methode)
Der Beginn von cif2cell
Finden Sie das maximale Python
Die Bedeutung des Selbst
der Zen von Python
Die Geschichte von sys.path.append ()
Rache der Typen: Rache der Typen
Ich habe versucht, die Entropie des Bildes mit Python zu finden
So finden Sie die optimale Anzahl von Clustern für k-means
Maya | Ermitteln Sie die Anzahl der Polygone im ausgewählten Objekt
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Ich habe versucht, mit TensorFlow den Durchschnitt mehrerer Spalten zu ermitteln
Erben Sie die Standardbibliothek, um den Durchschnittswert der Warteschlange zu ermitteln
Python - Ermitteln Sie die Anzahl der Gruppen im regulären Ausdruck
Suchen Sie den Index des Maximalwerts (Minimalwerts) eines mehrdimensionalen Arrays
So ermitteln Sie den Skalierungskoeffizienten eines bipolaren Wavelets
Ermitteln Sie den Durchmesser des Diagramms anhand der Suche nach Breitenpriorität (Python-Speicher).
Finden Sie den Durchschnitt / die Standardabweichung der Helligkeitswerte im Bild
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python