Julia MLJ运行异常:Iris示例中DecisionTreeClassifier实例化报错
问题原因
你使用@load加载MLJ模型时,默认返回的是已经完成实例化的模型对象,而非模型类型,因此不能对返回结果再执行()操作进行二次实例化,这就是触发MethodError的核心原因。你运行@load后的返回输出已经显示这是一个带完整参数的DecisionTreeClassifier实例,无需再实例化。
解决方案
方案1:直接使用加载得到的实例
不需要额外执行Tree(),加载得到的Tree可以直接传入machine构造器使用:
using MLJ # 加载Iris数据集 X, y = @load_iris Tree = @load DecisionTreeClassifier pkg=DecisionTree # 直接使用Tree构建训练机器 mach = machine(Tree, X, y) fit!(mach)
方案2:获取模型类型自定义参数后实例化
如果你需要自定义模型超参数,在@load时添加constructor=true参数即可拿到模型类型,再自行实例化:
using MLJ X, y = @load_iris TreeType = @load DecisionTreeClassifier pkg=DecisionTree constructor=true # 自定义超参数实例化 tree = TreeType(max_depth = 3, min_samples_leaf = 2) mach = machine(tree, X, y) fit!(mach)
内容的提问来源于stack exchange,提问作者Jim Maas
相关产品推荐
相关产品推荐

