首页 > 解决方案 > coremltools.converters.sklearn.convert 导致错误:NameError: name '_tree' is not defined

问题描述

TLDR:我无法将线性回归模型转换为可以保存的模型,如下所示:

model = coremltools.converters.sklearn.convert(regr, input_features, output_feature)
model.save("Advertising.mlmodel")

我正在编写 Raywenderlich 教程使用 SciKit Learn 开始机器学习,当我将线性回归转换为可以保存的模型时,我偶然发现了 Jupyter Notebook 末尾的错误,它给了我以下错误。

---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-82-da16b7baefa4> in <module>
     12 # tree.export_graphviz(model)
     13 
---> 14 coreml_model = coremltools.converters.sklearn.convert(model, inputs, output)
     15 coreml_model.save('Advertising.mlmodel')

/usr/local/lib/python3.8/site-packages/coremltools/converters/sklearn/_converter.py in convert(sk_obj, input_features, output_feature_names)
    146     # several issues with the ordering of the classes are worked out.  For now,
    147     # to use custom class labels, directly import the internal function below.
--> 148     from ._converter_internal import _convert_sklearn_model
    149 
    150     spec = _convert_sklearn_model(

/usr/local/lib/python3.8/site-packages/coremltools/converters/sklearn/_converter_internal.py in <module>
     34 from . import _LinearSVR
     35 from . import _linear_regression
---> 36 from . import _decision_tree_classifier
     37 from . import _decision_tree_regressor
     38 from . import _gradient_boosting_classifier

/usr/local/lib/python3.8/site-packages/coremltools/converters/sklearn/_decision_tree_classifier.py in <module>
     14 
     15 model_type = "classifier"
---> 16 sklearn_class = _tree.DecisionTreeClassifier
     17 
     18 

NameError: name '_tree' is not defined

这很奇怪,因为根据 Apple 在github.io/coremltools上的官方文档,它们的实现与 Raywenderlich 相同,但对我仍然不起作用。

这是我笔记本的链接

标签: python-3.xscikit-learnjupyter-notebookpython-2.xcoremltools

解决方案


CoreMlTools 适用于 scikit-learn 19.2 及以下版本。可能你有更大的版本。

尝试以这种方式将 scikit-learn 降级到 19.2:

!pip install --force-reinstall 'scikit-learn==0.19.2' 

推荐阅读