Sktime: A Unified Python Toolbox for Machine Learning with Time Series
github.com
github.com
o Unifying ML API and patterns so that time series can be analyzed in the same way as normal tabular data. Example: sktime
o Preprocessing libraries applying data transformations to the input time series by converting them to a (tabular) form which can be used by normal ML algorithms. These are typically general or specific libraries for feature engineering, feature learning, feature selection and generic transformations. Examples: https://github.com/blue-yonder/tsfresh or https://github.com/prostodata/prosto
Which approach will win is not clear.
https://medium.com/unit8-machine-learning-publication/darts-...
It can be a time series classification if and only if you have labels that say a given sample is an anomaly. But then what if it runs for a while and a new kind of anomaly starts happening that it’s never seen before and isn’t in the training set: will it detect it based on your labels?
Ideally anomaly detection should be a more unsupervised learning scenario where it can automatically determine what’s normal and what’s not.
Prophet contains one specific model developed by Facebook, which you will not find in Sktime.
You won't ever find something like Prophet in Sktime because it's a "higher level" model than anything in Sktime. The cleverness of Prophet is based largely on its automatic feature engineering, with a linear regression model underneath. Whereas a library like Sktime focuses on implementing specific models like ARIMA, and letting you do your own feature engineering.
https://github.com/scikit-learn-contribSo the question is whether sktime can apply ARIMA in this way.
If you don't know how to do this, I'd advise you not to bother, unless you have a really specialistic need.
("just storing and applying fitted coefficients on new data" is straightforward if you have a pure AR(p) model: you can just plug in the coefficients in the recursive AR equation using the last observations. But as soon as you have an MA term, you have a problem, because a finite lag MA(q) model is equivalent to an infinite lag AR(p) model. You need some specialized algorithms like the innovations algorithm or Kalman filters to handle that. Statsmodels uses a Kalman filter on the state space form of the ARMA model.)
As it happens, this is precisely how sktime works. The whole point is that its API is analogous to that of Scikit-learn. This is clearly demonstrated in the example code:
y = load_airline()
y_train, y_test = temporal_train_test_split(y)
fh = np.arange(1, len(y_test) + 1) # forecasting horizon
forecaster = ThetaForecaster(sp=12) # monthly seasonal periodicity
forecaster.fit(y_train)
y_pred = forecaster.predict(fh)
Sktime is just an implementation of various time series models with a Scikit-learn-compatible API. It is still up to the user to know what to do with this stuff.