平均绝对缩放误差#
- class MeanAbsoluteScaledError(multioutput='uniform_average', multilevel='uniform_average', sp=1, by_index=False)[source]#
平均绝对缩放误差(MASE)。
MASE 输出是非负浮点数。最佳值为 0.0。
与其他缩放性能指标类似,这种无标度误差指标可用于比较单一序列上的预测方法,也可用于比较不同序列之间的预测精度。
该指标非常适合间歇性需求序列,因为它不会给出无限或未定义的值,除非训练数据是平坦的时间序列。在这种情况下,函数会返回一个大值而不是无穷大。
适用于具有同质季节周期的多输出(多元)时间序列数据。
- 参数:
- spint,默认为 1
数据的季节周期性
- multioutput{'raw_values', 'uniform_average'} 或 形状为 (n_outputs,) 的类数组,默认为 'uniform_average'
定义如何聚合多元(多输出)数据的指标。
如果是类数组,则值用作对误差进行平均的权重。
如果是
'raw_values'
,则在多输出输入的情况下返回完整的误差集。如果是
'uniform_average'
,则所有输出的误差以均匀权重进行平均。
- multilevel{'raw_values', 'uniform_average', 'uniform_average_time'}
定义如何聚合分层数据(带层级)的指标。
如果是
'uniform_average'
(默认),则误差在层级之间进行均值平均。如果是
'uniform_average_time'
,则指标应用于所有数据,忽略层级索引。如果是
'raw_values'
,则不跨层级平均误差,保留层级结构。
- by_indexbool,默认为 False
在直接调用指标对象时,确定是否在时间点上进行平均。
如果为 False,则直接调用指标对象会在时间点上进行平均,相当于调用 ``evaluate`` 方法。
如果为 True,则直接调用指标对象会在每个时间点上评估指标,相当于调用
evaluate_by_index
方法。
参考文献
Hyndman, R. J and Koehler, A. B. (2006). “Another look at measures of forecast accuracy”, International Journal of Forecasting, Volume 22, Issue 4.
Hyndman, R. J. (2006). “Another look at forecast accuracy metrics for intermittent demand”, Foresight, Issue 4.
Makridakis, S., Spiliotis, E. and Assimakopoulos, V. (2020) “The M4 Competition: 100,000 time series and 61 forecasting methods”, International Journal of Forecasting, Volume 3.
示例
>>> import numpy as np >>> from sktime.performance_metrics.forecasting import MeanAbsoluteScaledError >>> y_train = np.array([5, 0.5, 4, 6, 3, 5, 2]) >>> y_true = np.array([3, -0.5, 2, 7, 2]) >>> y_pred = np.array([2.5, 0.0, 2, 8, 1.25]) >>> mase = MeanAbsoluteScaledError() >>> mase(y_true, y_pred, y_train=y_train) np.float64(0.18333333333333335) >>> y_train = np.array([[0.5, 1], [-1, 1], [7, -6]]) >>> y_true = np.array([[0.5, 1], [-1, 1], [7, -6]]) >>> y_pred = np.array([[0, 2], [-1, 2], [8, -5]]) >>> mase(y_true, y_pred, y_train=y_train) np.float64(0.18181818181818182) >>> mase = MeanAbsoluteScaledError(multioutput='raw_values') >>> mase(y_true, y_pred, y_train=y_train) array([0.10526316, 0.28571429]) >>> mase = MeanAbsoluteScaledError(multioutput=[0.3, 0.7]) >>> mase(y_true, y_pred, y_train=y_train) np.float64(0.21935483870967742)
方法
__call__
(y_true, y_pred, **kwargs)使用底层指标函数计算指标值。
clone
()获取具有相同超参数和配置的对象的克隆。
clone_tags
(estimator[, tag_names])从另一个对象克隆标签作为动态覆盖。
create_test_instance
([parameter_set])使用第一个测试参数集构建类的实例。
create_test_instances_and_names
([parameter_set])创建所有测试实例的列表及其名称列表。
evaluate
(y_true, y_pred, **kwargs)在给定输入上评估所需的指标。
evaluate_by_index
(y_true, y_pred, **kwargs)返回在每个时间点评估的指标。
func
(y_pred[, sp, horizon_weight, multioutput])平均绝对缩放误差(MASE)。
get_class_tag
(tag_name[, tag_value_default])从类中获取类标签值,包含父类的标签继承。
从类中获取类标签,包含父类的标签继承。
获取 self 的配置标志。
获取对象的默认参数。
get_param_names
([sort])获取对象的参数名称。
get_params
([deep])获取此对象的参数值字典。
get_tag
(tag_name[, tag_value_default, ...])从实例获取标签值,包含标签层级继承和覆盖。
get_tags
()从实例获取标签,包含标签层级继承和覆盖。
get_test_params
([parameter_set])返回评估器的测试参数设置。
检查对象是否由其他 BaseObjects 组成。
load_from_path
(serial)从文件位置加载对象。
load_from_serial
(serial)从序列化内存容器加载对象。
reset
()将对象重置为干净的初始化后状态。
save
([path, serialization_format])将序列化的自身保存到类字节对象或 (.zip) 文件。
set_config
(**config_dict)将配置标志设置为给定值。
set_params
(**params)设置此对象的参数。
set_random_state
([random_state, deep, ...])为 self 设置 random_state 伪随机种子参数。
set_tags
(**tag_dict)将实例级别标签覆盖设置为给定值。
- func(y_pred, sp=1, horizon_weight=None, multioutput='uniform_average', **kwargs)[source]#
平均绝对缩放误差(MASE)。
MASE 输出是非负浮点数。最佳值为 0.0。
与其他缩放性能指标类似,这种无标度误差指标可用于比较单一序列上的预测方法,也可用于比较不同序列之间的预测精度。
该指标非常适合间歇性需求序列,因为它不会给出无限或未定义的值,除非训练数据是平坦的时间序列。在这种情况下,函数会返回一个大值而不是无穷大。
适用于具有同质季节周期的多输出(多元)时间序列数据。
- 参数:
- y_truepd.Series, pd.DataFrame 或 np.array,形状为 (fh,) 或 (fh, n_outputs),其中 fh 是预测范围
真实(正确)目标值。
- y_predpd.Series, pd.DataFrame 或 np.array,形状为 (fh,) 或 (fh, n_outputs),其中 fh 是预测范围
预测值。
- y_trainpd.Series, pd.DataFrame 或 np.array,形状为 (n_timepoints,) 或 (n_timepoints, n_outputs),默认为 None
观察到的训练值。
- spint
训练数据的季节周期性。
- horizon_weight形状为 (fh,) 的类数组,默认为 None
预测范围权重。
- multioutput{'raw_values', 'uniform_average'} 或 形状为 (n_outputs,) 的类数组,默认为 'uniform_average'
定义如何聚合多元(多输出)数据的指标。如果是类数组,则值用作对误差进行平均的权重。如果是 'raw_values',则在多输出输入的情况下返回完整的误差集。如果是 'uniform_average',则所有输出的误差以均匀权重进行平均。
- 返回:
- lossfloat 或 float 的 ndarray
MASE 损失。如果 multioutput 为 'raw_values',则分别返回每个输出的 MASE。如果 multioutput 为 'uniform_average' 或权重 ndarray,则返回所有输出误差的加权平均 MASE。
参考文献
Hyndman, R. J and Koehler, A. B. (2006). “Another look at measures of forecast accuracy”, International Journal of Forecasting, Volume 22, Issue 4.
Hyndman, R. J. (2006). “Another look at forecast accuracy metrics for intermittent demand”, Foresight, Issue 4.
Makridakis, S., Spiliotis, E. and Assimakopoulos, V. (2020) “The M4 Competition: 100,000 time series and 61 forecasting methods”, International Journal of Forecasting, Volume 3.
示例
>>> import numpy as np >>> from sktime.performance_metrics.forecasting import mean_absolute_scaled_error >>> y_train = np.array([5, 0.5, 4, 6, 3, 5, 2]) >>> y_true = np.array([3, -0.5, 2, 7, 2]) >>> y_pred = np.array([2.5, 0.0, 2, 8, 1.25]) >>> mean_absolute_scaled_error(y_true, y_pred, y_train=y_train) 0.18333333333333335 >>> y_train = np.array([[0.5, 1], [-1, 1], [7, -6]]) >>> y_true = np.array([[0.5, 1], [-1, 1], [7, -6]]) >>> y_pred = np.array([[0, 2], [-1, 2], [8, -5]]) >>> mean_absolute_scaled_error(y_true, y_pred, y_train=y_train) 0.18181818181818182 >>> mean_absolute_scaled_error(y_true, y_pred, y_train=y_train, multioutput='raw_values') array([0.10526316, 0.28571429]) >>> mean_absolute_scaled_error(y_true, y_pred, y_train=y_train, multioutput=[0.3, 0.7]) 0.21935483870967742
- classmethod get_test_params(parameter_set='default')[source]#
返回评估器的测试参数设置。
- 参数:
- parameter_setstr,默认为“default”
要返回的测试参数集的名称,用于测试。如果某个值没有定义特殊参数,将返回
"default"
集。
- 返回:
- paramsdict 或 dict 列表,默认为 {}
用于创建类测试实例的参数。每个 dict 都是用于构建一个“有趣”的测试实例的参数,即
MyClass(**params)
或MyClass(**params[i])
创建一个有效的测试实例。create_test_instance
使用params
中的第一个(或唯一)字典。
- __call__(y_true, y_pred, **kwargs)[source]#
使用底层指标函数计算指标值。
- 参数:
- y_true
sktime
兼容数据容器格式的时间序列。 真实(正确)目标值。
sktime
中的个体数据格式是所谓的 mtype 规范,每个 mtype 实现了一个抽象的 scitype。Series
scitype = 个体时间序列,普通预测。pd.DataFrame
,pd.Series
或np.ndarray
(1D 或 2D)Panel
scitype = 时间序列集合,全局/面板预测。pd.DataFrame
具有 2 级行MultiIndex
(instance, time)
,3D np.ndarray
(instance, variable, time)
,list
类型的pd.DataFrame
的Series
Hierarchical
scitype = 分层集合,用于分层预测。pd.DataFrame
具有 3 级或更多级行MultiIndex
(hierarchy_1, ..., hierarchy_n, time)
有关数据格式的更多详细信息,请参阅 mtype 词汇表。有关用法,请参阅预测教程
examples/01_forecasting.ipynb
。- y_pred
sktime
兼容数据容器格式的时间序列 用于与真实值进行评估的预测值。必须与
y_true
格式相同,如果已索引,则索引和列也必须相同。- y_pred_benchmark可选,
sktime
兼容数据容器格式的时间序列 用于比较
y_pred
的基准预测值,用于相对指标。仅当指标需要基准预测值时才需要,如标签requires-y-pred-benchmark
所示。否则,可以传递以确保接口一致性,但会被忽略。必须与y_true
格式相同,如果已索引,则索引和列也必须相同。- y_train可选,
sktime
兼容数据容器格式的时间序列 用于归一化误差指标的训练数据。仅当指标需要训练数据时才需要,如标签
requires-y-train
所示。否则,可以传递以确保接口一致性,但会被忽略。必须与y_true
格式相同,如果已索引则列相同,但索引不一定相同。- sample_weight可选,一维类数组或可调用对象,默认为 None
每个时间点的样本权重。
如果是
None
,则时间索引被视为权重相等。如果是数组,则必须是一维的。如果
y_true
和y_pred
是单个时间序列,则sample_weight
的长度必须与y_true
相同。如果时间序列是面板或分层数据,则所有个体时间序列的长度必须相同,并且对于传递的所有时间序列实例,都必须等于sample_weight
的长度。如果是可调用对象,则必须遵循
SampleWeightGenerator
接口,或具有以下签名之一:y_true: pd.DataFrame -> 1D array-like
,或y_true: pd.DataFrame x y_pred: pd.DataFrame -> 1D array-like
。
- y_true
- 返回:
- lossfloat, np.ndarray 或 pd.DataFrame
计算出的指标,按变量平均或分组。如果提供了
sample_weight
,则按其加权。如果
multioutput="uniform_average"
或类数组,并且multilevel="uniform_average"
或 “uniform_average_time”``,则为 float。该值为在变量和层级上平均的指标(参见类文档字符串)。如果 multioutput="raw_values" 并且
multilevel="uniform_average"
或"uniform_average_time"
,则为形状(y_true.columns,)
的np.ndarray
。第 i 个条目是为第 i 个变量计算的指标。如果
multilevel="raw_values"
,则为pd.DataFrame
。如果multioutput="uniform_average"
,则形状为(n_levels, )
;如果multioutput="raw_values"
,则形状为(n_levels, y_true.columns)
。指标按层级应用,行平均(是/否)如multioutput
中所示。
- clone()[source]#
获取具有相同超参数和配置的对象的克隆。
克隆是另一个没有共享引用、处于初始化后状态的对象。此函数等同于返回
sklearn.clone
的self
。等同于构造一个
type(self)
的新实例,使用self
的参数,即type(self)(**self.get_params(deep=False))
。如果在
self
上设置了配置,则克隆也将具有与原始对象相同的配置,相当于调用cloned_self.set_config(**self.get_config())
。在值上等同于调用
self.reset
,区别在于clone
返回一个新对象,而不是像reset
那样改变self
。- 引发:
- 如果由于错误的
__init__
导致克隆不合规,则引发 RuntimeError。
- 如果由于错误的
- clone_tags(estimator, tag_names=None)[source]#
从另一个对象克隆标签作为动态覆盖。
每个
scikit-base
兼容对象都有一个标签字典。标签可用于存储对象的元数据,或控制对象的行为。标签是特定于实例
self
的键值对,它们是对象构建后不会更改的静态标志。clone_tags
设置来自另一个对象estimator
的动态标签覆盖。clone_tags
方法只能在对象的__init__
方法中调用,在构建期间或通过__init__
直接构建之后调用。动态标签设置为
estimator
中指定名称tag_names
的标签值。tag_names
的默认值是将estimator
中的所有标签写入self
。可以通过
get_tags
或get_tag
检查当前标签值。- 参数:
- estimator:class:BaseObject 或派生类的实例
- tag_namesstr 或 str 列表,默认为 None
要克隆的标签名称。默认值 (
None
) 克隆estimator
中的所有标签。
- 返回:
- self
对
self
的引用。
- classmethod create_test_instance(parameter_set='default')[source]#
使用第一个测试参数集构建类的实例。
- 参数:
- parameter_setstr,默认为“default”
要返回的测试参数集的名称,用于测试。如果某个值没有定义特殊参数,将返回 “default” 集。
- 返回:
- instance具有默认参数的类的实例
- classmethod create_test_instances_and_names(parameter_set='default')[source]#
创建所有测试实例的列表及其名称列表。
- 参数:
- parameter_setstr,默认为“default”
要返回的测试参数集的名称,用于测试。如果某个值没有定义特殊参数,将返回 “default” 集。
- 返回:
- objscls 实例列表
第 i 个实例是
cls(**cls.get_test_params()[i])
- namesstr 列表,与 objs 长度相同
第 i 个元素是测试中 obj 的第 i 个实例的名称。如果实例不止一个,命名约定为
{cls.__name__}-{i}
,否则为{cls.__name__}
。
- evaluate(y_true, y_pred, **kwargs)[source]#
在给定输入上评估所需的指标。
- 参数:
- y_true
sktime
兼容数据容器格式的时间序列。 真实(正确)目标值。
sktime
中的个体数据格式是所谓的 mtype 规范,每个 mtype 实现了一个抽象的 scitype。Series
scitype = 个体时间序列,普通预测。pd.DataFrame
,pd.Series
或np.ndarray
(1D 或 2D)Panel
scitype = 时间序列集合,全局/面板预测。pd.DataFrame
具有 2 级行MultiIndex
(instance, time)
,3D np.ndarray
(instance, variable, time)
,list
类型的pd.DataFrame
的Series
Hierarchical
scitype = 分层集合,用于分层预测。pd.DataFrame
具有 3 级或更多级行MultiIndex
(hierarchy_1, ..., hierarchy_n, time)
有关数据格式的更多详细信息,请参阅 mtype 词汇表。有关用法,请参阅预测教程
examples/01_forecasting.ipynb
。- y_pred
sktime
兼容数据容器格式的时间序列 用于与真实值进行评估的预测值。必须与
y_true
格式相同,如果已索引,则索引和列也必须相同。- y_pred_benchmark可选,
sktime
兼容数据容器格式的时间序列 用于比较
y_pred
的基准预测值,用于相对指标。仅当指标需要基准预测值时才需要,如标签requires-y-pred-benchmark
所示。否则,可以传递以确保接口一致性,但会被忽略。必须与y_true
格式相同,如果已索引,则索引和列也必须相同。- y_train可选,
sktime
兼容数据容器格式的时间序列 用于归一化误差指标的训练数据。仅当指标需要训练数据时才需要,如标签
requires-y-train
所示。否则,可以传递以确保接口一致性,但会被忽略。必须与y_true
格式相同,如果已索引则列相同,但索引不一定相同。- sample_weight可选,一维类数组或可调用对象,默认为 None
每个时间点的样本权重或可调用对象。
如果是
None
,则时间索引被视为权重相等。如果是数组,则必须是一维的。如果
y_true
和y_pred
是单个时间序列,则sample_weight
的长度必须与y_true
相同。如果时间序列是面板或分层数据,则所有个体时间序列的长度必须相同,并且对于传递的所有时间序列实例,都必须等于sample_weight
的长度。如果是可调用对象,则必须遵循
SampleWeightGenerator
接口,或具有以下签名之一:y_true: pd.DataFrame -> 1D array-like
,或y_true: pd.DataFrame x y_pred: pd.DataFrame -> 1D array-like
。
- y_true
- 返回:
- lossfloat, np.ndarray 或 pd.DataFrame
计算出的指标,按变量平均或分组。如果提供了
sample_weight
,则按其加权。如果
multioutput="uniform_average"
或类数组,并且multilevel="uniform_average"
或 “uniform_average_time”``,则为 float。该值为在变量和层级上平均的指标(参见类文档字符串)。如果 multioutput="raw_values" 并且
multilevel="uniform_average"
或"uniform_average_time"
,则为形状(y_true.columns,)
的np.ndarray
。第 i 个条目是为第 i 个变量计算的指标。如果
multilevel="raw_values"
,则为pd.DataFrame
。如果multioutput="uniform_average"
,则形状为(n_levels, )
;如果multioutput="raw_values"
,则形状为(n_levels, y_true.columns)
。指标按层级应用,行平均(是/否)如multioutput
中所示。
- evaluate_by_index(y_true, y_pred, **kwargs)[source]#
返回在每个时间点评估的指标。
- 参数:
- y_true
sktime
兼容数据容器格式的时间序列。 真实(正确)目标值。
sktime
中的个体数据格式是所谓的 mtype 规范,每个 mtype 实现了一个抽象的 scitype。Series
scitype = 个体时间序列,普通预测。pd.DataFrame
,pd.Series
或np.ndarray
(1D 或 2D)Panel
scitype = 时间序列集合,全局/面板预测。pd.DataFrame
具有 2 级行MultiIndex
(instance, time)
,3D np.ndarray
(instance, variable, time)
,list
类型的pd.DataFrame
的Series
Hierarchical
scitype = 分层集合,用于分层预测。pd.DataFrame
具有 3 级或更多级行MultiIndex
(hierarchy_1, ..., hierarchy_n, time)
有关数据格式的更多详细信息,请参阅 mtype 词汇表。有关用法,请参阅预测教程
examples/01_forecasting.ipynb
。- y_pred
sktime
兼容数据容器格式的时间序列 用于与真实值进行评估的预测值。必须与
y_true
格式相同,如果已索引,则索引和列也必须相同。- y_pred_benchmark可选,
sktime
兼容数据容器格式的时间序列 用于比较
y_pred
的基准预测值,用于相对指标。仅当指标需要基准预测值时才需要,如标签requires-y-pred-benchmark
所示。否则,可以传递以确保接口一致性,但会被忽略。必须与y_true
格式相同,如果已索引,则索引和列也必须相同。- y_train可选,
sktime
兼容数据容器格式的时间序列 用于归一化误差指标的训练数据。仅当指标需要训练数据时才需要,如标签
requires-y-train
所示。否则,可以传递以确保接口一致性,但会被忽略。必须与y_true
格式相同,如果已索引则列相同,但索引不一定相同。- sample_weight可选,一维类数组或可调用对象,默认为 None
每个时间点的样本权重或可调用对象。
如果是
None
,则时间索引被视为权重相等。如果是数组,则必须是一维的。如果
y_true
和y_pred
是单个时间序列,则sample_weight
的长度必须与y_true
相同。如果时间序列是面板或分层数据,则所有个体时间序列的长度必须相同,并且对于传递的所有时间序列实例,都必须等于sample_weight
的长度。如果是可调用对象,则必须遵循
SampleWeightGenerator
接口,或具有以下签名之一:y_true: pd.DataFrame -> 1D array-like
,或y_true: pd.DataFrame x y_pred: pd.DataFrame -> 1D array-like
。
- y_true
- 返回:
- losspd.Series 或 pd.DataFrame
计算出的指标,按时间点划分(默认=jackknife 伪值)。如果提供了
sample_weight
,则按其加权。如果
multioutput="uniform_average"
或类数组,则为pd.Series
。索引等于y_true
的索引;索引 i 处的条目是时间点 i 的指标,在变量上平均。如果
multioutput="raw_values"
,则为pd.DataFrame
。索引和列等于y_true
的索引和列;i,j 条目是时间点 i、变量 j 的指标。
- classmethod get_class_tag(tag_name, tag_value_default=None)[source]#
从类中获取类标签值,包含父类的标签继承。
每个
scikit-base
兼容对象都有一个标签字典。标签可用于存储对象的元数据,或控制对象的行为。标签是特定于实例
self
的键值对,它们是对象构建后不会更改的静态标志。get_class_tag
方法是一个类方法,它只考虑类级别标签值和覆盖来检索标签的值。它返回对象中名称为
tag_name
的标签值,考虑标签覆盖,按以下降序优先级排列:在类的
_tags
属性中设置的标签。在父类的
_tags
属性中设置的标签,
按继承顺序。
不考虑通过
set_tags
或clone_tags
在实例上设置的动态标签覆盖。要检索可能包含实例覆盖的标签值,请改用
get_tag
方法。- 参数:
- tag_namestr
标签值的名称。
- tag_value_default任意类型
如果未找到标签,则为默认/备用值。
- 返回:
- tag_value
self
中tag_name
标签的值。如果未找到,则返回tag_value_default
。
- classmethod get_class_tags()[source]#
从类中获取类标签,包含父类的标签继承。
每个
scikit-base
兼容对象都有一个标签字典。标签可用于存储对象的元数据,或控制对象的行为。标签是特定于实例
self
的键值对,它们是对象构建后不会更改的静态标志。get_class_tags
方法是一个类方法,它只考虑类级别标签值和覆盖来检索标签的值。它返回一个字典,其键是类或其任何父类中设置的任何
_tags
属性的键。值是相应的标签值,覆盖按以下降序优先级排列:
在类的
_tags
属性中设置的标签。在父类的
_tags
属性中设置的标签,
按继承顺序。
实例可以根据超参数覆盖这些标签。
要检索可能包含实例覆盖的标签,请改用
get_tags
方法。不考虑通过
set_tags
或clone_tags
在实例上设置的动态标签覆盖。对于包含来自动态标签的覆盖,请使用
get_tags
。- 返回:
- collected_tagsdict
标签名 : 标签值对的字典。通过嵌套继承从
_tags
类属性收集。不会被通过set_tags
或clone_tags
设置的动态标签覆盖。
- get_config()[source]#
获取 self 的配置标志。
配置是
self
的键值对,通常用作控制行为的瞬时标志。get_config
返回动态配置,它们会覆盖默认配置。默认配置设置在类或其父类的类属性
_config
中,并通过set_config
设置的动态配置进行覆盖。配置在
clone
或reset
调用下保留。- 返回:
- config_dictdict
配置名称 : 配置值对的字典。通过嵌套继承从 _config 类属性收集,然后从 _onfig_dynamic 对象属性收集任何覆盖和新标签。
- classmethod get_param_defaults()[source]#
获取对象的默认参数。
- 返回:
- default_dict: dict[str, Any]
键是
cls
中在__init__
中定义了默认值的所有参数。值是在__init__
中定义的默认值。
- classmethod get_param_names(sort=True)[source]#
获取对象的参数名称。
- 参数:
- sortbool,默认为 True
是否按字母顺序(True)或按它们在类
__init__
中出现的顺序(False)返回参数名称。
- 返回:
- param_names: list[str]
cls
的参数名称列表。如果sort=False
,则顺序与它们在类__init__
中出现的顺序相同。如果sort=True
,则按字母顺序排列。
- get_params(deep=True)[source]#
获取此对象的参数值字典。
- 参数:
- deepbool,默认为 True
是否返回组件的参数。
如果为
True
,将返回此对象的参数名 : 参数值dict
,包括组件的参数(=BaseObject
值参数)。如果为
False
,将返回此对象的参数名 : 参数值dict
,但不包括组件的参数。
- 返回:
- params键为 str 的 dict
参数字典,paramname : paramvalue 键值对包括
总是:此对象的所有参数,通过
get_param_names
获取,该键的参数值是此对象的值,这些值总是与构造时传递的值相同如果
deep=True
,还包含组件参数的键/值对。组件参数的索引格式为[组件名称]__[参数名称]
。组件名称
的所有参数都以参数名称
及其值的形式出现。如果
deep=True
,还包含任意级别的组件递归,例如[组件名称]__[组件子组件名称]__[参数名称]
等。
- get_tag(tag_name, tag_value_default=None, raise_error=True)[source]#
从实例获取标签值,包含标签层级继承和覆盖。
每个
scikit-base
兼容对象都有一个标签字典。标签可用于存储对象的元数据,或控制对象的行为。标签是特定于实例
self
的键值对,它们是对象构建后不会更改的静态标志。get_tag
方法从实例中检索名为tag_name
的单个标签的值,考虑到标签覆盖,按以下降序优先级顺序:通过实例上的
set_tags
或clone_tags
设置的标签,
在实例构建时设置的标签。
在类的
_tags
属性中设置的标签。在父类的
_tags
属性中设置的标签,
按继承顺序。
- 参数:
- tag_namestr
要检索的标签名称
- tag_value_default任意类型,可选;默认为 None
如果未找到标签,则使用的默认/备用值
- raise_errorbool
当未找到标签时是否引发
ValueError
- 返回:
- tag_valueAny
self
中tag_name
标签的值。如果未找到,并且raise_error
为 True,则引发错误,否则返回tag_value_default
。
- 引发:
- ValueError,如果
raise_error
为True
。 如果
tag_name
不在self.get_tags().keys()
中,则会引发ValueError
。
- ValueError,如果
- get_tags()[source]#
从实例获取标签,包含标签层级继承和覆盖。
每个
scikit-base
兼容对象都有一个标签字典。标签可用于存储对象的元数据,或控制对象的行为。标签是特定于实例
self
的键值对,它们是对象构建后不会更改的静态标志。get_tags
方法返回一个标签字典,其键是类或其任何父类中设置的_tags
属性的任何键,或者通过set_tags
或clone_tags
设置的标签。值是相应的标签值,覆盖按以下降序优先级排列:
通过实例上的
set_tags
或clone_tags
设置的标签,
在实例构建时设置的标签。
在类的
_tags
属性中设置的标签。在父类的
_tags
属性中设置的标签,
按继承顺序。
- 返回:
- collected_tagsdict
标签名称:标签值对的字典。通过嵌套继承从
_tags
类属性收集,然后从_tags_dynamic
对象属性收集任何覆盖和新标签。
- is_composite()[source]#
检查对象是否由其他 BaseObjects 组成。
复合对象是包含其他对象作为参数的对象。在实例上调用,因为这可能因实例而异。
- 返回:
- composite: bool
对象是否包含任何参数,其值为
BaseObject
的后代实例。
- classmethod load_from_path(serial)[source]#
从文件位置加载对象。
- 参数:
- serialZipFile(path).open(“object) 的结果
- 返回:
- 反序列化自身,其结果位于
path
,即cls.save(path)
的输出
- 反序列化自身,其结果位于
- classmethod load_from_serial(serial)[source]#
从序列化内存容器加载对象。
- 参数:
- serial
cls.save(None)
输出的第一个元素
- serial
- 返回:
- 反序列化自身,其结果为
serial
,即cls.save(None)
的输出
- 反序列化自身,其结果为
- reset()[source]#
将对象重置为干净的初始化后状态。
将
self
设置为构造函数调用后直接所处的状态,具有相同的超参数。set_config
设置的配置值也会保留。reset
调用会删除任何对象属性,除了超参数 = 写入
self
的__init__
的参数,例如self.paramname
,其中paramname
是__init__
的参数包含双下划线的对象属性,即字符串 “__”。例如,名为 “__myattr” 的属性会被保留。
config 属性,config 会被保留且不更改。也就是说,
reset
前后get_config
的结果相等。
类方法、对象方法和类属性也不受影响。
等同于
clone
,但reset
修改self
而不是返回新对象。在调用
self.reset()
后,self
在值和状态上等于构造函数调用 ``type(self)(**self.get_params(deep=False))`` 后获得的对象。- 返回:
- self
将类实例重置为干净的初始化后状态,但保留当前的超参数值。
- save(path=None, serialization_format='pickle')[source]#
将序列化的自身保存到类字节对象或 (.zip) 文件。
行为:如果
path
为 None,则返回一个内存中的序列化自身;如果path
是文件位置,则将自身存储在该位置为一个 zip 文件保存的文件是 zip 文件,包含以下内容: _metadata - 包含自身的类,即 type(self) _obj - 序列化自身。此类使用默认的序列化方式 (pickle)。
- 参数:
- pathNone 或文件位置 (str 或 Path)
如果为 None,则将自身保存到内存对象;如果是文件位置,则将自身保存到该文件位置。如果
path=”estimator”,则会在当前工作目录创建 zip 文件
estimator.zip
。path=”/home/stored/estimator”,则 zip 文件
estimator.zip
将会被
存储在
/home/stored/
中。- serialization_format: str, 默认为 “pickle”
用于序列化的模块。可用选项为 “pickle” 和 “cloudpickle”。请注意,非默认格式可能需要安装其他软依赖项。
- 返回:
- 如果
path
为 None - 内存中的序列化自身 - 如果
path
是文件位置 - 指向该文件的 ZipFile
- 如果
- set_config(**config_dict)[source]#
将配置标志设置为给定值。
- 参数:
- config_dictdict
config 名称:config 值对的字典。有效的 config、值及其含义如下所示
- displaystr,“diagram”(默认),或 “text”
jupyter 内核如何显示自身实例
“diagram” = html 盒图表示
“text” = 字符串打印输出
- print_changed_onlybool,默认为 True
打印自身时是否只列出与默认值不同的参数(False),或所有参数名称和值(False)。不进行嵌套,即只影响自身而不影响组件估计器。
- warningsstr,“on”(默认),或 “off”
是否引发警告,仅影响来自 sktime 的警告
“on” = 将引发来自 sktime 的警告
“off” = 将不引发来自 sktime 的警告
- backend:parallelstr,可选,默认为 “None”
广播/向量化时用于并行处理的后端,以下之一:
“None”:顺序执行循环,简单的列表推导式
“loky”, “multiprocessing” 和 “threading”:使用
joblib.Parallel
“joblib”:自定义和第三方
joblib
后端,例如spark
“dask”:使用
dask
,需要在环境中安装dask
包“ray”:使用
ray
,需要在环境中安装ray
包
- backend:parallel:paramsdict,可选,默认为 {} (不传递参数)
作为配置传递给并行化后端的附加参数。有效键取决于
backend:parallel
的值“None”:无附加参数,忽略
backend_params
“loky”, “multiprocessing” 和 “threading”:默认的
joblib
后端。此处可以传递joblib.Parallel
的任何有效键,例如n_jobs
,但backend
除外,它由backend
直接控制。如果未传递n_jobs
,则默认为-1
,其他参数将默认为joblib
的默认值。“joblib”:自定义和第三方
joblib
后端,例如spark
。此处可以传递joblib.Parallel
的任何有效键,例如n_jobs
。在这种情况下,必须将backend
作为backend_params
的键传递。如果未传递n_jobs
,则默认为-1
,其他参数将默认为joblib
的默认值。“dask”:可以传递
dask.compute
的任何有效键,例如scheduler
“ray”:可以传递以下键
“ray_remote_args”:
ray.init
的有效键字典- “shutdown_ray”:bool,默认为 True;False 会阻止
ray
在并行化后 关闭。
- “shutdown_ray”:bool,默认为 True;False 会阻止
“logger_name”:str,默认为 “ray”;要使用的日志记录器名称。
“mute_warnings”:bool,默认为 False;如果为 True,则抑制警告
- 返回:
- self自身的引用。
注意事项
改变对象状态,将 config_dict 中的配置复制到 self._config_dynamic。
- set_params(**params)[source]#
设置此对象的参数。
该方法适用于简单的 skbase 对象以及复合对象。参数键字符串
<component>__<parameter>
可用于复合对象(即包含其他对象的对象),以访问组件<component>
中的<parameter>
。如果引用明确,也可以使用不带<component>__
的字符串<parameter>
,例如,没有两个组件参数具有相同的名称<parameter>
。- 参数:
- **paramsdict
BaseObject 参数,键必须是
<component>__<parameter>
字符串。如果__
后缀在 get_params 键中是唯一的,则可以作为完整字符串的别名。
- 返回:
- self自身的引用(参数设置后)
- set_random_state(random_state=None, deep=True, self_policy='copy')[source]#
为 self 设置 random_state 伪随机种子参数。
通过
self.get_params
查找名为random_state
的参数,并通过set_params
将它们设置为从random_state
派生的整数。这些整数通过sample_dependent_seed
从链式散列中采样,保证了有种子的随机生成器的伪随机独立性。取决于
self_policy
,适用于self
中的random_state
参数;仅当deep=True
时,才适用于其余组件对象。注意:即使
self
没有random_state
参数,或者所有组件都没有random_state
参数,也会调用set_params
。因此,set_random_state
将重置任何scikit-base
对象,即使是没有random_state
参数的对象也是如此。- 参数:
- random_stateint, RandomState 实例或 None,默认为 None
用于控制随机整数生成的伪随机数生成器。传递 int 以在多个函数调用中获得可重现的输出。
- deepbool,默认为 True
是否设置 skbase 对象值参数(即组件估计器)中的随机状态。
如果为 False,则仅设置
self
的random_state
参数(如果存在)。如果为 True,则也会设置组件对象中的
random_state
参数。
- self_policystr,{“copy”, “keep”, “new”} 之一,默认为 “copy”
“copy” :
self.random_state
设置为输入的random_state
“keep” :
self.random_state
保持不变“new” :
self.random_state
设置为一个新的随机状态,
从输入的
random_state
派生,通常与它不同
- 返回:
- self自身的引用
- set_tags(**tag_dict)[source]#
将实例级别标签覆盖设置为给定值。
每个
scikit-base
兼容对象都有一个标签字典。标签可用于存储对象的元数据,或控制对象的行为。标签是特定于实例
self
的键值对,它们是对象构建后不会更改的静态标志。set_tags
将动态标签覆盖设置为tag_dict
中指定的值,其中键是标签名称,字典值是要将标签设置成的值。set_tags
方法只能在对象构建期间或通过__init__
直接在构建后调用。可以通过
get_tags
或get_tag
检查当前标签值。- 参数:
- **tag_dictdict
标签名称:标签值对的字典。
- 返回:
- 自身
自身的引用。