Beim letzten Mal habe ich ein Streudiagramm ausgegeben, daher werde ich dieses Mal etwas spezifischere Daten verwenden. Ich möchte nicht nur ein Streudiagramm, sondern auch eine Regressionsanalyse durchführen.
Dieses Mal beginnen wir mit einer Regression, wenn es nur eine Merkmalsmenge gibt.
https://sites.google.com/site/datajackets/data-jackets/list2/dj0514 Https://vincentarelbundock.github.io/Rdatasets/csv/datasets/airmiles.csv auf der Website Ich möchte eine CSV-Datei verwenden, die von hier heruntergeladen werden kann.
Dies sind Daten zur Anzahl der steuerpflichtigen Passagiermeilen von kommerziellen Fluggesellschaften in den Vereinigten Staaten für jedes Jahr von 1937 bis 1960.
Lassen Sie uns ein Streudiagramm mit dem vorherigen Code ausgeben.
from matplotlib import pyplot as plt
import numpy as np
def main():
data = np.genfromtxt("airmiles.csv",delimiter=",", skiprows=1)
plt.scatter(data[:,1], data[:,2])
plt.xlabel('year')
plt.ylabel('')
plt.show()
if __name__ == '__main__':
main()
Klicken Sie hier für die Ausgabeergebnisse
Ich denke, es wird so aussehen. Nachdem Sie das Streudiagramm bestätigt haben, versuchen Sie, eine Regressionslinie zu zeichnen.
Beginnen wir mit dem Code.
from matplotlib import pyplot as plt
import numpy as np
def main():
data = np.genfromtxt("airmiles.csv",delimiter=",", skiprows=1)
x = data[:,1]
y = data[:,2]
A = np.array([x,np.ones(len(x))])
A = A.T
m,c = np.linalg.lstsq(A,y)[0]
plt.scatter(x, y)
plt.xlabel('year')
plt.ylabel('airmiles')
plt.plot(x,(m*x+c))
plt.show()
if __name__ == '__main__':
main()
Klicken Sie hier für die Ausgabeergebnisse
Ich zeichne eine gerade Linie, die zu diesen Daten passt. Es ist eine Regression nach der Methode der kleinsten Quadrate. Jetzt werden Sie feststellen, dass hier ein neuer Code vorhanden ist.
A = np.array([x,np.ones(len(x))])
A = A.T
m,c = np.linalg.lstsq(A,y)[0]
Ich möchte, dass Sie diesen Bereich im Detail googeln (ich bin mir nicht sicher, daher werde ich eine Erklärung hinzufügen, sobald ich es verstehe.)
np.linalg.lstsq
Ich werde diese Funktion erklären. Dies ist ein Modul zur linearen Algebra (lineare Algebra), die in numpy enthalten ist, und welche Art von Funktion es hat Hier http://docs.scipy.org/doc/numpy-1.10.1/reference/routines.linalg.html Es ist detailliert in.
lstsq
ist eine Abkürzung für Least-Square
und wird auf Japanisch als" Minimum-Square-Methode "bezeichnet.
"Wenn ein Satz numerischer Werte approximiert wird, der durch Messung unter Verwendung einer bestimmten Funktion wie einer linearen Funktion oder einer logarithmischen Kurve erhalten wird, die von einem geeigneten Modell angenommen wird, sollte die angenommene Funktion eine gute Annäherung an den gemessenen Wert sein. Wie man den Koeffizienten bestimmt, der die Summe der Quadrate der Residuen minimiert "
(Aus Wikipedia)
Diesmal nach dieser Minimum-Square-Methode Neigung: 1350.28173913 Abschnitt: -2620496.13536 Wurde berechnet.
Das nächste Mal möchte ich mich mit der Analyse (mehrdimensionale Regression) mehrerer Merkmalsgrößen befassen.
Recommended Posts