――Dieser Artikel ist ein Memorandum-Artikel für Grundschüler, die selbst Python, maschinelles Lernen usw. lernen. ――Es wird sehr einfach sein: "Studieren Sie, während Sie den Code kopieren, an dem Sie interessiert sind". ――Wir würden uns über Ihre konstruktiven Kommentare freuen (LGTM & Lager, wenn Sie es mögen).
Das heutige Thema ist ein Video auf Youtube mit dem Titel ** Build a Stock Prediction Program **.
Youtube: Build a Stock Prediction Program
Die Analyse verwendete Google Colaboratry, wie im YouTube-Video gezeigt.
Dann würde ich es gerne machen.
Importieren Sie zunächst die Bibliothek. Dieses Mal werden wir eine Bibliothek namens "quandl" verwenden. quandl
scheint eine Bibliothek zum Abrufen des Aktienkurses und anderer Daten zu sein (ich wusste nicht ...).
pip install quandl
Da es sich nicht um die Bibliothek handelt, die ursprünglich in Google Colab enthalten war, installieren Sie sie mit pip
.
Importieren Sie als Nächstes die diesmal zu verwendende Bibliothek.
import quandl
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.svm import SVR
from sklearn.model_selection import train_test_split
Zusätzlich zu dem zuvor installierten Quandl habe ich numpy und verschiedene "scikit-learn" -Bibliotheken importiert.
Dann holen Sie sich die Daten. Diesmal verwenden wir den Facebook-Aktienkurs.
df = quandl.get('WIKI/FB')
print(df.head())
Sie haben jetzt die Daten erhalten. Da in den erfassten Daten Adj. Close
(angepasster Schlusskurs) verwendet wird, ersetzen Sie df.
df = df[['Adj. Close']]
print(df.head())
Verschieben Sie die im df enthaltenen Daten um einige Tage, um eine weitere Spalte zu erstellen (Vorhersage
). Zu diesem Zeitpunkt wird "wie viele Tage verschoben werden müssen" als Variable gespeichert.
forecast_out = 30
df['Prediction'] = df[['Adj. Close']].shift(-forecast_out)
print(df.tail())
Wenn Sie sich das Ende von df ansehen, können Sie sehen, dass der Wert von "Vorhersage" NaN durch die Anzahl der verschobenen Tage ist.
Als nächstes erstellen Sie Trainingsdaten aus df ['Predcition']
. Für die Trainingsdaten verwenden wir den Teil der Daten, der durch Verschieben der Daten für mehrere Tage (diesmal 30 Tage) ohne NaN erstellt wurde. Ich benutze es, um die Verschiebung von 30 Tagen vorherzusagen.
X = np.array(df.drop(['Prediction'], 1))
X = X[:-forecast_out]![stockprediction.png]
print(X)
【Bild】
Erstellen Sie als Nächstes Testdaten. Die Methode entspricht den Trainingsdaten.
y = np.array(df['Prediction'])
y = y[:-forecast_out]
print(y)
Jetzt wurden die Daten verarbeitet. Als nächstes werden wir mit der Analyse mit Scikit-Learn fortfahren.
Teilen Sie die Trainingsdaten (X) und Testdaten (y) durch train_test_split von sklearn.
x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
Dieses Mal werden wir Vorhersagen mit SVM und linearer Regression treffen.
#SVM rbf(Nichtlineare Regression)
svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1)
svr_rbf.fit(x_train, y_train)
svm_confidence = svr_rbf.score(x_test, y_test)
print('svm confidence:', svm_confidence)
lr = LinearRegression()
lr.fit(x_train, y_train)
lr_confidence = lr.score(x_test, y_test)
print('lr confidence:', lr_confidence)
Sie haben jetzt ein trainiertes Modell mit den Trainingsdaten erstellt.
Verwenden wir es, um Vorhersagen zu treffen
x_forecast = np.array(df.drop(['Prediction'], 1))
print(x_forecast)
lr_prediction = lr.predict(x_forecast)
print(lr_prediction)
svm_prediction = svr_rbf.predict(x_forecast)
print(svm_prediction)
Dies vervollständigt die Vorhersage mit dem erstellten Modell.
―― Wie Sie verstehen, ist die obige Vorhersage bedeutungslos. Ich verstehe, dass das Studium der Verwendung von sklearn die Bedeutung dieses Kopierens ist. ――Es gibt viele Artikel zur Prognose von Aktienkursen und Rohstoffen, und die Zeitreihenanalyse ist sehr tiefgreifend, daher möchte ich weiter lernen.
das ist alles.
(Bisher gelernt)