Python scikit-learn Eine Sammlung von Tipps für Vorhersagemodelle, die häufig im Feld verwendet werden

Bedingungen
1. 1. Daten, Funktionen

・ Verwendet Bestandsdaten für ein Jahr 2019 für eine bestimmte Unterhaltungsmarke ・ Verwendet den Nikkei Average Inverse Index für denselben Zeitraum ・ Erwähnt nicht die Validierungsmethode, ob es sich um die optimale Kombination von Merkmalsgrößen handelt

2. Modell-

・ Führen Sie zum Zwecke der Implementierungsmethode keine Parametereinstellung für Bewertungsindizes wie unzureichendes Lernen, Überlernen und Genauigkeit der vorhergesagten Werte durch.

Lineare Regression

    1. Einfache Regression Siehe die Korrelation zwischen inversem Index und Aktienkurs
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
npArray = np.loadtxt("stock.csv", delimiter = ",", dtype = "float",skiprows=1)

#Merkmalsmenge (inverser Index)
z = npArray[:,1:2]
z = npArray[:,2:3]
#Prognosedaten (Aktienkurs)
y = npArray[:, 3:4].ravel()

#Einfache Erstellung eines Regressionsmodells
model = LinearRegression()

#Ausbildung
model.fit(z,y)
print('Neigung:', model.coef_)
print('Sektion:', model.intercept_)

#Prognose
y_pred = model.predict(z)

#Streudiagramm von INDEX und Aktienkurs und Darstellung der linearen Funktion
plt.figure(figsize=(8,4))
plt.scatter(z,y, color='blue', label='Stock price')
plt.plot(z,y_pred, color='green', linestyle='-', label='LinearRegression')

#Volumendiagramm
plt.ylabel('Closing price')
plt.xlabel('Volume')
plt.title('Regression Analysis')
plt.legend(loc='lower right')

Neigung: [-2.27391593] Abschnitt: 4795.89427740762 Es ist ersichtlich, dass der inverse Index und der Aktienkurs eine negative Korrelation aufweisen und nicht miteinander verknüpft sind. image.png Als nächstes betrachten wir die Korrelation zwischen Handelsvolumen und Aktienkurs. Diesmal wurde es zu einer positiven Korrelation, und es ist ersichtlich, dass der Aufwärtstrend das ganze Jahr über nahezu stabil war. image.png 2. Multiple Regression Siehe die MSE (durchschnittlicher quadratischer Fehler) des Aktienkurses und den Rest des vorhergesagten Aktienkurses aus dem inversen Index und Volumen.

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
npArray = np.loadtxt("stock.csv", delimiter = ",", dtype = "float",skiprows=1)
#Merkmalsmenge (inverser Index & Volumen)
x = npArray[:,1:3]
#Prognosedaten (Aktienkurs)
y = npArray[:, 3:4].ravel()
#Erstellung mehrerer Regressionsmodelle
model = LinearRegression()
#Funktionsstandardisierung
sc = StandardScaler()

#Trainingsdaten (INDEX,Schulung eines Konverters zur Standardisierung des Volumens)
x_train_std = sc.fit_transform(x_train)
#Testdaten (INDEX) mit einem Konverter, der mit Trainingsdaten trainiert wurde,Volumen) ist standardisiert
x_test_std = sc.transform(x_test)

#Ein Modell mit Trainingsdaten lernen
model.fit(x_train_std, y_train)

#Prognostizieren Sie Aktienkurse mit Trainingsdaten und Testdaten
y_train_prd = model.predict(x_train_std)
y_test_prd = model.predict(x_test_std)

#Berechnen Sie die MSE des tatsächlichen Aktienkurses und des prognostizierten Aktienkurses
np.mean((y_train - y_train_prd) ** 2)
np.mean((y_test - y_test_prd) ** 2)

# MSE(Berechnung des durchschnittlichen quadratischen Fehlers)
print('MSE ', mean_squared_error(y_train, y_train_prd),mean_squared_error(y_test, y_test_prd))

#Prognostizierte Darstellung des verbleibenden Aktienkurses (prognostizierte korrekte Antwort)
plt.figure(figsize=(7,5)) 
plt.scatter(y_train_prd,  y_train_prd - y_train,
c='orange', marker='s', edgecolor='white',
label='Training')
plt.scatter(y_test_prd,  y_test_prd - y_test,
c='blue', marker='s', edgecolor='white',
label='Test')

plt.xlabel('Stock price')
plt.ylabel('Residual error')
plt.legend(loc='upper left')
plt.hlines(y=0, xmin=0, xmax=1200, color='green', ls='dashed',lw=2)
plt.xlim([220,1200])
plt.tight_layout()
plt.show()

Der minimale quadratische Durchschnitt beträgt Trainingsdaten = 17349,4, Testdaten 23046,2 Wie oben erwähnt, haben der inverse Index und der Aktienkurs eine negative Korrelation, so dass der MSE-Wert hoch und der Unterschied zu den Trainingsdaten groß ist. image.png Obwohl der Restbetrag im ersten Halbjahr 2019 bei einem Aktienkurs von rund 300 Yen relativ gering ist, zeigt er eine negative Korrelation mit dem inversen Index. Da er 500 Yen überschreitet, gibt es große Abweichungen und einen großen Fehler bei den Trainingsdaten. Es stellt sich heraus, dass es sich nicht um eine Prognose der Aktienkurse handeln kann

Fortsetzen

Recommended Posts

Python scikit-learn Eine Sammlung von Tipps für Vorhersagemodelle, die häufig im Feld verwendet werden
Python scikit-learn Eine Sammlung von Tipps für Vorhersagemodelle, die häufig im Feld verwendet werden
Sammlung von Numpy, Pandas Tipps, die häufig auf dem Feld verwendet werden
Eine Code-Sammlung, die häufig in persönlichem Python verwendet wird
Holen Sie sich den Aufrufer einer Funktion in Python
Kopieren Sie die Liste in Python
Ausgabe in Form eines Python-Arrays
Ein Memorandum über Methoden, die häufig beim maschinellen Lernen mit Scikit-Learn (für Anfänger) verwendet werden.
Eine Sammlung häufig verwendeter Befehle in der Serververwaltung
Ein Memorandum über die Umsetzung von Empfehlungen in Python
Finden Sie die scheinbare Breite einer Zeichenfolge in Python heraus
Befehle, die häufig in der Entwicklungsumgebung während der Python-Implementierung verwendet werden
Die Geschichte des Django-Modellfeldes verschwindet aus der Klasse
Holen Sie sich die Anzahl der spezifischen Elemente in der Python-Liste
[Hinweis] Import von Dateien in das übergeordnete Verzeichnis in Python
[Tipps] Probleme und Lösungen bei der Entwicklung von Python + Kivy
Finden Sie die Eigenwerte einer reellen symmetrischen Matrix in Python
Kann mit AtCoder verwendet werden! Eine Sammlung von Techniken zum Zeichnen von Kurzcode in Python!
[Python] Ein Memo häufig verwendeter Phrasen in Python-Skripten
So bestimmen Sie die Existenz eines Selenelements in Python
So überprüfen Sie die Speichergröße einer Variablen in Python
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
Ein Timer (Ticker), der im Feld verwendet werden kann (kann überall verwendet werden)
So überprüfen Sie die Speichergröße eines Wörterbuchs in Python
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
Holen Sie sich die Anzahl der Leser von Artikeln über Mendeley in Python
Generieren Sie eine erstklassige Sammlung in Python
Python VBA, um mit Selenium die gesamte WEB-Seite zu erfassen
Wenn Sie einen Singleton in Python möchten, stellen Sie sich das Modul als Singleton vor
Zusammenfassung der häufig verwendeten Methoden bei Pandas
Schreiben Sie den Test in die Python-Dokumentzeichenfolge
Zeigen Sie eine Liste der Alphabete in Python 3 an
Verwenden Sie ein in PySpark geschultes Scikit-Lernmodell
Überprüfen Sie die speicherinterne Byte-Zeichenfolge der Gleitkommazahl in Python
Summe der Variablen in einem mathematischen Modell
Führen Sie den Python-Interpreter im Skript aus
Das Ergebnis der Installation von Python auf Anaconda
[Python] [Meta] Ist der Python-Typ ein Typ?
Grundlagen zum Ausführen von NoxPlayer in Python
Erhalten Sie eine Liste der Ergebnisse der Parallelverarbeitung in Python mit Starmap
Auf der Suche nach dem schnellsten FizzBuzz in Python
[Einführung in Python] Eine ausführliche Erklärung der in Python verwendeten Zeichenkettentypen!
Die Geschichte der Verarbeitung A von Blackjack (Python)
Holen Sie sich zu jeder Tageszeit eine Datums- / Uhrzeitinstanz in Python
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
So erhalten Sie den "Namen" eines Feldes, dessen Wert durch das Auswahlattribut im Django-Modell begrenzt ist
Verschiedene Möglichkeiten, die letzte Zeile einer CSV-Datei in Python zu lesen
So übergeben Sie das Ergebnis der Ausführung eines Shell-Befehls in einer Liste in Python
So erhalten Sie mit Python eine Liste der Dateien im selben Verzeichnis
Geben Sie die Anzahl der CPU-Kerne in Python aus
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
[Python] Holen Sie sich die Dateien mit Python in den Ordner
[Python] Sortieren Sie die Liste von pathlib.Path in natürlicher Reihenfolge
Passen Sie die Verteilung jeder Gruppe in Python an
Warum die Python-Implementierung von ISUCON 5 Bottle verwendet
Techniken, die häufig bei der Python-Kurzcodierung verwendet werden (Notepad)
Zeigen Sie das Ergebnis der Geometrieverarbeitung in Python an
Finden Sie die Anzahl der Tage in einem Monat
Umschreiben von Elementen in einer Listenschleife (Python)