[PYTHON] Machen Sie Vorhersagen mithilfe der Regression der tatsächlichen Daten ~ Teil1

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.

Zu verwendende Daten

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.

Zeichnen wir zunächst ein Streudiagramm.

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

スクリーンショット 2016-06-16 0.47.32.png

Ich denke, es wird so aussehen. Nachdem Sie das Streudiagramm bestätigt haben, versuchen Sie, eine Regressionslinie zu zeichnen.

Zeichnen wir eine Regressionslinie!

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

スクリーンショット 2016-06-16 1.47.10.png

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

Machen Sie Vorhersagen mithilfe der Regression der tatsächlichen Daten ~ Teil1
Versuchen Sie es mit Pillow auf iPython (Teil 1)
Versuchen Sie es mit Pillow auf iPython (Teil 2)
Versuchen Sie es mit Pillow auf iPython (Teil 3).
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 2
Visualisieren Sie Netzwerkdaten aus IPython Notebook mit Cytoscape Part 1
Erläuterung des Konzepts der Regressionsanalyse mit Python Teil 1
Lassen Sie Python in einer Zeile segfo, ohne ctypes zu verwenden
[Zur Aufnahme] Keras-Bildsystem Teil 2: Lassen Sie CNN anhand Ihres eigenen Datensatzes beurteilen