Python scikit-learn Une collection de conseils de modèles prédictifs souvent utilisés sur le terrain

conditions
1. 1. Données, fonctionnalités

・ Utilise les données de stock pour un an de 2019 pour une certaine marque de divertissement ・ Utilise l'indice inverse moyen Nikkei pour la même période ・ Ne mentionne pas la méthode de validation s'il s'agit de la combinaison optimale de quantités de caractéristiques

2. modèle

・ Pour les besoins de la méthode de mise en œuvre, ne poursuivez pas le réglage des paramètres pour les indices d'évaluation tels que l'apprentissage insuffisant, le surapprentissage et la précision des valeurs prédites.

Régression linéaire

    1. Régression simple Voir la corrélation entre l'indice inverse et le cours de l'action
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
npArray = np.loadtxt("stock.csv", delimiter = ",", dtype = "float",skiprows=1)

#Quantité de caractéristiques (indice inverse)
z = npArray[:,1:2]
z = npArray[:,2:3]
#Données de prévision (cours de l'action)
y = npArray[:, 3:4].ravel()

#Création d'un modèle de régression simple
model = LinearRegression()

#Entraînement
model.fit(z,y)
print('Inclinaison:', model.coef_)
print('Section:', model.intercept_)

#Prévoir
y_pred = model.predict(z)

#Diagramme de dispersion de l'INDEX et du cours de l'action et tracé de la fonction linéaire
plt.figure(figsize=(8,4))
plt.scatter(z,y, color='blue', label='Stock price')
plt.plot(z,y_pred, color='green', linestyle='-', label='LinearRegression')

#Graphique de volume
plt.ylabel('Closing price')
plt.xlabel('Volume')
plt.title('Regression Analysis')
plt.legend(loc='lower right')

Inclinaison: [-2,27391593] Section: 4795.89427740762 On constate que l'indice inverse et le cours de l'action ont une corrélation négative et ne sont pas liés. image.png Ensuite, regardons la corrélation entre le volume des transactions et le prix des actions. Cette fois, il est devenu une corrélation positive, et on peut voir que la tendance à la hausse était presque stable tout au long de l'année. image.png 2. Régression multiple Voir la MSE (erreur quadratique moyenne) du prix de l'action et le résidu du prix de l'action prévu à partir de l'indice inverse et du volume.

import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
npArray = np.loadtxt("stock.csv", delimiter = ",", dtype = "float",skiprows=1)
#Quantité de caractéristiques (indice et volume inverses)
x = npArray[:,1:3]
#Données de prévision (cours de l'action)
y = npArray[:, 3:4].ravel()
#Création de modèles de régression multiple
model = LinearRegression()
#Standardisation des fonctionnalités
sc = StandardScaler()

#Données d'entraînement (INDEX,Formation d'un convertisseur pour la normalisation du volume)
x_train_std = sc.fit_transform(x_train)
#Données de test (INDEX) avec un convertisseur formé avec des données d'entraînement,Volume) est normalisé
x_test_std = sc.transform(x_test)

#Apprendre un modèle avec des données d'entraînement
model.fit(x_train_std, y_train)

#Prédire les cours des actions avec des données d'entraînement et des données de test
y_train_prd = model.predict(x_train_std)
y_test_prd = model.predict(x_test_std)

#Calculer le MSE du prix réel de l'action et du prix prévu
np.mean((y_train - y_train_prd) ** 2)
np.mean((y_test - y_test_prd) ** 2)

# MSE(Calcul de l'erreur quadratique moyenne)
print('MSE ', mean_squared_error(y_train, y_train_prd),mean_squared_error(y_test, y_test_prd))

#Graphique résiduel du prix de l'action prévu (réponse correcte de prévision)
plt.figure(figsize=(7,5)) 
plt.scatter(y_train_prd,  y_train_prd - y_train,
c='orange', marker='s', edgecolor='white',
label='Training')
plt.scatter(y_test_prd,  y_test_prd - y_test,
c='blue', marker='s', edgecolor='white',
label='Test')

plt.xlabel('Stock price')
plt.ylabel('Residual error')
plt.legend(loc='upper left')
plt.hlines(y=0, xmin=0, xmax=1200, color='green', ls='dashed',lw=2)
plt.xlim([220,1200])
plt.tight_layout()
plt.show()

La moyenne quadratique minimale correspond aux données d'entraînement = 17349,4, données de test 23046,2 Comme mentionné ci-dessus, l'indice inverse et le prix de l'action ont une corrélation négative, de sorte que la valeur MSE est élevée et la différence par rapport aux données d'apprentissage est grande. image.png Bien que le montant résiduel soit relativement faible au premier semestre de 2019 lorsque le cours de l'action est d'environ 300 yens, il montre une corrélation négative avec l'indice inverse, et comme il dépasse 500 yens, il y a une grande variation et une grande erreur avec les données de formation. Il s'avère que cela ne peut pas être une prévision des cours des actions

Continuer

Recommended Posts

Python scikit-learn Une collection de conseils de modèles prédictifs souvent utilisés sur le terrain
Python scikit-learn Une collection de conseils de modèles prédictifs souvent utilisés sur le terrain
Collection de conseils Numpy, Pandas souvent utilisés sur le terrain
Une collection de code souvent utilisée dans Python personnel
Récupérer l'appelant d'une fonction en Python
Copiez la liste en Python
Sortie sous la forme d'un tableau python
Un mémorandum de méthode souvent utilisé dans l'apprentissage automatique utilisant scikit-learn (pour les débutants)
Une collection de commandes fréquemment utilisées dans la gestion des serveurs
Un mémorandum sur la mise en œuvre des recommandations en Python
Découvrez la largeur apparente d'une chaîne en python
Commandes souvent utilisées dans l'environnement de développement lors de l'implémentation de Python
L'histoire du champ de modèle Django disparaissant de la classe
Obtenez le nombre d'éléments spécifiques dans la liste python
[Note] Importation de fichiers dans le répertoire parent en Python
[Astuces] Problèmes et solutions dans le développement de python + kivy
Trouver les valeurs propres d'une vraie matrice symétrique en Python
Peut être utilisé avec AtCoder! Une collection de techniques pour dessiner du code court en Python!
[Python] Mémo des phrases fréquemment utilisées dans les scripts Python
Comment déterminer l'existence d'un élément sélénium en Python
Comment vérifier la taille de la mémoire d'une variable en Python
Lire la sortie standard d'un sous-processus ligne par ligne en Python
Un minuteur (ticker) qui peut être utilisé sur le terrain (peut être utilisé n'importe où)
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
Une fonction qui mesure le temps de traitement d'une méthode en python
Obtenez le nombre de lecteurs d'articles sur Mendeley en Python
Générer une collection de première classe en Python
Python VBA pour obtenir une capture de la page WEB entière avec Selenium
Si vous voulez un singleton en python, considérez le module comme un singleton
Résumé des méthodes fréquemment utilisées chez les pandas
Ecrire le test dans la docstring python
Afficher une liste d'alphabets en Python 3
Utiliser un modèle scikit-learn formé à PySpark
Vérifions la chaîne d'octets en mémoire du nombre flottant flottant en Python
Somme des variables dans un modèle mathématique
Exécuter l'interpréteur Python dans le script
Le résultat de l'installation de python sur Anaconda
[python] [meta] Le type de python est-il un type?
Principes de base pour exécuter NoxPlayer en Python
Recevez une liste des résultats du traitement parallèle en Python avec starmap
À la recherche du FizzBuzz le plus rapide en Python
[Introduction à Python] Une explication approfondie des types de chaînes de caractères utilisés dans Python!
L'histoire du traitement A du blackjack (python)
Obtenez une instance datetime à tout moment de la journée en Python
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
Comment obtenir le "nom" d'un champ dont la valeur est limitée par l'attribut choice dans le modèle Django
Différentes façons de lire la dernière ligne d'un fichier csv en Python
Comment passer le résultat de l'exécution d'une commande shell dans une liste en Python
Comment obtenir une liste de fichiers dans le même répertoire avec python
Sortie du nombre de cœurs de processeur en Python
Dessiner un graphique d'une fonction quadratique en Python
[Python] Récupérez les fichiers dans le dossier avec Python
[Python] Trier la liste de pathlib.Path dans l'ordre naturel
Faites correspondre la distribution de chaque groupe en Python
Pourquoi l'implémentation Python d'ISUCON 5 a utilisé Bottle
Techniques souvent utilisées dans le codage court en python (Bloc-notes)
Afficher le résultat du traitement de la géométrie en Python
Trouvez le nombre de jours dans un mois
Réécrire des éléments dans une boucle de listes (Python)