skfolio.pre_selection.SelectNonDominated#

class skfolio.pre_selection.SelectNonDominated(min_n_assets=None, threshold=-0.5, fitness_measures=None)[来源]#

用于选择非支配资产的变换器。

基于资产预选过程2的预选 [1]

好的单一资产(例如高回报和低风险)很可能会对最终的优化组合有所贡献。每个资产被视为一个投资组合,这些资产使用非支配排序方法进行排名。选择是基于分配给每个资产的排名,基于它们的适应度,直到所选资产的数量达到用户定义的数量。

仅考虑单个资产的收益是远远不够的,因为一对负相关资产有可能降低风险。因此,负相关资产对也被考虑在内。

Parameters:
min_n_assetsint, optional

选择的最小资产数量。如果 min_n_assets 在当前非支配前沿结束之前被达到,我们返回这个前沿的剩余资产。这是因为同一前沿中的所有资产具有相同的等级。默认值 (None) 是选择第一个前沿。

thresholdfloat, default=0.0

相关性低于此阈值的资产对将被包括在非支配排序中。默认值为 0.0

fitness_measureslist[Measure], optional

用于计算投资组合适应度的指标列表。适应度用于比较投资组合的主导性,计算帕累托前沿,并使用非计量排序进行投资组合选择。默认值(None)是使用列表[PerfMeasure.MEAN, RiskMeasure.VARIANCE]

Attributes:
to_keep_ndarray of shape (n_assets, )

布尔数组,指示哪些资产仍然存在。

n_features_in_int

fit期间看到的资产数量。

feature_names_in_ndarray of shape (n_features_in_,)

fit过程中看到的特征名称。只有在X具有全部为字符串的特征名称时才会定义。

参考文献

[1]

“大规模投资组合优化使用多目标进化算法和预选择方法”, B.Y. Qu 和 Q.Zhou (2017).

方法

fit(X[, y])

运行非主导转换器并获取适当的资产。

fit_transform(X[, y])

拟合数据,然后转换它。

get_feature_names_out([input_features])

根据选择的特征掩盖特征名称。

get_metadata_routing()

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

get_params([deep])

获取此估计器的参数。

get_support([indices])

获取所选特征的掩膜或整数索引。

inverse_transform(X)

逆转变换操作。

set_output(*[, transform])

设置输出容器。

set_params(**params)

设置此估计器的参数。

transform(X)

将X缩减为选定的特征。

fit(X, y=None)[来源]#

运行非支配变压器并获取适当的资产。

Parameters:
Xarray-like of shape (n_observations, n_assets)

资产的价格收益。

yIgnored

未使用,按照约定为API一致性而存在。

Returns:
selfSelectNonDominated

拟合的估计器。

fit_transform(X, y=None, **fit_params)#

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

将变换器拟合到 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)

变换后的数组。

get_feature_names_out(input_features=None)#

根据选定特征遮蔽特征名称。

Parameters:
input_featuresarray-like of str or None, default=None

输入特征。

  • 如果 input_featuresNone,那么 feature_names_in_ 被用作特征名称。如果 feature_names_in_ 没有定义,那么将生成以下输入特征名称:["x0", "x1", ..., "x(n_features_in_ - 1)"]

  • 如果 input_features 是类似数组的,则 input_features 必须 与 feature_names_in_ 匹配,如果 feature_names_in_ 已定义。

Returns:
feature_names_outndarray of str objects

转换后的特征名称。

get_metadata_routing()#

获取这个对象的元数据路由。

请查看 用户指南 了解路由机制是如何工作的。

Returns:
routingMetadataRequest

一个 MetadataRequest 封装路由信息。

get_params(deep=True)#

获取此估计器的参数。

Parameters:
deepbool, default=True

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

Returns:
paramsdict

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

get_support(indices=False)#

获取所选特征的掩码或整数索引。

Parameters:
indicesbool, default=False

如果为真,返回值将是一个整数数组,而不是布尔掩码。

Returns:
supportarray

一个从特征向量中选择保留特征的索引。 如果 indices 为 False,这是一个形状为[# 输入特征]的布尔数组,在其中元素为 True 当且仅当其对应的特征被选中保留。如果 indices 为 True,这是一个形状为[# 输出特征]的整数数组,其值是输入特征向量的索引。

inverse_transform(X)#

逆转变换操作。

Parameters:
Xarray of shape [n_samples, n_selected_features]

输入样本。

Returns:
X_rarray of shape [n_samples, n_original_features]

X 在特征被transform移除的地方插入零列。

set_output(*, transform=None)#

设置输出容器。

请参见 sphx_glr_auto_examples_miscellaneous_plot_set_output.py 以获取如何使用API的示例。

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

配置 transformfit_transform 的输出。

  • "default": 变换器的默认输出格式

  • "pandas": 数据框输出

  • "polars": Polars 输出

  • None: 转换配置没有改变

在版本 1.4 中新增: "polars" 选项被添加了。

Returns:
selfestimator instance

估计器实例。

set_params(**params)#

设置该估计器的参数。

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

Parameters:
**paramsdict

估计器参数。

Returns:
selfestimator instance

估计器实例。

transform(X)#

将 X 降至所选特征。

Parameters:
Xarray of shape [n_samples, n_features]

输入样本。

Returns:
X_rarray of shape [n_samples, n_selected_features]

仅包含所选特征的输入样本。