[PYTHON] [1 exemplaire par jour] Créez un programme de prévision des actions [Daily_Coding_002]

en premier

Cet article est un article de mémoire destiné aux élèves du primaire qui étudient par eux-mêmes le python, l'apprentissage automatique, etc. «Ce sera extrêmement simple,« étudiez en copiant le code qui vous intéresse ». ――Nous vous serions reconnaissants si vous pouviez nous donner des commentaires constructifs (si vous l'aimez, veuillez LGTM et stockez-le).

Thème: Créer un programme de prévision des actions

Le sujet d'aujourd'hui est une vidéo sur Youtube intitulée ** Construire un programme de prévision d'actions **.

Youtube: Build a Stock Prediction Program

L'analyse a utilisé Google Colaboratry, comme le montre la vidéo youtube.

Alors j'aimerais le faire.

Étape 1: Importer la bibliothèque

Tout d'abord, importez la bibliothèque. Cette fois, nous utiliserons une bibliothèque appelée quandl. quandl semble être une bibliothèque pour récupérer le cours des actions et d'autres données (je ne savais pas ...).

pip install quandl

Comme il ne s'agit pas de la bibliothèque initialement incluse dans Google colab, installez-la avec pip.

Ensuite, importez la bibliothèque à utiliser cette fois.

Étape 1: Importer la bibliothèque

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

En plus du quandl que j'ai installé plus tôt, j'ai importé numpy et diverses bibliothèques scikit-learn.

Étape 2: Acquisition-traitement des données (pré-traitement)

Ensuite, récupérez les données. Cette fois, nous utilisons le cours de l'action Facebook.

df = quandl.get('WIKI/FB')

print(df.head())

Vous avez maintenant obtenu les données. Puisque ʻAdj. Close` (cours de clôture ajusté) est utilisé dans les données acquises, remplacez df.

df = df[['Adj. Close']]
print(df.head())

Décalez les données contenues dans le df de quelques jours pour créer une autre colonne (Prediction). À ce moment-là, «combien de jours de décalage» est stocké comme une variable.

forecast_out = 30

df['Prediction'] = df[['Adj. Close']].shift(-forecast_out)

print(df.tail())

Si vous regardez la fin de df, vous pouvez voir que la valeur de Prediction est NaN par le nombre de jours décalés.

Ensuite, créez des données d'entraînement à partir de df ['Predcition']. Pour les données d'entraînement, nous utiliserons la partie des données créée en décalant les données pendant plusieurs jours (30 jours cette fois), hors NaN. Je l'utilise pour prédire le décalage de 30 jours.

X = np.array(df.drop(['Prediction'], 1))

X = X[:-forecast_out]![stockprediction.png]
print(X)

【image】 stockprediction.png

Ensuite, créez des données de test. La méthode est la même que les données d'entraînement.

y = np.array(df['Prediction'])

y = y[:-forecast_out]
print(y)

Maintenant, les données ont été traitées. Ensuite, nous passerons à l'analyse à l'aide de scikit-learn.

Étape 3: Prédiction à l'aide de Sklearn

Divisez les données d'entraînement (X) et les données de test (y) par train_test_split de sklearn.

x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

Cette fois, nous ferons des prédictions à l'aide de SVM et de régression linéaire.

#SVM rbf(Régression non linéaire)
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)

Vous venez de créer un modèle entraîné à l'aide des données d'entraînement.

Utilisons-le pour faire des prédictions

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)

Ceci termine la prédiction avec le modèle créé.

finalement

――Comme vous le comprenez, la prédiction ci-dessus n'a pas de sens. Je comprends qu'étudier comment utiliser sklearn est le sens de cette copie. «Il existe de nombreux articles sur la prévision des cours des actions et des matières premières, et l'analyse des séries chronologiques est très approfondie, je voudrais donc continuer à apprendre.

c'est tout.

(Apprendre jusqu'à présent)

  1. [1 copie par jour] Prédire l'attrition des employés [Daily_Coding_001]

Recommended Posts

[1 exemplaire par jour] Créez un programme de prévision des actions [Daily_Coding_002]
[1 copie par jour] Prédire l'attrition des employés [Daily_Coding_001]
[1 exemplaire par jour] Classify_images_Using_Python & Machine Learning [Daily_Coding_003]