Skip to main content

Time series cross-validation

Project description

TSCV: Time Series Cross-Validation

This repository is a scikit-learn extension for time series cross-validation. It introduces gaps between the training set and the test set, which mitigates the temporal dependence of time series and prevents information leakage.

Installation

pip install tscv

Update

pip install tscv --upgrade

I recommend you to update it often.

Usage

This extension defines 3 cross-validator classes and 1 function:

  • GapLeavePOut
  • GapKFold
  • GapWalkForward
  • gap_train_test_split

The three classes can all be passed, as the cv argument, to the cross_val_score function in scikit-learn, just like the native cross-validator classes in scikit-learn.

The one function is an alternative to the train_test_split function in scikit-learn.

Examples

The following example uses GapKFold instead of KFold as the cross-validator.

import numpy as np
from sklearn import datasets
from sklearn import svm
from sklearn.model_selection import cross_val_score
from tscv import GapKFold

iris = datasets.load_iris()
clf = svm.SVC(kernel='linear', C=1)

# use GapKFold as the cross-validator
cv = GapKFold(n_splits=5, gap_before=5, gap_after=5)
scores = cross_val_score(clf, iris.data, iris.target, cv=cv)

The following example uses gap_train_test_split to split the data set into the training set and the test set.

import numpy as np
from tscv import gap_train_test_split

X, y = np.arange(20).reshape((10, 2)), np.arange(10)
X_train, X_test, y_train, y_test = gap_train_test_split(X, y, test_size=2, gap_size=2)

Support

See the documentation here.

If you need any further help, please use the issue tracker.

Contributing

  • Report bugs in the issue tracker
  • Express your use cases in the issue tracker
  • Support me at scikit-learn/scikit-learn#13761 if you want to see this extension merged in scikit-learn

Authors

This extension is developed mainly by Wenjie Zheng.

The GapWalkForward cross-validator is adapted from the TimeSeriesSplit of scikit-learn (see Kyle Kosic's PR scikit-learn/scikit-learn#13204).

Acknowledgments

  • I would like to thank Christoph Bergmeir, Prabir Burman, and Jeffrey Racine for the helpful discussion.

License

BSD-3-Clause

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tscv-0.0.4.tar.gz (7.9 kB view details)

Uploaded Source

Built Distribution

tscv-0.0.4-py3-none-any.whl (8.8 kB view details)

Uploaded Python 3

File details

Details for the file tscv-0.0.4.tar.gz.

File metadata

  • Download URL: tscv-0.0.4.tar.gz
  • Upload date:
  • Size: 7.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.20.1 setuptools/40.4.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.1

File hashes

Hashes for tscv-0.0.4.tar.gz
Algorithm Hash digest
SHA256 95bb9d5620cac67a117623cee18ac030ea8724e1364e058d140b87100946fcc7
MD5 7c437a398b42fbab73173cec70fa09bd
BLAKE2b-256 d00518ddf4c63cac310d8c0016f0f2b86ede651bb2af3d111be21c63ae11a937

See more details on using hashes here.

File details

Details for the file tscv-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: tscv-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 8.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.20.1 setuptools/40.4.0 requests-toolbelt/0.8.0 tqdm/4.26.0 CPython/3.7.1

File hashes

Hashes for tscv-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 1705568ec9d37da1143039fab80381ef53a8d73021426538ce31ffd2b0250dc7
MD5 253bc4a428b7c1985671f8025336455d
BLAKE2b-256 c7e99ce9971979857ff3d452f416a46cce07027b57c0383947c035c042c60fd1

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page