sktime中ShapeletTransform调用set_config开启并行计算遇参数错误
问题
想要对ShapeletTransform执行并行计算,根据文档说明,需要将backend:parallel标志设置为'loky'以激活该类的并行方法。但set_config方法接受**config_dict作为参数,尝试代码如下:
y_transformed = y y_transformed = pd.DataFrame(y.apply(lambda row: pd.Series(row), axis=1)) transformer = ShapeletTransform(verbose=1) dict_config = { "backend:parallel": "default=loky" } transformer.set_config(dict_config) transformer.get_config() transformer.fit(X_3d, y_transformed)
出现错误:
TypeError Traceback (most recent call last) \<ipython-input-96-2327096163\> in \<cell line: 0\>() 12 "backend:parallel": "default=loky" 13 } \---\> 14 transformer.set_config(dict_config) 15 # Get the current configuration 16 transformer.get_config() TypeError: BaseObject.set_config() takes 1 positional argument but 2 were given
请问该如何正确调用set_config方法以开启并行计算?
解决方案
报错原因是set_config方法接受的是关键字参数,不是直接传入字典对象。你有两种正确的调用方式:
方式一:字典解包传递参数
把字典用**解包后传入set_config,匹配方法对**config_dict参数的要求:
y_transformed = y y_transformed = pd.DataFrame(y.apply(lambda row: pd.Series(row), axis=1)) transformer = ShapeletTransform(verbose=1) dict_config = { "backend:parallel": "default=loky" } # 解包字典作为关键字参数传入 transformer.set_config(**dict_config) transformer.get_config() transformer.fit(X_3d, y_transformed)
方式二:初始化时直接指定参数
更简洁的方式是在创建ShapeletTransform实例时,直接把配置项作为关键字参数传入,无需后续调用set_config:
y_transformed = y y_transformed = pd.DataFrame(y.apply(lambda row: pd.Series(row), axis=1)) # 初始化时直接设置并行后端 transformer = ShapeletTransform(verbose=1, **{"backend:parallel": "default=loky"}) transformer.get_config() transformer.fit(X_3d, y_transformed)
内容的提问来源于stack exchange,提问作者Echanted Kingdom
相关产品推荐
相关产品推荐

