[PYTHON] Prévision du cours de l'action 2 Chapitre 2

Aidemy 2020/10/30

introduction

Bonjour, c'est Yope! Je suis une école littéraire croustillante, mais j'étais intéressé par les possibilités de l'IA, alors je suis allé à l'école spécialisée en IA "Aidemy" pour étudier. Je voudrais partager les connaissances acquises ici avec vous, et je les ai résumées dans Qiita. Je suis très heureux que de nombreuses personnes aient lu l'article de synthèse précédent. Merci! Ceci est le deuxième article de la prévision du cours de l'action. Ravi de vous rencontrer.

Quoi apprendre cette fois ・ ③ Acquérir des données chronologiques sur le cours moyen de l'action Nikkei ・ ④ Créez un modèle qui prédit les hauts et les bas des cours des actions

③ Acquérir des données chronologiques sur le cours moyen de l'action Nikkei

Flux d'acquisition de données de séries chronologiques

Acquérir des données chronologiques sur les cours des actions et les convertir en DataFrame Ii Supprimer les éléments autres que le "cours de clôture" des données et trier par date Ⅲ Combinez les données de tweet et les données de séries chronologiques

Acquérir des données chronologiques sur les cours des actions et les convertir en DataFrame

-Bien que __ "pd.read_csv ()" __ soit également utilisé cette fois, puisque csv est obtenu à partir de l'URL, il est nécessaire de spécifier l'URL en utilisant le module __urllib.request __ appris dans "Scraping 1". y a-t-il. Par conséquent, créez la fonction "read_csv" qui résume vous-même ces processus. -D'abord, ouvrez l'URL avec __urllib.request.urlopen () __, lisez-la avec __read () __, et décodez-la avec __decode ('shift_jis') __. Si vous allez aussi loin, vous pouvez l'obtenir en tant que DataFrame avec __ "pd.read_csv" __ comme un fichier csv normal.

·code スクリーンショット 2020-10-20 17.14.41.png

Ii Supprimer les éléments autres que le "cours de clôture" des données et trier par date

-Dans cette prédiction, seuls __ "date de données" __ et __ "cours de clôture" __ sont utilisés, donc __ supprimer les autres __. Aussi, je veux trier les données par __date __, donc je convertis la "date de données" en __index et la trie . - "pd.to_datetime ()" __ gère la "date des données" comme des données de séries chronologiques. Utilisez également __ "set_index ()" __ pour en faire un index. -Les données non utilisées cette fois __ ['open price', 'high price', 'low price'] __ sont supprimées avec __ "drop ()" __, et __ "sort_index (ascending = True)" __ Trie les dates par ordre croissant (la plus ancienne en premier) avec.

·code スクリーンショット 2020-10-20 18.24.52.png

Ⅲ Combinez les données de tweet et les données de séries chronologiques

-Les données de séries chronologiques __ "df" __ créées dans la section précédente et organisées dans la section précédente, et les données de tweet __ "df_tweets" __ "join ()" créées au chapitre 1 et liées à la valeur PN. Combinez avec __ et supprimez NaN avec __ "dropna ()" __. Enregistrez-le sous "table.csv" avec __ "to_csv ()" __.

・ Code![Capture d'écran 2020-10-20 18.40.26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/e66eda5b-959c-bb46- 2e0b-fa7d9051bc85.png)

・ Résultat de sortie (partie seulement) スクリーンショット 2020-10-20 20.46.09.png

④ Créez un modèle qui prédit les hauts et les bas du cours de l'action le lendemain à partir du sentiment quotidien.

Flux de prévision du cours de l'action

I Divisez les données et créez des données avec index de "date" et colonne "valeur pn" et "cours de clôture" Ii Créer des données avec un index de "date" et une colonne de "valeur pn" et "cours de clôture" Ⅲ Calculez la différence entre le cours de l'action (valeur finale) et le jour précédent de la valeur PN pour les données d'entraînement Ⅳ Obtenez la différence entre le cours de l'action (valeur finale) et la valeur PN pour les trois derniers jours du jour i et calculez-la comme une quantité de fonction. Ⅴ Créer un modèle à partir de fonctionnalités

I. Diviser et normaliser les données

・ Cette fois, le cours de l'action est prédit par __ "Analyse technique" . Dans cette méthode, les hauts et les bas du cours de l'action le jour suivant sont prédits en utilisant le changement de série chronologique (différence) du cours moyen de l'action au cours des trois derniers jours et le changement (différence) de la valeur PN __ comme quantités de caractéristiques. -Tout d'abord, divisez le "tableau" de données qui stocke la "valeur PN" et le "cours de clôture" quotidiens créés dans la section précédente en __ données de formation et données de test. Utilisez __ "train_test_split ()" __ pour le fractionnement. La valeur __PN __ est stockée dans «X», et le prix de clôture __ est stocké dans «y». -Ensuite, les données de formation (valeur PN) sont standardized, et les données de __test sont également standardisées en utilisant la moyenne et la variance des __ données de formation.

·code スクリーンショット 2020-10-20 21.00.31.png

Ii Créer des données avec un index de "date" et une colonne de "valeur pn" et "cours de clôture"

・ Après la standardisation, l'étape suivante consiste à convertir les données d'entraînement et les données de test en DataFrame. La colonne est __ «valeur PN» et «cours de clôture» __, et stocke __ «X standardisé» et «y» __, respectivement. De plus, __index est une date __. -Enregistrer le DataFrame créé au format csv afin qu'il puisse être utilisé dans les sections suivantes.

·code スクリーンショット 2020-10-20 21.18.57.png

Ⅲ Calculez la différence entre le cours de l'action (valeur finale) et le jour précédent de la valeur PN pour les données d'entraînement

-__ Le but est de calculer le changement (différence) entre la valeur du PN et le cours de clôture pour les 3 derniers jours __, donc d'abord __ traiter les données afin que le changement par jour puisse être calculé __. ・ Tout d'abord, ouvrez df_train.csv créé dans la section précédente. De plus, puisque ce DataFrame sera divisé immédiatement après, préparez une liste vide afin qu'elle puisse être stockée pour chaque élément. Plus précisément, "exchange_dates" qui stocke la date, "pn_rates" qui stocke la valeur PN, "pn_rates_diff" qui trouve la différence par rapport à la valeur PN de la ligne précédente et "pn_rates_diff" qui stocke le cours de l'action (cours de clôture) de la même manière. Préparez une liste vide de "exchange_rates" et "exchange_rates_diff" qui trouve la différence par rapport au cours de l'action de la ligne précédente. -En outre, préparez la valeur PN de la veille et les cours de clôture "prev_pn" et "prev_exch".

・ Une fois que vous avez atteint ce point, __DataFrame sera divisé __. Je veux gérer cela un jour à la fois, alors je retire __ ligne par ligne __. Pour chaque ligne, divisez-la par __ ",", la première colonne est la date, la deuxième colonne est la valeur PN et la troisième colonne est le prix de l'action, donc chaque __ dans la liste vide créée précédemment Boutique __. -De même, la différence entre la valeur PN / le cours de l'action de la ligne précédente est stockée dans une liste vide. -En mettant la valeur courante dans __ "prev_pn" "prev_exch" __ à la fin de l'instruction for, elle peut être traitée comme les données du jour précédent à la prochaine répétition.

·code スクリーンショット 2020-10-20 22.52.10.png

Ⅳ Obtenez la différence entre le cours de l'action (valeur finale) et la valeur PN pour les trois derniers jours du jour i et calculez-la comme une quantité de fonction.

・ Si vous pouvez décrire les changements par jour, écrivez les changements tous les __3 jours de la même manière __. -Pour spécifier le numéro d'index (date), stockez d'abord la valeur de __ combien de jours séparer __ dans la variable "INPUT_LEN". De la même manière, préparez "tr_input_mat" qui stocke les changements des trois derniers jours et "tr_angle_mat" qui stocke le haut et le bas du cours de l'action le jour de référence (jour i) sous forme de listes vides. -Ensuite, pour tout __i jour dans la plage de la longueur des données de changement de valeur PN "data_len" __, __INPUT_LEN jours Valeur PN et changement de cours de l'action __ avec une liste vide appelée tmp_arr Stockez-le et stockez-le dans la dimension supérieure suivante "tr_input_mat". -De même, la variation du cours de l'action (exchange_rates_diff) le jour i est stockée dans "tr_angle_mat", qui stocke le haut et le bas du cours de l'action, comme "1" si __ plus et "0" si moins.

-En convertissant "tr_input_mat" et "tr_angle_mat" créés jusqu'à présent au format __NumPy et en utilisant __, __ "train_feature_arr" __ (données de formation), __ "train_label_arr" __ (libellé de l'enseignant), c'est finalement un modèle. Les données qui peuvent être transmises sont complétées.

-L'explication jusqu'à présent et le code suivant concernent tous les données d'entraînement, mais comme les données de test sont naturellement nécessaires pour créer un modèle, il est nécessaire de faire de même pour __test data __.

·code スクリーンショット 2020-10-20 22.52.51.png

Ⅴ Créer un modèle à partir de fonctionnalités

・ Une fois que vous avez créé des données d'entraînement et des étiquettes d'enseignant pour les données d'entraînement et les données de test, vous pouvez enfin créer un modèle en les utilisant. -Créer un modèle de prédiction avec __ régression logistique, SVM et forêt aléatoire__ et comparer la précision de prédiction de chacun. ・ (Review) L'apprentissage du modèle se fait avec __ "model.fit ()" __ et l'application se fait avec __ "model.format ()" __.

Sommaire

-Pour acquérir des données chronologiques, acquérir les données chronologiques du cours moyen de l'action Nikkei avec URL, et après avoir effectué le traitement nécessaire tel que le décodage, acquérir avec csv file. Une fois que vous l'avez, __ supprimez les colonnes inutilisées __. -Lors de la création d'un modèle de prévision de cours boursier, il est d'abord nécessaire de créer les données à transmettre au modèle __ __. __ "Différence entre le cours de l'action (valeur finale) et la valeur PN pour les 3 derniers jours du jour i" __ sont les données d'apprentissage, __ "Si le cours de l'action a augmenté ou baissé" __ est le libellé de l'enseignant, alors faites de votre mieux Créer. -La création du modèle lui-même peut être faite avec __ "model.fit ()" __.

Cette fois, c'est fini. Merci d'avoir lu jusqu'à la fin.

Recommended Posts

Prévision du cours de l'action 2 Chapitre 2
Prévision du cours de l'action 1 Chapitre 1
Prévision du cours de l'action avec tensorflow
Python: prévision du cours de l'action, partie 2
Python: prévision du cours de l'action partie 1
[Python] Mes prévisions de cours de bourse [HFT]
Prévision du cours des actions à l'aide de l'apprentissage automatique (scikit-learn)
Prévision du cours des actions à l'aide du Deep Learning (TensorFlow)
Prévision de stock avec TensorFlow (LSTM) ~ Prévision de stock Partie 1 ~
Prévision du cours des actions à l'aide de l'apprentissage automatique (édition de retour)
Prévision du cours des actions à l'aide du Deep Learning (TensorFlow) - Partie 2
Prévision de la fluctuation des prix de la monnaie virtuelle
Prévision du cours de l'action par machine learning Numerai Signals
Kaggle ~ Prévision de prix de l'immobilier ② ~
Mémo d'étude Python & Machine Learning ⑦: Prévision du cours de l'action
Prévision du cours de l'action à l'aide du Deep Learning [acquisition de données]
Kaggle ~ Prévision de prix à domicile ~
Prévision de stock avec TensorFlow (perceptron multicouche: MLP) ~ Prévision de stock 2 ~
Prévision du cours de l'action avec LSTM_1
Obtenez des stocks avec Python
Conseils d'acquisition de données de cours de bourse
[Introduction à Systre] Prévision du cours de l'action; faible lundi m (__) m
Prévisions du cours des actions par apprentissage automatique Commençons Numerai
Prévisions de prix Bitcoin avec TensorFlow (LSTM)
Les prévisions du cours des actions par apprentissage automatique sont si vraies Signaux Numerai
J'ai publié un ensemble de données de prévision boursière UNIQLO sur Kaggle
Code d'acquisition de stock par grattage (Selenium)
Téléchargez les données de cours des actions japonaises avec Python
[Python] Création d'un graphique de tirage des actions
Cours des actions et statistiques (moyenne, écart type)
4ème mois pour continuer à faire des prévisions de stock AI pendant 10 heures par jour
Continuer à faire des prévisions de stock AI pendant 10 heures par jour 3ème mois