首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >朱莉娅中冲突模的定义

朱莉娅中冲突模的定义
EN

Stack Overflow用户
提问于 2019-09-29 21:34:27
回答 1查看 428关注 0票数 3

我是朱莉娅的新手(与MATLAB一起使用)。我使用一些数据集,清理它并使用ScikitLearn中可用的工具编码分类变量,然后运行干净数据的XGBoost。

但是,我不能通过经过训练的XGBoost模型进行预测,因为ScitkitLearn和XGBoost都有一个名为predict的函数。请参阅下面的错误消息:

警告: ScikitLearn和XGBoost都导出了“预测”;它在模块Main中的使用必须是限定错误: LoadError: UndefVarError:预测未定义

问题是我不能将XGBoost的XGBoost函数定义为XGBoost.predict,因为这不起作用,这似乎是我所知道的唯一解决方案。

此外,我无法找到或理解如何在不加载预测函数的情况下只从ScikitLearn加载特定模块。例如,import MLDataUtils.splitobs格式适用于大多数包,但ScikitLearn.preprocessing不起作用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-30 08:54:15

下面是您的问题的MWE (两个相同名称的export模块):

代码语言:javascript
运行
复制
module A
    export f
    f() = println("f from A")
end
module B
    export f
    f() = println("f from B")
end

现在,考虑一下using AB并尝试调用f的情况

代码语言:javascript
运行
复制
julia> using .A, .B

julia> f()
WARNING: both B and A export "f"; uses of it in module Main must be qualified
ERROR: UndefVarError: f not defined

这一失败的原因是,朱莉娅不知道f的含义;是A.f还是B.f?您可以通过显式地消除对f的任何调用的歧义来解决这个问题。

代码语言:javascript
运行
复制
julia> using .A, .B

julia> A.f()
f from A

julia> B.f()
f from B

如果您希望能够单独通过名称(f)调用其中一个函数,那么您(用户)必须选择f应该指向什么。您可以通过显式地将其定义为import语句的一部分来做到这一点:

代码语言:javascript
运行
复制
julia> using .A, .B

julia> using .B: f # explicitly choosing f to be B.f

julia> f() # no error
f from B

julia> A.f()
f from A

julia> B.f()
f from B

另一种选择是在您的命名空间中显式地定义您自己的名称f

代码语言:javascript
运行
复制
julia> using .A, .B

julia> const f = B.f # defining a new name in this namespace pointing to B.f
f (generic function with 1 method)

julia> f() # no error
f from B

julia> A.f()
f from A

julia> B.f()
f from B
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58159369

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档