为什么直接import sklearn无法调用sklearn.metrics下的相关接口?
sklearn根模块直接调用子模块报错原因
这是Python的模块导入规则和sklearn的包结构设计共同导致的:
- sklearn的根模块默认没有自动导入所有子模块,当你仅执行
import sklearn时,Python只会加载sklearn根目录下的初始化文件内容,不会主动递归加载metrics这类子模块,因此此时sklearn的命名空间里根本没有metrics这个属性,直接调用自然会抛出属性不存在的错误。 - 常用的
from sklearn.metrics import mean_squared_error属于显式导入子模块下的成员,Python在执行这条语句时会先加载sklearn根模块,再加载sklearn.metrics子模块,最后把mean_squared_error导入到当前命名空间,所以可以正常使用。
如果想要通过根模块的方式调用接口,只需要额外显式导入对应的子模块即可:
import sklearn import sklearn.metrics # 此时就能正常调用了 sklearn.metrics.mean_squared_error
内容的提问来源于stack exchange,提问作者JasonLee5555
相关产品推荐
相关产品推荐

