[PYTHON] Aktienkursprognose mit maschinellem Lernen (Scikit-Learn)

Da ich Scikit-Learn studiert habe, werde ich es verwenden, um den Aktienkurs vorherzusagen. Letztes Mal, Letztes Mal Ich möchte mit TensorFlow vergleichen Dies liegt daran, dass es schwierig ist, die für die Eingabe verwendeten Daten zu erhalten und zu verarbeiten. Bitte verzeih mir. Übrigens gibt es bereits Leute, die das Gleiche tun. Da ich Scikit-Learn (und die Theorie dazu) ungefähr eine Woche lang studiert habe, denke ich außerdem, dass es wahrscheinlich Fehler gibt. Wir warten auf Ihre Vorschläge.

Was ist Scikit-Lernen?

Es scheint "Sykit Learn" zu lesen. Eine Bibliothek für maschinelles Lernen. Es ist mit verschiedenen Algorithmen ausgestattet und relativ einfach zu bedienen. TensorFlow kann möglicherweise dasselbe tun, aber Scicit-Learn ist einfacher zu schreiben.

verdienen

Fehler

――Tiefes Lernen ist nicht möglich.

Bewirken

Dinge die zu tun sind

"Verwenden Sie globale Aktienindizes im Wert von einigen Tagen (Dow, Nikkei Average, DAX usw.), um vorherzusagen, ob der Nikkei Average am nächsten Tag steigen oder fallen wird (2 Auswahlmöglichkeiten)" (wie beim letzten Mal)

Umgebung

scikit-learn 0.17.1 Python 2.7 Windows 7

Implementierung

Vorbereitung

Die vorherigen Daten werden unverändert verwendet. (Die von der Website Quandl heruntergeladenen Aktienindizes von Nikkei, Dow, Hong Kong Hansen und Deutschland werden als Textdaten zu einem zusammengefasst.)

Etikette

Im Fall von Scikit-Learn scheint das Label einen numerischen Wert mit int anstelle eines Flag-Formats (wie [0,0,1]) anzugeben, daher wurde es für das Steigen auf 0 und für das Fallen auf 1 gesetzt.

if array_base[i][3] > (array_base[i+1][3]):
    y_flg_array.append(0)
    up += 1
else:
    y_flg_array.append(1)
    down += 1

Als ganze Probe Steigen Sie um: 50,5% Rückgang: 49,5% ist geworden.

Eingabedaten

Basierend auf den vorherigen Verbesserungspunkten geben wir anstelle des aktuellen Aktienkurses eine Liste an, "wie viel (%) er im Vergleich zum Vortag gestiegen oder gefallen ist".

tmp_array = []
for j in xrange(i+1, i + data_num + 1):
    for k in range(16):
        tmp_array.append((array_base[j][k] - array_base[j+1][k]) / array_base[j][k] * 100)
x_array.append(tmp_array)

Klassifizierungsalgorithmus

Mit scikit-learn können verschiedene Algorithmen verwendet werden, aber ehrlich gesagt weiß ich nicht, welcher besser ist, deshalb habe ich beschlossen, drei solcher zu versuchen. Dieses Mal werden wir drei Methoden ausprobieren: stochastischer Gradientenabstieg, Entscheidungsbaum und Support-Vektor-Maschine. Ich habe übrigens keine Ahnung, wie sich diese drei unterscheiden. (^ _ ^;)

# SGDClassifier
clf = linear_model.SGDClassifier()
testClf(clf, x_train_array, y_flg_train_array, x_test_array, y_flg_test_array)

# Decision Tree
clf = tree.DecisionTreeClassifier()
testClf(clf, x_train_array, y_flg_train_array, x_test_array, y_flg_test_array)

# SVM
clf = svm.SVC()
testClf(clf, x_train_array, y_flg_train_array, x_test_array, y_flg_test_array)

Schulung, Bewertung

Ich habe versucht, in der Funktion zu trainieren und zu bewerten. Das Training macht einfach fit () und die Bewertung macht score (), also ist es sehr einfach.

def testClf(clf, x_train_array, y_flg_train_array, x_test_array, y_flg_test_array):

    print clf
    clf.fit(x_train_array, y_flg_train_array)
    print clf.score(x_test_array, y_flg_test_array)

Ergebnis-Teil 1-

SGDClassifier : 0.56591099916
DecisionTreeClassifier : 0.544080604534
SVM : 0.612090680101

Bei Verwendung von TensorFlow lag die korrekte Antwortrate bei etwa 63%. Es scheint also, dass einige Ergebnisse erzielt wurden, wenn auch nicht so viele. Die Verarbeitung ist nur für SVM schwer.

Parametereinstellung

Oben wurde beim Erstellen einer Instanz jedes Klassifikators nichts im Argument angegeben, aber es scheint, dass die Genauigkeit durch Anpassen der Parameter verbessert werden kann. Darüber hinaus gibt es eine Funktion, die auf Umwegen nach diesem Parameter sucht. Praktisch. Probieren Sie es mit der SVM aus, die die besten Ergebnisse erzielt hat.

clf = svm.SVC()
grid = grid_search.GridSearchCV(estimator=clf, param_grid={'kernel': ['rbf','linear','poly','sigmoid']})
grid.fit(x_train_array, y_flg_train_array)
testClf(grid.best_estimator_, x_train_array, y_flg_train_array, x_test_array, y_flg_test_array)

Oben habe ich den SVM-Kernel mit 4'rbf ',' linear ',' poly 'und' sigmoid 'ausprobiert und mit den besten Parametern trainiert und erneut getestet. (Ist Training nicht mehr nötig?) Abgesehen davon verstehe ich natürlich die Bedeutung des Kernels nicht wirklich. (^ _ ^;)

Ergebnis-Teil 2-

0.638958858102

Die besten Ergebnisse wurden erzielt, wenn der Kern linear war, mit einer leichten Erhöhung der Genauigkeit. Ungefähr 64% ... Ich habe das tiefe Lernen überschritten ... (Ich denke, es liegt im Fehlerbereich)

Erwägung

―― Schließlich ist es besser, die Änderungsrate einzugeben, als den Aktienkurs so einzugeben, wie er ist. (Ich habe es mit dem Aktienkurs versucht, aber es hat nicht funktioniert) ――Tiefes Lernen ist sehr beliebt, aber Sie können auch in anderen Bereichen Ihr Bestes geben.

Impressionen

――Es macht Spaß, sich leicht zu bewegen, auch wenn Sie den Algorithmus überhaupt nicht verstehen.

Referenzierte Site

Recommended Posts

Aktienkursprognose mit maschinellem Lernen (Scikit-Learn)
Aktienkursprognose mit maschinellem Lernen (Return Edition)
Aktienkursprognose mit Deep Learning (TensorFlow)
Aktienkursprognose mit Deep Learning (TensorFlow) -Teil 2-
Aktienkursprognose durch maschinelles Lernen Numerai Signals
Python & Machine Learning Study Memo ⑦: Aktienkursprognose
Aktienkursprognose mit Deep Learning [Datenerfassung]
Aktienkursprognose durch maschinelles Lernen Beginnen wir mit Numerai
[Maschinelles Lernen] LDA-Themenklassifizierung mit Scikit-Learn
Vorhersage von Aktienkursänderungen mithilfe von Metallkennzeichnung und zweistufigem maschinellem Lernen
Aktienkurs Prognose durch maschinelles Lernen ist so wahr, Numerai Signale
Aktienkursprognose 2 Kapitel 2
Aktienkursprognose 1 Kapitel 1
Aktienkursprognose mit Tensorflow
Python: Aktienkursprognose Teil 2
Aktienkursprognose mit LSTM_1
Python: Aktienkursprognose Teil 1
[Python] Meine Aktienkursprognose [HFT]
SVM versucht maschinelles Lernen mit Scikit-Learn
100 Sprachverarbeitung Knock-73 (mit Scikit-Learn): Lernen
Anwendungsentwicklung mit Azure Machine Learning
Maschinelles Lernen
scikit-learn Verwendung der Zusammenfassung (maschinelles Lernen)
[Maschinelles Lernen] FX-Vorhersage unter Verwendung des Entscheidungsbaums
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung
Aktienprognose mit TensorFlow (LSTM) ~ Aktienprognose Teil 1 ~
[Maschinelles Lernen] Regressionsanalyse mit Scicit Learn
Eine Geschichte über einfaches maschinelles Lernen mit TensorFlow
Datenversorgungstricks mit deque beim maschinellen Lernen
Versuchen Sie, den Strombedarf durch maschinelles Lernen vorherzusagen
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung Teil 2
[Maschinelles Lernen] Überwachtes Lernen mithilfe der Kernel-Dichteschätzung Teil 3
Überblick über maschinelle Lerntechniken, die aus Scikit-Learn gelernt wurden
Ist es möglich, mit Aktienkursprognose durch maschinelles Lernen zu essen [Umsetzungsplan]
Ich habe versucht, verschiedene Methoden für maschinelles Lernen (Vorhersagemodell) mithilfe von Scicit-Learn zu implementieren
[Übersetzung] scikit-learn 0.18 Einführung in maschinelles Lernen durch Tutorial scikit-learn
Angemessene Preisschätzung von Mercari durch maschinelles Lernen
[Memo] Maschinelles Lernen
Klassifikation des maschinellen Lernens
Versuchen Sie es mit dem Jupyter Notebook von Azure Machine Learning
Ein Memorandum über Methoden, die häufig beim maschinellen Lernen mit Scikit-Learn (für Anfänger) verwendet werden.
Beispiel für maschinelles Lernen
[Maschinelles Lernen] Extrahieren Sie ähnliche Wörter mechanisch mit WordNet
Kausales Denken mit maschinellem Lernen (Organisation von Methoden des kausalen Denkens)
Was ich über KI / maschinelles Lernen mit Python gelernt habe (1)
Aktienkursprognose mit TensorFlow (mehrschichtiges Perceptron: MLP) ~ Aktienprognose 2 ~
Erstellen Sie maschinelle Lernprojekte mit explosiver Geschwindigkeit mithilfe von Vorlagen
[Maschinelles Lernen] SVM sowohl aus Scikit-Lernen als auch aus Mathematik verstehen
Einfaches maschinelles Lernen mit Scikit-Learn und Flask ✕ Web App
Python Scikit-learn Lineare Regressionsanalyse Nichtlineare einfache Regressionsanalyse Maschinelles Lernen
Was ich über KI / maschinelles Lernen mit Python gelernt habe (3)
Maschinelles Lernen mit Bildern der Kategorie Caffe -1 unter Verwendung eines Referenzmodells
Tech-Circle Beginnen wir mit der Anwendungsentwicklung durch maschinelles Lernen (Selbststudium)
[Maschinelles Lernen] Versuchen Sie, Objekte mithilfe der selektiven Suche zu erkennen
[Maschinelles Lernen] Textklassifizierung mit dem Transformer-Modell (Aufmerksamkeitsbasierter Klassifikator)
Praktisches maschinelles Lernen mit Scikit-Learn und TensorFlow-TensorFlow gab auf-
Konstruktionsnotiz für eine maschinelle Lernumgebung von Python
Was ich über KI / maschinelles Lernen mit Python gelernt habe (2)
Ich habe versucht, das Bild mithilfe von maschinellem Lernen zu komprimieren