跳到内容

使用 TPOT

请参阅教程文件夹以获取更多说明和示例。

最佳实践

1

TPOT 使用 dask 进行并行处理。当 Python 并行运行时,每个模块都会在每个进程中导入。因此,从脚本运行 TPOT 时,将所有代码保护在 if __name__ == "__main__" 块中非常重要。从 notebook 运行 TPOT 时则不需要这样做。

例如

#my_analysis.py

import tpot
if __name__ == "__main__":
    X, y = load_my_data()
    est = tpot.TPOTClassifier()
    est.fit(X,y)
    #rest of analysis

2

设计自定义目标函数时,避免使用全局变量。

不要这样做

global_X = [[1,2],[4,5]]
global_y = [0,1]
def foo(est):
    return my_scorer(est, X=global_X, y=global_y)

而是使用 partial

from functools import partial

def foo_scorer(est, X, y):
    return my_scorer(est, X, y)

if __name__=='__main__':
    X = [[1,2],[4,5]]
    y = [0,1]
    final_scorer = partial(foo_scorer, X=X, y=y)

同样,在使用 lambda 函数时。

不要这样做

def new_objective(est, a, b)
    #definition

a = 100
b = 20
bad_function = lambda est :  new_objective(est=est, a=a, b=b)

这样做

def new_objective(est, a, b)
    #definition

a = 100
b = 20
good_function = lambda est, a=a, b=b : new_objective(est=est, a=a, b=b)

提示

TPOT 不会检查您的数据格式是否正确。它会假设您已经传入了可以处理所传入数据类型的操作符。例如,如果您传入一个包含分类特征和缺失数据的 pandas DataFrame,那么您也应该在配置中包含可以处理这些数据特征的操作符。或者,如果您传入 preprocessing = True,TPOT 将填充缺失值,对分类特征进行独热编码,然后标准化数据。(请注意,目前这是在整个训练集上进行拟合和转换,然后再分割进行交叉验证。稍后将提供按折叠应用并使参数可学习的选项。)

verbose 设置为 5 在调试时很有帮助,因为它会打印出失败管道生成的错误。