Comment prévoir le temps de la série dans scikit-learn?

Scikit-learn utilise une approche très pratique basée sur fit et predict méthodes. J'ai le temps de la série de données dans le format adapté pour fit et predict.

Par exemple j'ai le texte suivant Xs:

[[1.0, 2.3, 4.5], [6.7, 2.7, 1.2], ..., [3.2, 4.7, 1.1]]

et le correspondant ys:

[[1.0], [2.3], ..., [7.7]]

Ces données ont la signification suivante. Les valeurs stockées dans ys forme d'une série chronologique. Les valeurs dans Xs sont le temps correspondant à charge "facteurs" qui sont connus pour avoir une certaine influence sur les valeurs de ys (par exemple: la température, l'humidité et la pression atmosphérique).

Maintenant, bien sûr, je peux utiliser fit(Xs,ys). Mais puis-je obtenir un modèle dans lequel les valeurs futures en ys ne dépendent de facteurs et ne pas dependend sur la précédente Y valeurs (au moins directement) et c'est une limitation du modèle. Je voudrais avoir un modèle dans lequel Y_n dépend aussi de Y_{n-1} et Y_{n-2} et ainsi de suite. Par exemple je pourrais avoir besoin d'utiliser une moyenne mobile exponentielle comme un modèle. Quelle est la façon la plus élégante de le faire dans scikit-learn

AJOUTÉ

Comme il a été mentionné dans les commentaires, je peux prolonger Xs en ajoutant ys. Mais de cette façon, comporte certaines limites. Par exemple, si j'ajoute les 5 dernières valeurs de y que 5 nouvelles colonnes à X, les informations sur les délais de la commande de ys est perdu. Par exemple, il n'y a pas d'indication dans les X que les valeurs de la 5ème colonne suivante de la valeur dans la 4ème colonne et ainsi de suite. Comme un modèle, je souhaiterez avoir un ajustement linéaire des cinq dernières ys et utilisez l'assistant fonction linéaire de faire une prédiction. Mais si j'ai 5 valeurs en 5 colonnes, il n'est pas si anodin.

AJOUTÉ 2

De faire de mon problème encore plus clair, je voudrais donner un exemple concret. Je voudrais avoir un "linéaire" modèle dans lequel y_n = c + k1*x1 + k2*x2 + k3*x3 + k4*EMOV_n, où EMOV_n est juste une moyenne mobile exponentielle. Comment puis-je mettre en œuvre ce modèle simple dans scikit-learn?

  • vous pouvez simplement ajouter [np.nan] + ys[:-1] comme l'un des facteurs
  • behzad.nouri, j'ai étendu ma question en réponse à votre commentaire.
  • Je pense que la meilleure chose à faire est d'essayer plusieurs différents modèles simples, y compris ce que @behzad.nouri a suggéré, et l'utilisation de la validation croisée pour voir si un modèle fonctionne mieux que les autres et acquérir une intuition. Il serait peut-être temps que l'heure exacte de l'information n'est pas aussi important que vous le pensez. Je voudrais utiliser l'étendue Xs vecteur idée dans un réseau de neurones, et voir si cela a fonctionné. Dans cette approche, vous pourriez sorte de garder votre information en temps, même si le n de.n. serait une sorte de boîte noire.
  • Vos données sont hébergées n'importe où? Pourrais-je le regarder?
  • Malheureusement, la date ne sont pas hébergés, et l'exemple ci-dessus est juste un exemple (les données réelles ont une structure plus complexe).
  • Il semble que vous essayez de faire un modèle autorégressif. Vous pouvez utiliser Statsmodels ARMA ou ARIMA paquets ou d'ajouter des points à votre ensemble de données liées aux précédentes points dans le temps.
  • Salut, j'apprécierais si quelqu'un d'entre vous pouvait m'aider avec cela. stackoverflow.com/questions/40350460/...

InformationsquelleAutor Roman | 2013-12-30