gpt4 book ai didi

machine-learning - 比较 Julia MLJ 模型的结果

转载 作者:行者123 更新时间:2023-11-30 08:42:06 24 4
gpt4 key购买 nike

我想在 MLJ.jl 中训练 3 个模型:ARDRegressor、AdaBoostRegressor、BaggingRegressor

目前,我一次训练他们 1 个,例如:

using Pkg; Pkg.activate("."); Pkg.instantiate();
using RDatasets, MLJ, Statistics, PrettyPrinting, GLM
X, y = @load_boston; train, test = 1:406, 407:506

@load ARDRegressor
reg = ARDRegressor
m = machine(reg(), X, y);
fit!(m, rows=train);
ŷ = predict(m, rows=test)
os_ARDRegressor = rms(ŷ , y[test])

我想用循环来训练它们,例如:

modlist = [ARDRegressor; AdaBoostRegressor; BaggingRegressor]  
score = []

for (i, mod) in enumerate(modlist)
@load mod;
reg = mod;
m = machine(reg(), X, y);
fit!(m, rows=train);
ŷ = predict(m, rows=test)
push!( score, (i, mod, rms(ŷ , y[test])) )
end

最佳答案

运行最后一个代码块时出现一些问题。

  • 循环 for jj in everyindex(Models) 迭代 Models 数组的索引,因此 jj 获取值1, 2, 3. 而是直接循环 Models 数组。

  • @load ARDRegressor 是一个宏调用;这意味着 @load jj 将转换为 @load("jj"),因此不要像您想要的变量那样使用 jj

  • os_jj 的值将在循环的每次迭代中被覆盖。您宁愿将分数保留在数组中的该索引处:os[jj] = ...
  • MLJ 要求您在加载模型之前导入包含模型的包。提醒自己,使用 ScikitLearn 需要在当前环境中安装 sklearn python 包。

考虑以下工作代码示例:

using MLJ, RDatasets
X, y = @load_boston; train, test = 1:406, 407:506
models = [@load ARDRegressor; @load AdaBoostRegressor; @load BaggingRegressor]
score = Array{Float64}(undef, 3)
for (i, model) in enumerate(models)
m = machine(model, X, y)
fit!(m, rows=train);
ŷ = predict(m, rows=test)
score[i] = rms(ŷ, y[test])
end
@show score

旁注:using Pkg 的使用;使用以下命令运行 julia 时,不需要 Pkg.activate("."):julia --project。但这取决于个人喜好

关于machine-learning - 比较 Julia MLJ 模型的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59340729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com