Machine learning 比较Julia MLJ模型的结果

Machine learning 比较Julia MLJ模型的结果,machine-learning,julia,Machine Learning,Julia,我想训练3个模型:ArdRegressionor,AdaBoostRegressor,BaggingRegressionor 目前,我一次培训一名学员,例如: using Pkg; Pkg.activate("."); Pkg.instantiate(); using RDatasets, MLJ, Statistics, PrettyPrinting, GLM X, y = @load_boston; train, test = 1:406, 407:506 @load ARDRe

我想训练3个模型:ArdRegressionor,AdaBoostRegressor,BaggingRegressionor

目前,我一次培训一名学员,例如:

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

在运行上一个代码块时存在一些问题

  • eachindex(Models)中jj的循环
    迭代
    Models
    数组的索引,因此
    jj
    取值1、2、3。而是直接在
    模型上循环

  • @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

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

我正试图用自己的代码做类似的事情。当每台机器采用不同数量的参数时,应如何操作?例如,我有一个内核回归模型,该模型采用带有样本位置的采样掩码。这是我问的问题,如果有任何帮助,我将不胜感激