vous pouvez accéder à l'ensemble de données sur ce lien https://drive.google.com/file/d/0B9Hd-26lI95ZeVU5cDY0ZU5MTWs/view?usp=sharingClassification des séries chronologiques
Ma tâche est de prédire le mouvement des prix d'un fonds sectoriel. Combien ça monte ou descend n'a pas vraiment d'importance, je veux seulement savoir si ça monte ou descend. Donc, je le définis comme un problème de classification.
Étant donné que cet ensemble de données est une série chronologique de données, j'ai rencontré de nombreux problèmes. J'ai lu des articles sur ces problèmes, comme je ne peux pas utiliser la validation croisée k-fold car il s'agit de données de séries chronologiques. Vous ne pouvez pas ignorer l'ordre des données.
mon code est le suivant:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import datetime
from sklearn.linear_model import LinearRegression
from math import sqrt
from sklearn.svm import LinearSVC
from sklearn.svm import SVCenter code here
lag1 = pd.read_csv(#local file path, parse_dates=['Date'])
#Trend : if price going up: ture, otherwise false
lag1['Trend'] = lag1.XLF > lag1.XLF.shift()
train_size = round(len(lag1)*0.50)
train = lag1[0:train_size]
test = lag1[train_size:]
variable_to_use= ['rGDP','interest_rate','private_auto_insurance','M2_money_supply','VXX']
y_train = train['Trend']
X_train = train[variable_to_use]
y_test = test['Trend']
X_test = test[variable_to_use]
#SVM Lag1
this_C = 1.0
clf = SVC(kernel = 'linear', C=this_C).fit(X_train, y_train)
print('XLF Lag1 dataset')
print('Accuracy of Linear SVC classifier on training set: {:.2f}'
.format(clf.score(X_train, y_train)))
print('Accuracy of Linear SVC classifier on test set: {:.2f}'
.format(clf.score(X_test, y_test)))
#Check prediction results
clf.predict(X_test)
Tout d'abord, est ma méthode ici: d'abord générer une colonne de vrai et faux? J'ai peur que la machine ne puisse pas comprendre cette colonne si je lui donne simplement cette colonne. Dois-je d'abord effectuer une régression puis comparer le résultat numérique pour générer une liste de monter ou descendre?
La précision sur l'ensemble d'entraînement est très faible à: 0.58 Je reçois un tableau avec toutes les trues avec clf.predict (X_test) dont je ne sais pas pourquoi j'obtiendrais tous les indices.
Et je ne sais pas si la précision qui en résulte est calculée de quelle façon: par exemple, je pense que ma précision actuelle ne compte que le nombre de vrai et de faux, mais en ignorant l'ordre de ceux-ci? Comme il s'agit de données de séries temporelles, ignorer l'ordre n'est pas correct et ne me donne aucune information sur la prévision du mouvement des prix. Disons que j'ai 40 exemples dans l'ensemble de test, et j'ai 20 Tures que j'aurais 50% de précision. Mais je suppose que les indices ne sont pas dans la bonne position telle qu'elle apparaît dans l'ensemble de vérité du terrain. (Dites-moi si je me trompe)
Je pense aussi utiliser Gradient Boosted Tree pour faire le classement, serait-ce mieux?
Pouvez-vous ajouter un exemple de code? –