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 vectorielle de soutien

    1. Régression linéaire Voir la corrélation entre le volume des transactions et le cours de l'action ・ Vérifiez l'inclinaison de la droite de régression et de la ligne de démarcation SVR ・ Vérifiez la distribution dans la marge ・ Vérifiez l'erreur quadratique moyenne de la régression linéaire et de la régression SVR
import matplotlib.pyplot as plt
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.svm import SVR
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)

#Valeur de la fonctionnalité(Le volume)
x = npArray[:,2:3]

#Données de prévision (cours de l'action)
y = npArray[:, 3:4].ravel()

#Divisé en données d'entraînement et données d'évaluation
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)#, random_state=0)

#Standardisation des fonctionnalités
sc = StandardScaler()

#Données d'entraînement standardisées avec un convertisseur
x_train_std = sc.fit_transform(x_train)
#Standardisez les données de test avec un convertisseur formé avec des données d'entraînement
x_test_std = sc.transform(x_test)

#Créer un modèle de régression linéaire
mod = LinearRegression()
#Créer un modèle SVR
mod2 = SVR(kernel='linear', C=10000.0, epsilon=250.0)

#Apprentissage du modèle de régression linéaire
mod.fit(x_train_std, y_train)
# SVR
mod2.fit(x_train_std, y_train)

#Graphique des données d'entraînement (volume)
plt.figure(figsize=(8,5))
#Tri de volume (0 entre les valeurs minimum et maximum).1 fois création de ndarray)
x_ndar = np.arange(x_train_std.min(), x_train_std.max(), 0.1)[:, np.newaxis]

#Prédiction de la régression linéaire du volume
y_ndar_prd = mod.predict(x_ndar)
#Prédiction SVR de volume
y_ndar_svr = mod2.predict(x_ndar)

## MSE(Erreur quadratique moyenne)
mse_train_lin=mod.predict(x_train_std)
mse_test_lin=mod.predict(x_test_std)
mse_train_svr= mod2.predict(x_train_std)
mse_test_svr  = mod2.predict(x_test_std)
#Régression linéaire MSE
print('Formation MSE de régression linéaire= %.1f,tester= %.1f' % (mean_squared_error(y_train,mse_train_lin),mean_squared_error(y_test, mse_test_lin)))
#SVR MSE
print('Formation SVRMSE= %.1f,tester=  %.1f' % (mean_squared_error(y_train,mse_train_svr),mean_squared_error(y_test, mse_test_svr)))

Si vous essayez plusieurs fois sans spécifier random_state, le MSE de SVR est naturellement petit. 1ère fois Entraînement MSE pour la régression linéaire = 38153,4, test = 33161,9 Formation SVR MSE = 52439,9, test = 56707,7 Deuxième fois Entraînement MSE pour la régression linéaire = 37836,4, test = 33841,3 Formation SVR MSE = 54044,5, test = 51083,7 3e fois Formation MSE pour la régression linéaire = 37381,3, test = 35616,6 Formation SVR MSE = 53499,2, test = 53619,4

Tracons ceci sur un diagramme de dispersion ci-dessous

#Graphique de dispersion des volumes et des stocks
plt.scatter(x_train_std, y_train, color='blue', label='data')
#Retour en ligne droite
plt.plot(x_ndar, y_ndar_prd, color='green', linestyle='-', label='LinearRegression')
#frontière
plt.plot(x_ndar, y_ndar_svr ,color='red', linestyle='-', label='SVR')
#Ligne de marge
plt.plot(x_ndar, y_ndar_svr + mod2.epsilon, color='orange', linestyle='-.', label='margin')
plt.plot(x_ndar, y_ndar_svr - mod2.epsilon, color='orange', linestyle='-.')
#étiquette
plt.ylabel('Closing price')
plt.xlabel('Volume')
plt.title('SVR Regression')
#Guide d'utilisation
plt.legend(loc='lower right')

plt.show()

image.png

La limite SVR est plus douce que la pente de la droite de régression J'ai essayé de prendre la marge de l'epsilon à 250 yens, mais il semble bon de dire que le cours de l'action n'a pas été sensiblement modifié en fonction du volume des transactions et qu'il a suivi une tendance à la hausse.

Recommended Posts

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
Lire la sortie standard d'un sous-processus ligne par ligne en Python
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)
Trouvez le nombre de jours dans un mois
Réécrire des éléments dans une boucle de listes (Python)
Conseils pour accéder à l'API ATND avec Python
Écrire une note sur la version python de python virtualenv
Découvrez la fraction de la valeur saisie en python
Correction des arguments de la fonction utilisée dans map