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_params([deep])获取此估计器的参数。
get_support([indices])获取所选特征的掩膜或整数索引。
逆转变换操作。
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)#
拟合数据,然后对其进行转换。
将变换器拟合到
X和y,可以选择参数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_features是None,那么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
配置
transform和fit_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]
仅包含所选特征的输入样本。