Python & Machine Learning Study Memo ⑦: Aktienkursprognose

Einführung

① https://qiita.com/yohiro/items/04984927d0b455700cd1 ② https://qiita.com/yohiro/items/5aab5d28aef57ccbb19c ③ https://qiita.com/yohiro/items/cc9bc2631c0306f813b5 ④ https://qiita.com/yohiro/items/d376f44fe66831599d0b ⑤ https://qiita.com/yohiro/items/3abaf7b610fbcaa01b9c ⑥ https://qiita.com/yohiro/items/e9e80183e635e0ac4894 Fortsetzung

Problemeinstellung

Angesichts der Anstiegsrate der Aktienkurse in den letzten vier Tagen wird geschätzt, ob der Aktienkurs an diesem Tag steigen oder fallen wird.

Beispieldaten

stock_price.txt


10000
9993
10259
...

Der Schlusskurs des Aktienkurses für einen Tag wird in einer Zeile gespeichert.

Quellcode

importieren

from sklearn import svm

Datei lesen

Lesen Sie die Beispieldaten und speichern Sie sie in "stock_data"

#Datei lesen
stock_data = []
stock_data_file = open("stock_price.txt", "r")
for line in stock_data_file:
    line = line.rstrip()
    stock_data.append(float(line))
stock_data_file.close()

Trainingsdaten erstellen

Erstellung von Daten zur Erhöhungsrate für jeden Tag

Die Steigerungsrate wird wie folgt berechnet

Steigerungsrate am Tag i=\frac{Aktienkurs am Tag i- (i-1)Tagesbestand}{(i-1)Tagesbestand}

Speichern Sie die oben berechneten Daten in modifizierte_Daten.

count_s = len(stock_data)
modified_data = []
for i in range(1, count_s):
    modified_data.append(float(stock_data[i] - stock_data[i-1]) / float(stock_data[i-1]) * 20)
count_m = len(modified_data)

Erstellung einer Erhöhungsrate für 4 Tage und Erhöhen / Verringern der Daten (= korrekter Antwortwert) für den Tag

Speichern Sie für jeden Tag die Steigerungsrate der letzten 4 Tage in "sukzessive_Daten". Außerdem speichert es in "Antworten", ob es an diesem Tag hoch oder runter ging.

#Daten für 4 Tage bis zum Vortag
successive_data = []
#Richtige Antwort Preiserhöhung: 1 Preisverfall:0
answers = []
for i in range(4, count_m):
    successive_data.append([modified_data[i-4], modified_data[i-3], modified_data[i-2], modified_data[i-1]])
    if modified_data[i] > 0:
        answers.append(1)
    else:
        answers.append(0)
n = len(successive_data)
m = len(answers)

Training und Vorhersage

Trainiere 75% der Daten.

#Lineare Stützvektormaschine
clf = svm.LinearSVC()
#Training mit Support Vector Machine (75 Daten)%Wird für das Training verwendet)
clf.fit(successive_data[:int(n*75/100)], answers[:int(n*75/100)])

Bestätigung der Trainingsergebnisse

Machen Sie Vorhersagen zu den verbleibenden 25% der Daten.

#Testdaten
#Richtige Antwort
expected = answers[int(-n*25/100):]
#Prognose
predicted = clf.predict(successive_data[int(-n*25/100):])

#Vergleichen Sie die letzten 10
print(expected[-10:])
print(list(predicted[-10:]))

#Berechnung der richtigen Antwortrate
correct = 0.0
wrong = 0.0
for i in range(int(n*25/100)):
    if expected[i] == predicted[i]:
        correct += 1
    else:
        wrong += 1
print("Richtige Antwortrate:" + str(correct/(correct+wrong) * 100) + "%")

Ergebnis

Im Lehrmaterialvideo liegt die korrekte Antwortrate bei 61%. Wenn ich es tatsächlich versuche, erscheint eine Warnung und die richtige Antwortrate liegt bei etwa 50% (fast kein Unterschied, wenn ich es vermute) ...

Wird es einen Unterschied in den Ergebnissen geben, weil die Versionen von Python usw. unterschiedlich sind?

C:\Anaconda3\lib\site-packages\sklearn\svm\_base.py:947: ConvergenceWarning: Liblinear failed to converge, increase the number of iterations.
  "the number of iterations.", ConvergenceWarning)
[0, 0, 0, 1, 0, 0, 0, 1, 1, 0]
[0, 0, 0, 0, 1, 0, 0, 0, 1, 1]
Richtige Antwortrate: 55.62248995983936%

Bonus

Visualisieren Sie Beispieldaten stock.png

Recommended Posts

Python & Machine Learning Study Memo ⑦: Aktienkursprognose
Python & Machine Learning Study Memo: Vorbereitung der Umgebung
Aktienkursprognose mit maschinellem Lernen (Scikit-Learn)
Aktienkursprognose mit maschinellem Lernen (Return Edition)
Python & Machine Learning Study Memo ③: Neuronales Netz
Python & maschinelles Lernen Lernnotiz Machine: Maschinelles Lernen durch Rückausbreitung
Python & Machine Learning Study Memo ⑥: Zahlenerkennung
Python & Machine Learning Study Memo ⑤: Klassifikation von Ayame
Python & Machine Learning Study Memo Introduction: Einführung in die Bibliothek
Aktienkursprognose durch maschinelles Lernen Numerai Signals
Python: Aktienkursprognose Teil 1
[Python] Meine Aktienkursprognose [HFT]
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Aktienkursprognose durch maschinelles Lernen Beginnen wir mit Numerai
[Memo] Maschinelles Lernen
Ich habe Python 3.5.1 installiert, um maschinelles Lernen zu studieren
Aktienkursprognose mit Deep Learning (TensorFlow)
Aktienkurs Prognose durch maschinelles Lernen ist so wahr, Numerai Signale
Python-Klasse (Python-Lernnotiz ⑦)
Memo zum Kurs für maschinelles Lernen
Aktienkursprognose 2 Kapitel 2
Aktienkursprognose mit Deep Learning [Datenerfassung]
Aktienkursprognose 1 Kapitel 1
Python-Lernnotiz für maschinelles Lernen von Chainer aus Kapitel 2
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 1 und 2
Konstruktionsnotiz für eine maschinelle Lernumgebung von Python
Behandlung von Python-Ausnahmen (Python-Lernnotiz ⑥)
Lernressourcen-Lernblock für maschinelles Lernen
Aktienkursprognose mit Tensorflow
Python Machine Learning Programming> Schlüsselwörter
Beginnend mit maschinellem Python-Lernen
Holen Sie sich Lager mit Python
Erstellen Sie mit macOS sierra eine Python-Lernumgebung für maschinelles Lernen
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 7 Regressionsanalyse
Python-Steuerungssyntax, Funktionen (Python-Lernnotiz ②)
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Zusammenfassung des maschinellen Lernens von Python-Anfängern
Eingabe / Ausgabe mit Python (Python-Lernnotiz ⑤)
Abschnittsplanung Lernnotiz ~ von Python ~
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 8 Einführung in Numpy
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 10 Einführung in Cupy
Vorhersage von Aktienkursänderungen mithilfe von Metallkennzeichnung und zweistufigem maschinellem Lernen
Hinweise zur Python-Grammatik für maschinelles Lernen in PyQ
Python-Zahlen, Zeichenfolgen, Listentypen (Python-Lernnotiz ①)
Python-Memo
[Lernnotiz] Grundlagen des Unterrichts mit Python
Verstärken Sie Bilder für maschinelles Lernen mit Python
Python-Memo
Verwenden Sie die API-Gruppe A3RT für maschinelles Lernen aus Python
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
[Python] Techniken, die häufig beim maschinellen Lernen verwendet werden
Warum Python für maschinelles Lernen ausgewählt wird
Python-Memo
Laden Sie japanische Aktienkursdaten mit Python herunter
"Python Machine Learning Programming" - Zusammenfassung (Jupyter)
Maschinelles Lernen
[Shakyo] Begegnung mit Python zum maschinellen Lernen
Struktur und Betrieb der Python-Daten (Python-Lernnotiz ③)
Python-Memo
[Python] Erste Datenanalyse / maschinelles Lernen (Kaggle)
Python lernen