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 Zweck der Implementierungsmethode keine Parameteroptimierung für Bewertungsindizes wie unzureichendes Lernen, Überlernen und Genauigkeit der vorhergesagten Werte durch.


Unterstützung der Vektorregression

    1. Lineare Regression Siehe die Korrelation zwischen Handelsvolumen und Aktienkurs ・ Überprüfen Sie die Neigung der Regressionslinie und der SVR-Grenzlinie ・ Überprüfen Sie die Verteilung innerhalb des Randes ・ Überprüfen Sie den mittleren quadratischen Fehler der linearen Regression und der SVR-Regression
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.svm import SVR
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)

#Funktionswert(Volumen)
x = npArray[:,2:3]

#Prognosedaten (Aktienkurs)
y = npArray[:, 3:4].ravel()

#Unterteilt in Trainingsdaten und Bewertungsdaten
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)#, random_state=0)

#Standardisierung von Funktionen
sc = StandardScaler()

#Mit einem Konverter standardisierte Trainingsdaten
x_train_std = sc.fit_transform(x_train)
#Standardisieren Sie Testdaten mit einem Konverter, der mit Trainingsdaten trainiert wird
x_test_std = sc.transform(x_test)

#Erstellen Sie ein lineares Regressionsmodell
mod = LinearRegression()
#SVR-Modell erstellen
mod2 = SVR(kernel='linear', C=10000.0, epsilon=250.0)

#Lernen des linearen Regressionsmodells
mod.fit(x_train_std, y_train)
# SVR
mod2.fit(x_train_std, y_train)

#Darstellung der Trainingsdaten (Volumen)
plt.figure(figsize=(8,5))
#Volumensortierung (0 zwischen Minimal- und Maximalwerten).1 Mal ndarray Erstellung)
x_ndar = np.arange(x_train_std.min(), x_train_std.max(), 0.1)[:, np.newaxis]

#Vorhersage der linearen Volumenregression
y_ndar_prd = mod.predict(x_ndar)
#Volumen-SVR-Vorhersage
y_ndar_svr = mod2.predict(x_ndar)

## MSE(Durchschnittlicher quadratischer Fehler)
mse_train_lin=mod.predict(x_train_std)
mse_test_lin=mod.predict(x_test_std)
mse_train_svr= mod2.predict(x_train_std)
mse_test_svr  = mod2.predict(x_test_std)
#Lineare Regression MSE
print('MSE-Training mit linearer Regression= %.1f,Prüfung= %.1f' % (mean_squared_error(y_train,mse_train_lin),mean_squared_error(y_test, mse_test_lin)))
#SVR MSE
print('SVRMSE-Training= %.1f,Prüfung=  %.1f' % (mean_squared_error(y_train,mse_train_svr),mean_squared_error(y_test, mse_test_svr)))

Wenn Sie es mehrmals versuchen, ohne random_state anzugeben, ist die MSE von SVR natürlich klein.

  1. Mal MSE-Training für lineare Regression = 38153,4, Test = 33161,9 SVR MSE Training = 52439,9, Test = 56707,7 Zweites Mal MSE-Training für lineare Regression = 37836,4, Test = 33841,3 SVR MSE Training = 54044,5, Test = 51083,7
  2. Mal MSE-Training für lineare Regression = 37381,3, Test = 35616,6 SVR MSE Training = 53499.2, Test = 53619.4

Lassen Sie uns dies in einem Streudiagramm unten darstellen

#Volumen- und Aktienstreudiagramm
plt.scatter(x_train_std, y_train, color='blue', label='data')
#Gerade zurückgeben
plt.plot(x_ndar, y_ndar_prd, color='green', linestyle='-', label='LinearRegression')
#Rand
plt.plot(x_ndar, y_ndar_svr ,color='red', linestyle='-', label='SVR')
#Randlinie
plt.plot(x_ndar, y_ndar_svr + mod2.epsilon, color='orange', linestyle='-.', label='margin')
plt.plot(x_ndar, y_ndar_svr - mod2.epsilon, color='orange', linestyle='-.')
#Etikette
plt.ylabel('Closing price')
plt.xlabel('Volume')
plt.title('SVR Regression')
#Gebrauchsanweisung
plt.legend(loc='lower right')

plt.show()

image.png

Die SVR-Grenze ist sanfter als die Steigung der Regressionslinie Ich habe versucht, die Marge von Epsilon bei 250 Yen zu halten, aber es scheint gut zu sagen, dass der Aktienkurs nicht merklich nach dem Handelsvolumen geworfen wurde und sich in einem Aufwärtstrend befand.

Recommended Posts

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
Lesen Sie die Standardausgabe eines Unterprozesses zeilenweise in Python
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)
Finden Sie die Anzahl der Tage in einem Monat
Umschreiben von Elementen in einer Listenschleife (Python)
Tipps zum Erreichen der ATND-API mit Python
Schreiben Sie eine Notiz über die Python-Version von Python Virtualenv
Finden Sie den Bruchteil des in Python eingegebenen Werts heraus
Korrigieren Sie die Argumente der in map verwendeten Funktion