TimeSeriesClustering
Provides simple integration of multi-dimensional time-series data (e.g. multiple attributes such as wind availability, solar availability, and electricity demand) in a single aggregation process.
https://github.com/holgerteichgraeber/TimeSeriesClustering.jl
Keywords
clustering energy-systems hierarchical-clustering julia k-means-clustering k-medoids-clustering optimization representative-days time-series-aggregation
Keywords from Contributors
jump california capacity-expansion-planning energy-optimization-model germany fluxes pde thread
Last synced: 9 months ago
JSON representation
Acceptance Criteria
- Revelant topics? true
- External users? true
- Open source license? true
- Active? false
- Fork? false
Repository metadata
Julia implementation of unsupervised learning methods for time series datasets. It provides functionality for clustering and aggregating, detecting motifs, and quantifying similarity between time series datasets.
- Host: GitHub
- URL: https://github.com/holgerteichgraeber/TimeSeriesClustering.jl
- Owner: holgerteichgraeber
- License: mit
- Created: 2018-09-19T22:59:26.000Z (over 6 years ago)
- Default Branch: master
- Last Pushed: 2021-01-20T11:21:16.000Z (over 4 years ago)
- Last Synced: 2024-06-11T17:45:13.335Z (11 months ago)
- Topics: clustering, energy-systems, hierarchical-clustering, julia, k-means-clustering, k-medoids-clustering, optimization, representative-days, time-series-aggregation
- Language: Julia
- Homepage:
- Size: 171 MB
- Stars: 80
- Watchers: 7
- Forks: 23
- Open Issues: 17
- Releases: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
README.md
TimeSeriesClustering is a Julia implementation of unsupervised learning methods for time series datasets. It provides functionality for clustering and aggregating, detecting motifs, and quantifying similarity between time series datasets.
The software provides a type system for temporal data, and provides an implementation of the most commonly used clustering methods and extreme value selection methods for temporal data.
It provides simple integration of multi-dimensional time-series data (e.g. multiple attributes such as wind availability, solar availability, and electricity demand) in a single aggregation process.
The software is applicable to general time series datasets and lends itself well to a multitude of application areas within the field of time series data mining.
The TimeSeriesClustering package was originally developed to perform time series aggregation for energy systems optimization problems. By reducing the number of time steps used in the optimization model, using representative periods leads to significant reductions in computational complexity of these problems.
The package was previously known as ClustForOpt.jl
.
The package has three main purposes:
- Provide a simple process of finding representative periods (reducing the number of observations) for time-series input data, with implementations of the most commonly used clustering methods and extreme value selection methods.
- Provide an interface between representative period data and application (e.g. optimization problem) by having representative period data stored in a generalized type system.
- Provide a generalized import feature for time series, where variable names, attributes, and node names are automatically stored and can then be used later when the reduced time series is used in the application at hand (e.g. in the definition of sets of the optimization problem).
In the domain of energy systems optimization, an example problem that uses TimeSeriesClustering for its input data is the package CapacityExpansion, which implements a scalable generation and transmission capacity expansion problem.
The TimeSeriesClustering package follows the clustering framework presented in Teichgraeber and Brandt, 2019.
The package is actively developed, and new features are continuously added.
For a reproducible version of the methods and data of the original paper by Teichgraeber and Brandt, 2019, please refer to v0.1 (including shape based methods such as k-shape
and dynamic time warping barycenter averaging
).
This package is developed by Holger Teichgraeber @holgerteichgraeber and Elias Kuepper @YoungFaithful.
Installation
This package runs under julia v1.0 and higher.
Install using:
import Pkg
Pkg.add("TimeSeriesClustering")
Documentation
Documentation (Stable): Please refer to this documentation for details on how to use TimeSeriesClustering the current version of TimeSeriesClustering. This is the documentation of the default version of the package. The default version is on the master
branch.
Documentation (Development): If you like to try the development version of TimeSeriesClustering, please refer to this documentation. The development version is on the dev
branch.
See NEWS for significant breaking changes when updating from one version of TimeSeriesClustering to another.
Citing TimeSeriesClustering
If you find TimeSeriesClustering useful in your work, we kindly request that you cite the following paper (link):
@article{Teichgraeber2019joss,
author = {Teichgraeber, Holger and Kuepper, Lucas Elias and Brandt, Adam R},
doi = {https://doi.org/10.21105/joss.01573},
journal = {Journal of Open Source Software},
number = {41},
pages = {1573},
title = {TimeSeriesClustering : An extensible framework in Julia},
volume = {4},
year = {2019}
}
If you find this package useful, our paper on comparing clustering methods for energy systems optimization problems may additionally be of interest.
Quick Start Guide
This quick start guide introduces the main concepts of using TimeSeriesClustering. The examples are taken from problems in the domain of scenario reduction for energy systems optimization. For more detail on the different functionalities that TimeSeriesClustering provides, please refer to the subsequent chapters of the documentation or the examples in the examples folder, specifically workflow_introduction.jl.
Generally, the workflow consists of three steps:
- load data
- find representative periods (clustering + extreme period selection)
- optimization
Example Workflow
After TimeSeriesClustering is installed, you can use it by saying:
using TimeSeriesClustering
The first step is to load the data. The following example loads hourly wind, solar, and demand data for Germany (1 region) for one year.
ts_input_data = load_timeseries_data(:CEP_GER1)
The output ts_input_data
is a ClustData
data struct that contains the data and additional information about the data.
ts_input_data.data # a dictionary with the data.
ts_input_data.data["wind-germany"] # the wind data (choose solar, el_demand as other options in this example)
ts_input_data.K # number of periods
The second step is to cluster the data into representative periods. Here, we use k-means clustering and get 5 representative periods.
clust_res = run_clust(ts_input_data;method="kmeans",n_clust=5)
ts_clust_data = clust_res.clust_data
The ts_clust_data
is a ClustData
data struct, this time with clustered data (i.e. less representative periods).
ts_clust_data.data # the clustered data
ts_clust_data.data["wind-germany"] # the wind data. Note the dimensions compared to ts_input_data
ts_clust_data.K # number of periods
If this package is used in the domain of energy systems optimization, the clustered input data can be used as input to an optimization problem.
The optimization problem formulated in the package CapacityExpansion can be used with the data clustered in this example.
Owner metadata
- Name: Holger Teichgraeber
- Login: holgerteichgraeber
- Email:
- Kind: user
- Description: Ph.D. student at Stanford. Interested in machine learning and optimization.
- Website: www.hteich.com
- Location:
- Twitter:
- Company: Stanford University
- Icon url: https://avatars.githubusercontent.com/u/23627173?u=3e94751a9e08a6cf2133caf4d4047c704d853524&v=4
- Repositories: 14
- Last ynced at: 2024-06-11T15:43:25.422Z
- Profile URL: https://github.com/holgerteichgraeber
GitHub Events
Total
- Create event: 11
- Commit comment event: 12
- Release event: 4
- Issues event: 12
- Watch event: 65
- Delete event: 8
- Issue comment event: 39
- Push event: 42
- Pull request review event: 1
- Pull request review comment event: 14
- Pull request event: 31
- Fork event: 19
Last Year
- Watch event: 10
- Fork event: 2
Committers metadata
Last synced: 9 months ago
Total Commits: 444
Total Committers: 10
Avg Commits per committer: 44.4
Development Distribution Score (DDS): 0.446
Commits in past year: 0
Committers in past year: 0
Avg Commits per committer in past year: 0.0
Development Distribution Score (DDS) in past year: 0.0
Name | Commits | |
---|---|---|
holgerteichgraeber | h****r@t****e | 246 |
elias.kuepper | e****r@r****e | 155 |
Holger Teichgraeber | h****h@c****u | 20 |
Holger Teichgraeber | H****r | 14 |
Holger Teichgraeber | h****h@c****u | 3 |
Daniel S. Katz | d****z@i****g | 2 |
Alan Sill | a****l@t****u | 1 |
Julia TagBot | 5****t | 1 |
Niklas Haag | n****g@r****e | 1 |
arbrandt | 4****t | 1 |
Committer domains:
- relexsolutions.de: 1
- ttu.edu: 1
- ieee.org: 1
- cees-tool-8.stanford.edu: 1
- cees-mazama.stanford.edu: 1
- rwth-aachen.de: 1
- teichgr.de: 1
Issue and Pull Request metadata
Last synced: 9 months ago
Total issues: 53
Total pull requests: 80
Average time to close issues: about 1 month
Average time to close pull requests: 17 days
Total issue authors: 7
Total pull request authors: 8
Average comments per issue: 2.77
Average comments per pull request: 1.4
Merged pull request: 70
Bot issues: 0
Bot pull requests: 0
Past year issues: 0
Past year pull requests: 0
Past year average time to close issues: N/A
Past year average time to close pull requests: N/A
Past year issue authors: 0
Past year pull request authors: 0
Past year average comments per issue: 0
Past year average comments per pull request: 0
Past year merged pull request: 0
Past year bot issues: 0
Past year bot pull requests: 0
Top Issue Authors
- holgerteichgraeber (32)
- YoungFaithful (16)
- 1256ABCDE (1)
- Deepakgthomas (1)
- dsambor10 (1)
- jarupas (1)
- junglegobs (1)
Top Pull Request Authors
- holgerteichgraeber (39)
- YoungFaithful (34)
- danielskatz (2)
- alansill (1)
- arbrandt (1)
- niklashaa (1)
- leonardgoeke (1)
- JuliaTagBot (1)
Top Issue Labels
- enhancement (21)
- bug (10)
Top Pull Request Labels
- bug (8)
- enhancement (5)
- wontfix (1)
Package metadata
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 1
- Total dependent repositories: 0
- Total versions: 4
juliahub.com: TimeSeriesClustering
Julia implementation of unsupervised learning methods for time series datasets. It provides functionality for clustering and aggregating, detecting motifs, and quantifying similarity between time series datasets.
- Homepage:
- Status: removed
- Documentation: https://docs.juliahub.com/TimeSeriesClustering//
- Licenses: MIT
- Latest release: 0.5.3 (published over 5 years ago)
- Last Synced: 2024-07-24T21:32:00.658Z (9 months ago)
- Versions: 4
- Dependent Packages: 1
- Dependent Repositories: 0
-
Rankings:
- Forks count: 8.405%
- Dependent repos count: 9.94%
- Stargazers count: 10.104%
- Average: 12.855%
- Dependent packages count: 22.97%
Score: 6.877296071497429