tslearn.clustering.TimeSeriesKMeans

class tslearn.clustering.TimeSeriesKMeans(n_clusters=3, max_iter=50, tol=1e-06, n_init=1, metric='euclidean', max_iter_barycenter=100, metric_params=None, n_jobs=None, dtw_inertia=False, verbose=0, random_state=None, init='k-means++')[source]

用于时间序列数据的K均值聚类。

Parameters:
n_clustersint (default: 3)

要形成的集群数量。

max_iterint (default: 50)

单次运行中k-means算法的最大迭代次数。

tolfloat (default: 1e-6)

惯性变化阈值。如果在某一点上,惯性在两次连续迭代之间的变化小于此阈值,则认为模型已经收敛,算法停止。

n_initint (default: 1)

k-means算法将使用不同的质心种子运行的次数。最终结果将是n_init连续运行中惯性最佳的输出。

metric{“euclidean”, “dtw”, “softdtw”} (default: “euclidean”)

用于聚类分配和重心计算的度量。如果使用“dtw”,则使用DBA进行重心计算。

max_iter_barycenterint (default: 100)

重心计算过程的迭代次数。仅在metric=”dtw”metric=”softdtw”时使用。

metric_paramsdict or None (default: None)

所选指标的参数值。 对于接受交叉距离矩阵计算并行化的指标,metric_params中传递的n_jobs键会被n_jobs参数覆盖。

n_jobsint or None, optional (default=None)

用于并行运行交叉距离矩阵计算的任务数量。 如果无法使用并行化计算交叉距离矩阵,则忽略此设置。 None 表示 1,除非在 joblib.parallel_backend 上下文中。 -1 表示使用所有处理器。有关更多详细信息,请参阅 scikit-learns 的 Glossary

dtw_inertia: bool (default: False)

即使DTW不是选择的度量标准,是否计算DTW惯性。

verboseint (default: 0)

如果非零,打印关于学习模型时的惯性信息,并打印joblib进度消息。

random_stateinteger or numpy.RandomState, optional

用于初始化中心的生成器。如果给定一个整数,它将固定种子。默认为全局的numpy随机数生成器。

init{‘k-means++’, ‘random’ or an ndarray} (default: ‘k-means++’)

初始化方法: ‘k-means++’ : 使用k-means++启发式方法。更多信息请参见scikit-learn的k_init_。 ‘random’: 从数据中随机选择k个观测值(行)作为初始质心。 如果传递了一个ndarray,它应该是形状为(n_clusters, ts_size, d)的数组,并给出初始中心。

Attributes:
labels_numpy.ndarray

每个点的标签。

cluster_centers_numpy.ndarray of shape (n_clusters, sz, d)

聚类中心。 sz 是在拟合时使用的时间序列的大小,如果初始化方法是 'k-means++' 或 'random',并且如果通过 init 参数提供的最长初始质心的大小。

inertia_float

样本到其最近聚类中心的距离之和。

n_iter_int

在拟合过程中执行的迭代次数。

注释

如果 metric 设置为 “euclidean”,算法期望一个等长时间序列的数据集。

示例

>>> from tslearn.generators import random_walks
>>> X = random_walks(n_ts=50, sz=32, d=1)
>>> km = TimeSeriesKMeans(n_clusters=3, metric="euclidean", max_iter=5,
...                       random_state=0).fit(X)
>>> km.cluster_centers_.shape
(3, 32, 1)
>>> km_dba = TimeSeriesKMeans(n_clusters=3, metric="dtw", max_iter=5,
...                           max_iter_barycenter=5,
...                           random_state=0).fit(X)
>>> km_dba.cluster_centers_.shape
(3, 32, 1)
>>> km_sdtw = TimeSeriesKMeans(n_clusters=3, metric="softdtw", max_iter=5,
...                            max_iter_barycenter=5,
...                            metric_params={"gamma": .5},
...                            random_state=0).fit(X)
>>> km_sdtw.cluster_centers_.shape
(3, 32, 1)
>>> X_bis = to_time_series_dataset([[1, 2, 3, 4],
...                                 [1, 2, 3],
...                                 [2, 5, 6, 7, 8, 9]])
>>> km = TimeSeriesKMeans(n_clusters=2, max_iter=5,
...                       metric="dtw", random_state=0).fit(X_bis)
>>> km.cluster_centers_.shape
(2, 6, 1)

方法

fit(X[, y])

计算k均值聚类。

fit_predict(X[, y])

使用X拟合k-means聚类,然后预测X中每个时间序列所属的最接近的聚类。

fit_transform(X[, y])

拟合数据,然后转换它。

from_hdf5(path)

从HDF5文件加载模型。

from_json(path)

从JSON文件加载模型。

from_pickle(path)

从pickle文件加载模型。

get_metadata_routing()

获取此对象的元数据路由。

get_params([deep])

获取此估计器的参数。

predict(X)

预测X中每个时间序列所属的最接近的聚类。

set_output(*[, transform])

设置输出容器。

set_params(**params)

设置此估计器的参数。

to_hdf5(path)

将模型保存到HDF5文件。

to_json(path)

将模型保存为JSON文件。

to_pickle(path)

将模型保存到pickle文件中。

transform(X)

将X转换为聚类距离空间。

fit(X, y=None)[source]

计算k均值聚类。

Parameters:
Xarray-like of shape=(n_ts, sz, d)

时间序列数据集。

y

忽略

fit_predict(X, y=None)[source]

使用X拟合k-means聚类,然后预测X中每个时间序列所属的最接近的聚类。

使用此方法比依次调用 fit 和 predict 更高效。

Parameters:
Xarray-like of shape=(n_ts, sz, d)

要预测的时间序列数据集。

y

忽略

Returns:
labelsarray of shape=(n_ts, )

每个样本所属的集群索引。

fit_transform(X, y=None, **fit_params)[source]

拟合数据,然后进行转换。

将转换器拟合到Xy,并使用可选参数fit_params,返回X的转换版本。

Parameters:
Xarray-like of shape (n_samples, n_features)

输入样本。

yarray-like of shape (n_samples,) or (n_samples, n_outputs), default=None

目标值(无监督转换时为None)。

**fit_paramsdict

额外的拟合参数。

Returns:
X_newndarray array of shape (n_samples, n_features_new)

转换后的数组。

classmethod from_hdf5(path)[source]

从HDF5文件加载模型。 需要 h5py http://docs.h5py.org/

Parameters:
pathstr

文件的完整路径。

Returns:
Model instance
classmethod from_json(path)[source]

从JSON文件加载模型。

Parameters:
pathstr

文件的完整路径。

Returns:
Model instance
classmethod from_pickle(path)[source]

从pickle文件加载模型。

Parameters:
pathstr

文件的完整路径。

Returns:
Model instance
get_metadata_routing()[source]

获取此对象的元数据路由。

请查看用户指南了解路由机制的工作原理。

Returns:
routingMetadataRequest

一个封装了路由信息的MetadataRequest

get_params(deep=True)[source]

获取此估计器的参数。

Parameters:
deepbool, default=True

如果为True,将返回此估计器及其包含的子对象(如果也是估计器)的参数。

Returns:
paramsdict

参数名称映射到它们的值。

predict(X)[source]

预测X中每个时间序列所属的最接近的聚类。

Parameters:
Xarray-like of shape=(n_ts, sz, d)

要预测的时间序列数据集。

Returns:
labelsarray of shape=(n_ts, )

每个样本所属的集群索引。

set_output(*, transform=None)[source]

设置输出容器。

请参阅Introducing the set_output API 以了解如何使用API的示例。

Parameters:
transform{“default”, “pandas”}, default=None

配置transformfit_transform的输出。

  • “default”: 转换器的默认输出格式

  • “pandas”: DataFrame 输出

  • None: 转换配置未更改

Returns:
selfestimator instance

估计器实例。

set_params(**params)[source]

设置此估计器的参数。

该方法适用于简单的估计器以及嵌套对象(如Pipeline)。后者具有形式为<component>__<parameter>的参数,以便可以更新嵌套对象的每个组件。

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

to_hdf5(path)[source]

将模型保存到HDF5文件。 需要 h5py http://docs.h5py.org/

Parameters:
pathstr

完整文件路径。文件必须不存在。

Raises:
FileExistsError

如果已经存在具有相同路径的文件。

to_json(path)[source]

将模型保存到JSON文件。

Parameters:
pathstr

完整文件路径。

to_pickle(path)[source]

将模型保存到pickle文件中。

Parameters:
pathstr

完整文件路径。

transform(X)[source]

将X转换为聚类距离空间。

在新空间中,每个维度是到聚类中心的距离。

Parameters:
Xarray-like of shape=(n_ts, sz, d)

时间序列数据集

Returns:
distancesarray of shape=(n_ts, n_clusters)

到聚类中心的距离

使用tslearn.clustering.TimeSeriesKMeans的示例

k-means

k-means