TPOT自动机器学习参数详解

本文介绍了TPOT自动机器学习工具的基本使用方法,包括TPOTClassifier和TPOTRegressor的参数详解,以及如何自定义TPOT的运算符和参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TPOT自动机器学习参数详解

分类:

代码

class tpot.TPOTClassifier(generations=100, 
						  population_size=100,
                          offspring_size=None, 
                          mutation_rate=0.9,
                          crossover_rate=0.1,
                          scoring='accuracy', 
                          cv=5,
                          subsample=1.0, 
                          n_jobs=1,
                          max_time_mins=None, 
                          max_eval_time_mins=5,
                          random_state=None, 
                          config_dict=None,
                          template=None,
                          warm_start=False,
                          memory=None,
                          use_dask=False,
                          periodic_checkpoint_folder=None,
                          early_stop=None,
                          verbosity=0,
                          disable_update_check=False,
                          log_file=None
                          )

参数:
generation: int或None可选(默认值= 100)
运行管道优化过程的迭代次数。它必须是一个正数或无。如果为None,则必须将参数max_time_mins定义为运行时限制。通常,当您给TPOT多代(并因此有时间)以优化管道时,TPOT会更好地工作。TPOT将总共评估“人口大小” +“世代” ד后代大小”管道。

Population_size:int,可选(默认为100)
每代保留在基因编程人群中的个体数量。必须为正数。通常,当您给TPOT更多的人员来优化管道时,TPOT会更好地工作。

offspring_size:int,可选(默认=无)
每个基因编程世代中产生的后代数量。必须为正数。默认情况下,后代的数量等于种群数量。

variant_rate:浮点型,可选(默认= 0.9)
遗传编程算法的变异率在[0.0,1.0]范围内。此参数告诉GP算法有几条管道可对每一代应用随机更改。variant_rate + crossover_rate不能超过1.0。我们建议使用默认参数,除非您了解突变率如何影响GP算法。

crossover_rate:浮点型,可选(默认= 0.1)。遗传编程算法的交叉率在[0.0,1.0]范围内。此参数告诉遗传编程算法每一代“繁殖”多少条管道。variant_rate + crossover_rate不能超过1.0。我们建议使用默认参数,除非您了解交叉速率如何影响GP算法

scoring: 字符串或可调用,可选(默认=“准确性”)。用于评估分类问题的给定管道质量的函数。可以使用以下内置计分功能:
‘accuracy’, ‘adjusted_rand_score’, ‘average_precision’, ‘balanced_accuracy’, ‘f1’, ‘f1_macro’, ‘f1_micro’, ‘f1_samples’, ‘f1_weighted’, ‘neg_log_loss’, ‘precision’ etc. (suffixes apply as with ‘f1’), ‘recall’ etc. (suffixes apply as with ‘f1’), ‘jaccard’ etc. (suffixes apply as with ‘f1’), ‘roc_auc’, ‘roc_auc_ovr’, ‘roc_auc_ovo’, ‘roc_auc_ovr_weighted’, ‘roc_auc_ovo_weighted’
如果您想使用自定义评分器 ,则可以通过签名评分器(estimator,X,y)传递可调用对象/函数。

cv:int,交叉验证生成器或可迭代的,可选的(默认值= 5)
评估管道时使用的交叉验证策略。
可能的输入:
整数,用于指定StratifiedKFold中的折叠次数,用作交叉验证生成器的对象,或可迭代的屈服训练/测试拆分。

subsample: float, optional (default=1.0)
TPOT优化过程中使用的训练样本的分数。必须在(0.0,1.0]范围内。
设置subsample= 0.5会告诉TPOT使用一半训练数据的随机子样本,该子样本在整个管道优化过程中将保持不变。

n_jobs:整数,可选(默认值= 1)
在TPOT优化过程中并行用于评估管道的进程数。
设置n_jobs = -1将使用尽可能多的内核。对于小于-1的n_job,将使用(n_cpus +1 + n_jobs)。因此,对于n_jobs = -2,将使用除一个以外的所有CPU。请注意,在同一台计算机上使用多个进程可能会导致大型数据集的内存问题。

max_time_mins:整数或无,可选(默认=无)
TPOT需要多少分钟来优化管道。如果不设置为None,则此设置将允许TPOT运行,直到经过max_time_mins分钟,然后停止。如果generations被设置,则当generations次数被执行完之后,TPOT将提早停止。

max_eval_time_mins:浮点型,可选(默认= 5)
TPOT必须评估多少分钟才能评估一条管道。
将此参数设置为较高的值将使TPOT可以评估更复杂的管道,但也可以使TPOT运行更长的时间。使用此参数可以帮助防止TPOT在评估耗时的管道上浪费时间。

random_state:整数或无,可选(默认=无)
TPOT中使用的伪随机数生成器的种子。使用此参数可确保每次对带有该种子的相同数据集运行TPOT时,TPOT都将提供相同的结果。

config_dict:Python字典,字符串或无,可选(默认=无)
一个配置字典,用于自定义TPOT在优化过程中搜索的运算符和参数。
可能的输入是:
Python字典,TPOT将使用您的自定义配置,
字符串“ TPOT light”,TPOT将使用仅具有快速模型和预处理器的内置配置,或者
字符串“ TPOT MDR”,TPOT将使用专门用于基因组研究的内置配置,或者
字符串“ TPOT sparse”:TPOT将使用带有一键编码器的配置字典,并且TPOT中通常包含的运算符也支持稀疏矩阵,或者无,TPOT将使用默认的TPOTClassifier配置。

warm_start:布尔值,可选(默认= False)
指示TPOT实例是否将重用先前对fit()的调用中的填充的标志。
设置warm_start = True对于在数据集上短时间运行TPOT,检查结果,然后从中断的地方继续运行TPOT很有用。

memory:一个joblib.Memory对象或字符串,可选(默认=无)
如果提供,管道将在调用fit之后缓存每个变压器。如果在优化过程中参数和输入数据与另一个拟合管道相同,则使用此功能可避免计算管道内的拟合变压器。scikit-learn文档中 有关内存缓存的更多详细信息,
可能的输入是:字符串“ auto”:TPOT使用带有临时目录的内存缓存,并在关机时清除它,或者缓存目录的路径,TPOT使用提供的目录的内存缓存,并且在关闭时TPOT不会清理缓存目录,或者内存对象,TPOT使用joblib实例.Memory用于内存缓存,并且TPOT在关闭时不会清理缓存目录,或者无,TPOT不使用内存缓存。
use_dask:布尔值,可选(默认:False)是否使用Dask-ML的管道优化。这样可以避免在同一数据分割上多次重新拟合相同的估算器。使用Dask的分布式调度程序时,还将提供更详细的诊断信息。

period_checkpoint_folder:路径字符串,可选(默认值:无)
如果提供,则是一个文件夹,到目前为止,TPOT会在此文件夹中定期保存管道,同时进行优化。目前,每代一次,但不多于每30秒一次。在多种情况下有用:TPOT可能导致猝死,从而节省了优化的管道;追踪进度;在仍在优化的同时获取管道。

early_stop:整数,可选(默认值:无)
TPOT检查了几代,优化过程是否没有改善。如果给定的世代数没有改善,则结束优化过程。
verbosity:整数,可选(默认= 0)
TPOT在运行时传达多少信息。
可能的输入是:
0,TPOT将不打印任何内容,
1,TPOT将打印最少的信息,
2,TPOT将打印更多信息并提供进度条,或者
3,TPOT将打印所有内容并提供进度条。

disable_update_check:布尔值,可选(默认= False)
指示是否应禁用TPOT版本检查器的标志。更新检查器将告诉您何时发布了新版本的TPOT。
log_file:io.TextIOWrapper或io.StringIO,可选(默认:sys.stdout)。将进度内容保存到文件中。

举例:

from tpot import TPOTClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
digits = load_digits()
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target,
                                                    train_size=0.75, test_size=0.25)
tpot = TPOTClassifier(generations=5, population_size=50, verbosity=2)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_digits_pipeline.py')

TPOT功能:
1在给定的训练数据上运行TPOT优化过程。
使用遗传编程来优化机器学习管道,从而最大程度地提高所提供的功能和目标的得分。此管道优化过程使用内部k折交叉验证来避免对提供的数据进行过度拟合。在管道优化过程的最后,然后对所提供的整个样本集训练最佳管道。
2使用优化的管道来预测功能集的类。
predict(features)
3使用优化的流水线来估计功能集的类概率。
注意:该函数仅适用于最终分类器支持predict_proba函数的管道。否则,TPOT会引发错误。
predict_proba(features)
4使用用户指定的评分功能,根据给定的测试数据返回优化管道的得分。
TPOTClassifier的默认评分功能是“准确性”。
score(testing_features, testing_classes)
5 将优化的管道导出为Python代码。
export(output_file_name, data_file_path)

回归

class tpot.TPOTRegressor(generations=100, 
						 population_size=100,
                         offspring_size=None, 
                         mutation_rate=0.9,
                         crossover_rate=0.1,
                         scoring='neg_mean_squared_error', 
                         cv=5,
                         subsample=1.0, n_jobs=1,
                         max_time_mins=None, 
                         max_eval_time_mins=5,
                         random_state=None, 
                         config_dict=None,
                         template=None,
                         warm_start=False,
                         memory=None,
                         use_dask=False,
                         periodic_checkpoint_folder=None,
                         early_stop=None,
                         verbosity=0,
                         disable_update_check=False)

用于监督回归任务的自动化机器学习。
TPOTRegressor在机器学习管道上执行智能搜索,该管道可以包含监督的回归模型,预处理器,特征选择技术以及遵循scikit-learn API的任何其他估计器或转换器。TPOTRegressor还将搜索管道中所有对象的超参数。
参数:
scoring:字符串或可调用,可选(默认值=‘neg_mean_squared_error’)
用于评估给定管道质量的回归问题的函数。可以使用以下内置评分功能:
‘neg_median_absolute_error’,‘neg_mean_absolute_error’,‘neg_mean_squared_error’,‘r2’
注意,我们建议使用均方误差和相关度量的neg版本,以便TPOT最小化(而不是最大化)指标。如果您想使用自定义评分器,则可以使用签名评分器(estimator,X,y)传递可调用对象/函数。
其他参数和分类一致。
举例:

from tpot import TPOTRegressor
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
digits = load_boston()
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target,
                                                    train_size=0.75, test_size=0.25)
tpot = TPOTRegressor(generations=5, population_size=50, verbosity=2)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_boston_pipeline.py')

自定义TPOT的运算符和参数:
除了TPOT附带的默认配置之外,在某些情况下,限制TPOT考虑的算法和参数很有用。因此,我们允许用户为TPOT提供其操作员和参数的自定义配置。
定制TPOT配置必须采用嵌套字典格式,其中第一级密钥是运算符的路径和名称(例如sklearn.naive_bayes.MultinomialNB),第二级密钥是该运算符的相应参数名称(例如fit_prior)。第二级键应指向该参数的参数值列表,例如’fit_prior’: [True, False]。
例如:
举一个简单的例子,配置可以是:

tpot_config = {
    'sklearn.naive_bayes.GaussianNB': {
    },
    'sklearn.naive_bayes.BernoulliNB': {
        'alpha': [1e-3, 1e-2, 1e-1, 1., 10., 100.],
        'fit_prior': [True, False]
    },
    'sklearn.naive_bayes.MultinomialNB': {
        'alpha': [1e-3, 1e-2, 1e-1, 1., 10., 100.],
        'fit_prior': [True, False]
    }
}

在这种情况下TPOT只会考虑含有管道GaussianNB,BernoulliNB,MultinomialNB,和那些算法在所述范围参数提供调谐。该字典可以直接在代码中传递给
TPOTClassifier/TPOTRegressor的 config_dict参数,如上所述。例如:

from tpot import TPOTClassifier
from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
digits = load_digits()
X_train, X_test, y_train, y_test = train_test_split(digits.data, digits.target,
                                                    train_size=0.75, test_size=0.25)
tpot_config = {
    'sklearn.naive_bayes.GaussianNB': {
    },
    'sklearn.naive_bayes.BernoulliNB': {
        'alpha': [1e-3, 1e-2, 1e-1, 1., 10., 100.],
        'fit_prior': [True, False]
    },
    'sklearn.naive_bayes.MultinomialNB': {
        'alpha': [1e-3, 1e-2, 1e-1, 1., 10., 100.],
        'fit_prior': [True, False]
    }
}
tpot = TPOTClassifier(generations=5, population_size=20, verbosity=2,
                      config_dict=tpot_config)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export('tpot_digits_pipeline.py')

请注意,您必须为计算机上的操作员安装所有相应的软件包,否则TPOT将无法使用它们。例如,如果您的计算机上未安装XGBoost,则TPOT不会简单地在其考虑的管道中导入或使用XGBoost。

详细信息请参考官网:
https://epistasislab.github.io/tpot/using/#what-to-expect-from-automl-software

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值