・ 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
・ 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.
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. 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. 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. 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