python中时间序列包的学习:
`import numpy as np
import matplotlib.pyplot as plt
from tslearn.clustering import TimeSeriesKMeans
from sklearn.model_selection import train_test_split
import pandas as pd
#from tslearn.datasets import CachedDatasets
from tslearn.preprocessing import TimeSeriesScalerMeanVariance, TimeSeriesResampler
`
时间序列聚类:
tslearn.clustering
时间序列数据预处理:
tslearn.preprocessing
时间序列重新取样
TimeSeriesResampler
对时间序列重新取样,使其达到目标大小。
Resampler for time series. Resample time series so that they reach the target size.
Parameters: sz (int) – Size of the output time series.#参数为整型;输出时间序列的大小。
Example
TimeSeriesResampler(sz=5).fit_transform([[0, 3, 6]]) # doctest: +NORMALIZE_WHITESPACE
array([[[ 0. ],
[ 1.5],
[ 3. ],
[ 4.5],
[ 6. ]]])
Methods
init(sz) | Initialize self. |
---|---|
fit_transform(X, **kwargs) | Fit to data, then transform it. |
时间周期重新取样。拟合变换(x,**kwargs)[来源]
拟合数据,然后转换它。
参数:x(类似数组)–要重新采样的时间序列数据集。
返回:重新采样的时间序列数据集。
返回类型:numpy.ndarray
时间序列预测源代码
Source code for tslearn.preprocessing
“”"
The :mod:tslearn.preprocessing
module gathers time series scalers.
“”"
import numpy
from sklearn.base import TransformerMixin
from scipy.interpolate import interp1d
from tslearn.utils import to_time_series_dataset, check_equal_size, ts_size
author = ‘Romain Tavenard romain.tavenard[at]univ-rennes2.fr’
[docs]class TimeSeriesResampler(TransformerMixin):
“”"Resampler for time series. Resample time series so that they reach the target size.
Parameters
----------
sz : int
Size of the output time series.
Example
-------
>>> TimeSeriesResampler(sz=5).fit_transform([[0, 3, 6]]) # doctest: +NORMALIZE_WHITESPACE
array([[[ 0. ],
[ 1.5],
[ 3. ],
[ 4.5],
[ 6. ]]])
"""
[docs] def init(self, sz):
self.sz_ = sz
[docs] def fit_transform(self, X, **kwargs):
“”"Fit to data, then transform it.
Parameters
----------
X : array-like
Time series dataset to be resampled.
Returns
-------
numpy.ndarray
Resampled time series dataset.
"""
X_ = to_time_series_dataset(X)
n_ts, sz, d = X_.shape
equal_size = check_equal_size(X_)
X_out = numpy.empty((n_ts, self.sz_, d))
for i in range(X_.shape[0]):
xnew = numpy.linspace(0, 1, self.sz_)
if not equal_size:
sz = ts_size(X_[i])
for di in range(d):
f = interp1d(numpy.linspace(0, 1, sz), X_[i, :sz, di], kind="slinear")
X_out[i, :, di] = f(xnew)
return X_out
[docs]class TimeSeriesScalerMinMax(TransformerMixin):
“”"Scaler for time series. Scales time series so that their span in each dimension is between min
and max
.
Parameters
----------
min : float (default: 0.)
Minimum value for output time series.
max : float (default: 1.)
Maximum value for output time series.
Note
----
This method requires a dataset of equal-sized time series.
Example
-------
>>> TimeSeriesScalerMinMax(min=1., max=2.).fit_transform([[0, 3, 6]]) # doctest: +NORMALIZE_WHITESPACE
array([[[ 1. ],
[ 1.5],
[ 2. ]]])
"""
[docs] def init(self, min=0., max=1.):
self.min_ = min
self.max_ = max
[docs] def fit_transform(self, X, **kwargs):
“”"Fit to data, then transform it.
Parameters
----------
X : array-like
Time series dataset to be rescaled.
Returns
-------
numpy.ndarray
Rescaled time series dataset.
"""
X_ = to_time_series_dataset(X)
for i in range(X_.shape[0]):
for d in range(X_.shape[2]):
cur_min = X_[i, :, d].min()
cur_max = X_[i, :, d].max()
cur_range = cur_max - cur_min
X_[i, :, d] = (X_[i, :, d] - cur_min) * (self.max_ - self.min_) / cur_range + self.min_
return X_
[docs]class TimeSeriesScalerMeanVariance(TransformerMixin):
“”"Scaler for time series. Scales time series so that their mean (resp. standard deviation) in each dimension is
mu (resp. std).
Parameters
----------
mu : float (default: 0.)
Mean of the output time series.
std : float (default: 1.)
Standard deviation of the output time series.
Note
----
This method requires a dataset of equal-sized time series.
Example
-------
>>> TimeSeriesScalerMeanVariance(mu=0., std=1.).fit_transform([[0, 3, 6]]) # doctest: +NORMALIZE_WHITESPACE
array([[[-1.22474487],
[ 0. ],
[ 1.22474487]]])
"""
[docs] def init(self, mu=0., std=1.):
self.mu_ = mu
self.std_ = std
[docs] def fit_transform(self, X, **kwargs):
“”"Fit to data, then transform it.
Parameters
----------
X
Time series dataset to be rescaled
Returns
-------
numpy.ndarray
Rescaled time series dataset
"""
X_ = to_time_series_dataset(X)
for i in range(X_.shape[0]):
for d in range(X_.shape[2]):
cur_mean = X_[i, :, d].mean()
cur_std = X_[i, :, d].std()
if cur_std == 0.:
cur_std = 1.
X_[i, :, d] = (X_[i, :, d] - cur_mean) * self.std_ / cur_std + self.mu_
return X_