使用 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 在调试时很有帮助,因为它会打印出失败管道生成的错误。