pyts.classification.LearningShapelets¶
-
class
pyts.classification.LearningShapelets(n_shapelets_per_size=0.2, min_shapelet_length=0.1, shapelet_scale=3, penalty='l2', tol=0.001, C=1000, learning_rate=1.0, max_iter=1000, multi_class='multinomial', alpha=-100, fit_intercept=True, intercept_scaling=1.0, class_weight=None, verbose=0, random_state=None, n_jobs=None)[来源]¶ 学习Shapelets算法。
该估计器包含两个步骤:首先计算shapelets与时间序列之间的距离,然后利用这些距离作为特征进行逻辑回归。该算法同时学习shapelets和逻辑回归的系数。
Parameters: - n_shapelets_per_size : int or float (default = 0.2)
每种尺寸的shapelet数量。如果是浮点数,则表示时间戳数量的一个比例,每种尺寸的shapelet数量等于
ceil(n_shapelets_per_size * n_timestamps)。- min_shapelet_length : int or float (default = 0.1)
shapelets的最小长度。如果是浮点数,它表示时间戳数量的一个比例,每个尺寸的shapelets最小长度等于
ceil(min_shapelet_length * n_timestamps)。- shapelet_scale : int (default = 3)
不同尺度下shapelets的长度变化。 shapelets的长度等于
min_shapelet_length * np.arange(1, shapelet_scale + 1)。 shapelets(以及特征)的总数量等于n_shapelets_per_size * shapelet_scale。- penalty : ‘l1’ or ‘l2’ (default = ‘l2’)
用于指定惩罚中使用的范数。
- tol : float (default = 1e-3)
停止准则的容忍度。
- C : float (default = 1000)
正则化强度的倒数。必须是一个正浮点数。 数值越小表示正则化越强。
- learning_rate : float (default = 1.)
梯度下降优化的学习率。必须为正浮点数。请注意,如果损失函数未下降,学习率将自动降低。
- max_iter : int (default = 1000)
梯度下降算法的最大迭代次数。
- multi_class : {‘multinomial’, ‘ovr’, ‘ovo’} (default = ‘multinomial’)
多类别分类策略。 'multinomial' 代表多项式交叉熵损失。 'ovr' 代表一对多策略。 'ovo' 代表一对一策略。 如果分类任务是二分类,则忽略此设置。
- alpha : float (default = -100)
softmin函数中的缩放项。该值越低,soft最小值越精确。默认值适用于标准化时间序列。
- fit_intercept : bool (default = True)
指定是否在决策函数中添加常数项(也称为偏置或截距)。
- intercept_scaling : float (default = 1.)
截距的缩放比例。仅在
fit_intercept=True时使用。- class_weight : dict, None or ‘balanced’ (default = None)
与类别关联的权重,格式为
{class_label: weight}。 如果未指定,则假定所有类别的权重均为1。 "balanced"模式会根据输入数据中类别的频率自动调整权重, 权重与类别频率成反比,计算公式为n_samples / (n_classes * np.bincount(y))。- verbose : int (default = 0)
控制输出信息的详细程度。必须是非负整数。 如果为正数,每次迭代的损失值都会被打印出来。
- random_state : None, int or RandomState instance (default = None)
用于数据洗牌时的伪随机数生成器种子。如果为整数,random_state将作为随机数生成器的种子。如果是RandomState实例,random_state将直接作为随机数生成器。如果为None,则使用np.random模块中的RandomState实例作为随机数生成器。
- n_jobs : None or int (default = None)
用于计算的作业数量。仅在
multi_class为'ovr'或'ovo'时使用。
注意事项
任务数量(n_tasks)取决于
multi_class的值和类别数量。如果有两个类别,任务数量等于1。如果超过两个类别,任务数量等于:- 1 如果
multi_class='multinomial' - 如果
multi_class='ovr'则为n_classes - 如果
multi_class='ovo'则为 n_classes * (n_classes - 1) / 2
参考文献
[1] J. Grabocka, N. Schilling, M. Wistuba 和 L. Schmidt-Thieme, "学习时间序列形状特征"。数据挖掘国际会议,14,392-401(2014)。 示例
>>> from pyts.classification import LearningShapelets >>> X = [[1, 2, 2, 1, 2, 3, 2], ... [0, 2, 0, 2, 0, 2, 3], ... [0, 1, 2, 2, 1, 2, 2]] >>> y = [0, 1, 0] >>> clf = LearningShapelets(random_state=42, tol=0.01) >>> clf.fit(X, y) LearningShapelets(...) >>> clf.coef_.shape (1, 6)
Attributes: - classes_ : array, shape = (n_classes,)
分类器已知的类别标签数组。
- shapelets_ : array shape = (n_tasks, n_shapelets)
学习到的shapelets。该数组的每个元素都是一个学习到的shapelet。
- coef_ : array, shape = (n_tasks, n_shapelets) or (n_classes, n_shapelets)
决策函数中每个shapelet的系数。
- intercept_ : array, shape = (n_tasks,) or (n_classes,)
向决策函数添加的截距(也称为偏置)。 如果
fit_intercept=False,则截距设置为零。- n_iter_ : array, shape = (n_tasks,)
实际迭代次数。
方法
__init__([n_shapelets_per_size, …])Initialize self. decision_function(X)Decision function scores. fit(X, y[, sample_weight])Fit the model according to the given training data. get_params([deep])Get parameters for this estimator. predict(X)Predict the class labels for the provided data. predict_proba(X)Probability estimates. score(X, y[, sample_weight])Return the mean accuracy on the given test data and labels. set_params(**params)Set the parameters of this estimator. -
__init__(n_shapelets_per_size=0.2, min_shapelet_length=0.1, shapelet_scale=3, penalty='l2', tol=0.001, C=1000, learning_rate=1.0, max_iter=1000, multi_class='multinomial', alpha=-100, fit_intercept=True, intercept_scaling=1.0, class_weight=None, verbose=0, random_state=None, n_jobs=None)[来源]¶ 初始化自身。查看 help(type(self)) 获取准确的签名信息。
-
decision_function(X)[来源]¶ 决策函数得分。
参数: - X : array-like, shape = (n_samples, n_timestamps)
测试样本。
Returns: - T : array, shape = (n_samples,) or (n_samples, n_classes)
决策函数为模型中的每个样本对每个类别进行评分,其中类别的顺序与
self.classes_中的顺序一致。
-
fit(X, y, sample_weight=None)[来源]¶ 根据给定的训练数据拟合模型。
参数: - X : array-like, shape = (n_samples, n_timestamps)
训练向量。
- y : array-like, shape = (n_samples,)
每个数据样本的类别标签。
- sample_weight : None or array-like, shape = (n_samples,) (default = None)
分配给单个样本的权重数组。 如果未提供,则每个样本将被赋予单位权重。
返回值: - self : object
-
get_params(deep=True)¶ 获取此估计器的参数。
参数: - deep : bool, default=True
如果为True,将返回此估计器及其包含的子估计器的参数。
返回值: - params : dict
参数名称映射到对应的值。
-
predict(X)[来源]¶ 预测所提供数据的类别标签。
参数: - X : array-like, shape = (n_samples, n_timestamps)
测试样本。
返回值: - y_pred : array-like, shape = (n_samples,)
每个数据样本的类别标签。
-
predict_proba(X)[来源]¶ 概率估计。
参数: - X : array-like, shape = (n_samples, n_timestamps)
测试样本。
Returns: - T : array, shape = (n_samples, n_classes)
模型中每个类别的样本概率,类别顺序与
self.classes_中的顺序一致。
-
score(X, y, sample_weight=None)¶ 返回给定测试数据和标签的平均准确率。
参数: - X : array-like, shape = (n_samples, n_timestamps)
单变量时间序列。
- y : array-like, shape = (n_samples,)
X的真实标签。
- sample_weight : None or array-like, shape = (n_samples,) (default = None)
样本权重。
Returns: - score : float
self.predict(X)关于 y 的平均准确率。