Git Product home page Git Product logo

tsml's Introduction

UEA Time Series Classification

https://travis-ci.com/uea-machine-learning/tsml.svg?branch=master

A Weka-compatible Java toolbox for time series classification, clustering and transformation. For the python sklearn-compatible version, see sktime

Find out more info about our broader work and dataset hosting for the UCR univariate and UEA multivariate time series classification archives on our website.

This codebase is actively being developed for our research. The dev branch will contain the most up-to-date, but stable, code.

Installation

We are looking into deploying this project on Maven or Gradle in the future. For now there are two options:

  • download the jar file and include as a dependency in your project, or you can run experiments through command line, see the examples on running experiments
  • fork or download the source files and include in a project in your favourite IDE you can then construct your own experiments (see our examples) and implement your own classifiers.

Overview

This codebase mainly represents the implementation of different algorithms in a common framework, which at the time leading up to the Great Time Series Classification Bake Off in particular was a real problem, with implementations being in any of Python, C/C++, Matlab, R, Java, etc. or even combinations thereof.

We therefore mainly provide implementations of different classifiers as well as experimental and results analysis pipelines with the hope of promoting and streamlining open source, easily comparable, and easily reproducible results, specifically within the TSC space.

While they are obviously very important methods to study, we shall very likely not be implementing any kind of deep learning methods in our codebase, and leave those rightfully in the land of optimised languages and libraries for them, such as sktime-dl , the Keras-enabled extension to sktime.

Our examples run through the basics of using the code, however the basic layout of the codebase is this:

evaluation/
contains classes for generating, storing and analysing the results of your experiments
experiments/
contains classes specifying the experimental pipelines we utilise, and lists of classifier and dataset specifications. The 'main' class is Experiments.java, however other experiments classes exist for running on simulation datasets or for generating transforms of time series for later classification, such as with the Shapelet Transform.
timeseriesweka/ and multivariate_timeseriesweka/
contain the TSC algorithms we have implemented, for univariate and multivariate classification respectively.
weka_extras/
contains extra algorithm implementations that are not specific to TSC, such as generalised ensembles or classifier tuners.

Implemented Algorithms

Classifiers

The lists of implemented TSC algorithms shall continue to grow over time. These are all in addition to the standard Weka classifiers and non-TSC algorithms defined under the weka_extras package.

We have implemented the following bespoke classifiers for univariate, equal length time series classification:

Distance Based Dictionary Based Spectral Based Shapelet Based Interval Based Ensembles
DD_DTW BOSS RISE LearnShapelets TSF FlatCote
DTD_C cBOSS cRISE ShapeletTransform TSBF HiveCote
ElasticEnsemble BOP   FastShapelets LPS  
NN_CID WEASEL        
SAX_1NN SAXVSM        
ProximityForest          

And we have implemented the following bespoke classifiers for multivariate, equal length time series classification:

NN_ED_D MultivariateShapeletTransform
NN_ED_I ConcatenateClassifier
NN_DTW_D NN_DTW_A
NN_DTW_I  

Clusterers

Currently quite limited, aside from those already shipped with Weka.

UnsupervisedShapelets  

Filters/Transformations

SimpleBatchFilters that take an Instances (the set of time series), transforms them and returns a new Instances object

ACF ACF_PACF ARMA
BagOfPatternsFilter BinaryTransform Clipping
Correlation Cosine DerivativeFilter
Differences FFT Hilbert
MatrixProfile NormalizeAttribute NormalizeCase
PAA PACF PowerCepstrum
PowerSepstrum RankOrder RunLength
SAX Sine SummaryStats

Paper-Supporting Branches

This project acts as the general open-source codebase for our research, especially the Great Time Series Classification Bake Off. We are also trialling a process of creating stable branches in support of specific outputs.

Current branches of this type are:

Contributors

Lead: Anthony Bagnall (@TonyBagnall, @tony_bagnall, [email protected])

  • James Large (@James-Large, @jammylarge, [email protected])
  • Jason Lines (@jasonlines),
  • George Oastler (@goastler),
  • Matthew Middlehurst (@MatthewMiddlehurst),
  • Michael Flynn (@Michael Flynn),
  • Aaron Bostrom (@ABostrom, @_Groshh_, [email protected]),
  • Patrick Schäfer (@patrickzib)
  • Chang Wei Tan (@ChangWeiTan)

We welcome anyone who would like to contribute their algorithms!

License

GNU General Public License v3.0

tsml's People

Contributors

tonybagnall avatar matthewmiddlehurst avatar james-large avatar mjflynn avatar goastler avatar jasonlines avatar changweitan avatar ostandage avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.