GA特征选择交叉验证

GAFeatureSelectionCV(estimator[, cv, ...])

用于特征选择的进化优化。

GAFeatureSelectionCV.decision_function(X)

在具有最佳发现特征的估计器上调用decision_function。

GAFeatureSelectionCV.fit(X, y[, callbacks])

GAFeatureSelectionCV的主要方法,启动优化流程以寻找最佳特征集

GAFeatureSelectionCV.get_params([deep])

获取此估计器的参数。

GAFeatureSelectionCV.inverse_transform(X)

逆转转换操作。

GAFeatureSelectionCV.predict(X)

使用找到的最佳特征在估计器上调用预测。

GAFeatureSelectionCV.predict_proba(X)

在具有最佳发现特征的估计器上调用predict_proba方法。

GAFeatureSelectionCV.score(X, y)

如果估计器已重新拟合,则返回给定数据的得分。

GAFeatureSelectionCV.set_params(**params)

设置此估计器的参数。

GAFeatureSelectionCV.transform(X)

将X缩减至所选特征。

class sklearn_genetic.GAFeatureSelectionCV(estimator, cv=3, scoring=None, population_size=50, generations=80, crossover_probability=0.2, mutation_probability=0.8, tournament_size=3, elitism=True, max_features=None, verbose=True, keep_top_k=1, criteria='max', algorithm='eaMuPlusLambda', refit=True, n_jobs=1, pre_dispatch='2*n_jobs', error_score=nan, return_train_score=False, log_config=None, use_cache=True)[源代码]

用于特征选择的进化优化。

GAFeatureSelectionCV实现了"fit"和"score"方法。 如果所使用的评估器实现了"predict"、"predict_proba"、"decision_function"、 "predict_log_proba"等方法,它也会相应实现这些方法。 通过优化交叉验证分数和最小化特征数量,可以找到评估器使用的最佳特征(变量)。

Parameters:
estimatorestimator object, default=None

实现'fit'方法的estimator对象 用于拟合数据的对象。

cvint, cross-validation generator or an iterable, default=None

确定交叉验证的分割策略。 cv参数可能的输入包括: - None,使用默认的5折交叉验证, - 整数,指定(Stratified)KFold的折数, - CV分割器, - 可迭代对象,生成(train, test)索引数组的分割。 对于int/None输入,如果估计器是分类器且y是二分类或多分类,则使用StratifiedKFold。在所有其他情况下,使用KFold。这些分割器的实例化使用shuffle=False,因此多次调用的分割结果将保持一致。

population_sizeint, default=10

初始种群的规模,用于随机生成个体样本。

generationsint, default=40

运行进化算法的代数或迭代次数。

crossover_probabilityfloat or a Scheduler, default=0.2

两个个体之间进行交叉操作的概率。

mutation_probabilityfloat or a Scheduler, default=0.8

子代变异的概率。

tournament_sizeint, default=3

执行锦标赛选择的个体数量。

elitismbool, default=True

如果为True,则将tournament_size最佳解决方案传递给下一代。

max_featuresint, default=None

待选特征数量的上限。

scoringstr, callable, list, tuple or dict, default=None

用于评估交叉验证模型在测试集上表现的策略。 如果scoring代表单个评分,可以使用:

  • 单个字符串;

  • 一个返回单个值的可调用对象。

如果scoring代表多个分数,可以使用:

  • 一个由唯一字符串组成的列表或元组;

  • 一个可调用对象,返回一个字典,其中键是度量名称,值是度量分数;

  • 一个字典,其中键是度量名称,值是可调用对象。

n_jobsint, default=None

并行运行的作业数量。训练估计器和计算分数会在交叉验证分割上并行化处理。 None表示默认为1,除非处于joblib.parallel_backend上下文中。 -1表示使用所有处理器。

verbosebool, default=True

如果设为True,将在优化过程中显示评估指标。

keep_top_kint, default=1

保留在hof对象中的最佳解数量。如果回调在k次迭代之前停止算法,则每次迭代仅返回一组参数。

criteria{‘max’, ‘min’} , default=’max’

max 如果评分指标越高越好,min 则相反。

algorithm{‘eaMuPlusLambda’, ‘eaMuCommaLambda’, ‘eaSimple’}, default=’eaMuPlusLambda’

使用的进化算法。 更多细节请参阅deap算法文档。

refitbool, str, or callable, default=True

在整个数据集上使用找到的最佳参数重新拟合估计器。 对于多指标评估,这需要是一个str类型,表示将用于在最后重新拟合估计器时寻找最佳参数的评分器。 重新拟合后的估计器可通过best_estimator_属性获取,并允许直接在此FeatureSelectionCV实例上使用predict方法。 同样对于多指标评估,只有当refit被设置时,属性best_index_best_score_best_params_才会可用,并且所有这些都将相对于这个特定的评分器确定。 有关多指标评估的更多信息,请参见scoring参数。

如果False,在拟合后无法使用此GASearchCV实例进行预测。

pre_dispatchint or str, default=’2*n_jobs’

控制在并行执行期间分派的任务数量。当分派的任务数量超过CPU处理能力时,减少此数值有助于避免内存消耗激增。该参数可以是:

  • 无,这种情况下所有任务会立即创建并启动。适用于轻量级且快速执行的任务,以避免因按需启动任务造成的延迟

  • 一个整数,表示生成的总任务数

  • 一个字符串,给出以n_jobs为变量的表达式,例如'2*n_jobs'

error_score‘raise’ or numeric, default=np.nan

当估计器拟合过程中发生错误时,用于赋值的分数值。 如果设置为'raise',则会引发错误。 如果给定的是数值,则会引发FitFailedWarning警告。

return_train_score: bool, default=False

如果设为False,则cv_results_属性将不包含训练分数。 计算训练分数可用于了解不同参数设置如何影响过拟合/欠拟合的权衡。 然而在训练集上计算分数可能计算成本较高,且对于选择能产生最佳泛化性能的参数并非严格必要。

log_configMLflowConfig, default = None

配置将指标和模型记录到mlflow,如果为None,则不执行mlflow日志记录

use_cache: bool, default=True

如果设置为true,将避免重新评估已经处理过的解决方案,否则将始终评估解决方案以获取性能指标

Attributes:
logbookDEAP.tools.Logbook

记录每组超参数及其平均评分指标的拟合日志。

historydict

字典形式如下: {“gen”: [], “fitness”: [], “fitness_std”: [], “fitness_max”: [], “fitness_min”: []}

gen 返回评估世代的索引。 其他列表中的每个条目代表每一代的平均指标。

cv_results_dict of numpy (masked) ndarrays

一个字典,其键为列标题,值为列数据,可以导入到 pandas 的 DataFrame 中。

best_estimator_estimator

通过搜索选择的最佳估计器,即在留出数据上获得最高分的估计器。如果refit=False则不可用。

best_features_list

布尔值列表,每个索引按数据输入顺序对应一个特征。 1表示该特征被选中,0表示该特征被丢弃。

support_list

所选特征的掩码。

scorer_function or a dict

用于在保留数据上选择模型最佳参数的评分函数。

n_splits_int

交叉验证的拆分次数(折数/迭代次数)。

n_features_in_int

fit过程中观察到的特征数量。

refit_time_float

用于在整个数据集上重新拟合最佳模型的秒数。 仅当refit不为False时存在。

decision_function(X)[源代码]

在具有最佳发现特征的估计器上调用decision_function。 仅当refit=True且基础估计器支持decision_function时可用。

Parameters:
Xindexable, length n_samples

必须满足底层估计器的输入假设。

Returns:
y_scorendarray of shape (n_samples,) or (n_samples, n_classes) or (n_samples, n_classes * (n_classes-1) / 2)

基于找到最佳参数的估计器,对X的决策函数结果。

fit(X, y, callbacks=None)[源代码]

GAFeatureSelectionCV的主要方法,启动优化流程以寻找最佳特征集

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

要拟合的数据。可以是例如列表或数组。

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

在监督学习场景中需要尝试预测的目标变量。

callbacks: list or callable

一个或多个可用的回调方法列表,位于 callbacks中。 该回调会在第一代估算器拟合完成后进行评估。

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

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

使用可选参数fit_params将转换器适配到Xy,并返回转换后的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 是类数组对象,那么当定义了 feature_names_in_ 时,input_features 必须与 feature_names_in_ 相匹配。

Returns:
feature_names_outndarray of str objects

转换后的特征名称。

get_metadata_routing()

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

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

Returns:
routingMetadataRequest

一个封装了路由信息的MetadataRequest

get_params(deep=True)

获取此估计器的参数。

Parameters:
deepbool, default=True

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

Returns:
paramsdict

参数名称与其对应值的映射。

get_support(indices=False)

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

Parameters:
indicesbool, default=False

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

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() 移除的位置。

predict(X)[源代码]

使用找到的最佳特征在估计器上调用predict方法。 仅当refit=True且底层估计器支持predict时可用。

Parameters:
Xindexable, length n_samples

必须满足底层估计器的输入假设。

Returns:
y_predndarray of shape (n_samples,)

基于找到最佳参数的估计器,对X预测的标签或值。

predict_log_proba(X)[源代码]

在具有最佳发现特征的估计器上调用predict_log_proba。 仅当refit=True且底层估计器支持predict_log_proba时可用。

Parameters:
Xindexable, length n_samples

必须满足底层估计器的输入假设。

Returns:
y_predndarray of shape (n_samples,) or (n_samples, n_classes)

基于找到的最佳参数的估计器,预测X的类别对数概率。类别的顺序与拟合属性classes_中的顺序一致。

predict_proba(X)[源代码]

在找到最佳特征的估计器上调用predict_proba方法。 仅当refit=True且底层估计器支持 predict_proba时可用。

Parameters:
Xindexable, length n_samples

必须满足底层估计器的输入假设。

Returns:
y_predndarray of shape (n_samples,) or (n_samples, n_classes)

基于找到最佳参数的估计器,对X预测的类别概率。类别顺序与拟合属性classes_中的顺序一致。

score(X, y)[源代码]

如果估计器已重新拟合,则返回给定数据的评分。 这使用scoring定义的评分(如果提供),否则使用 best_estimator_.score方法。

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

输入数据,其中n_samples表示样本数量, n_features表示特征数量。

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

相对于X的分类或回归目标;无监督学习时为None。

Returns:
scorefloat

如果提供了scoring定义的分数,则使用该分数;否则使用best_estimator_.score方法。

set_fit_request(*, callbacks: bool | None | str = '$UNCHANGED$') GAFeatureSelectionCV

传递给fit方法的请求元数据。

请注意,该方法仅在enable_metadata_routing=True时适用(参见sklearn.set_config())。 关于路由机制的工作原理,请参阅用户指南

每个参数的可选选项如下:

  • True: 请求元数据,如果提供了元数据则会传递给fit。如果未提供元数据,则该请求会被忽略。

  • False: 不请求元数据,元估计器不会将其传递给 fit

  • None: 不请求元数据,如果用户提供了元数据,元估计器将报错。

  • str: 元数据应该以这个给定的别名传递给元估计器,而不是原始名称。

默认值(sklearn.utils.metadata_routing.UNCHANGED)会保留现有请求。这允许您更改某些参数的请求而不影响其他参数。

在1.3版本中新增。

注意

该方法仅在当前评估器作为元评估器的子评估器使用时相关,例如在Pipeline内部使用时。否则该方法无效。

Parameters:
callbacksstr, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED

fit方法中callbacks参数的元数据路由。

Returns:
selfobject

更新后的对象。

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)。后者采用<组件>__<参数>形式的参数,从而可以更新嵌套对象的每个组件。

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]

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