coremltools.converters.sklearn.convert 会导致错误:NameError: 未定义名称'_tree'



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

这很奇怪,因为根据苹果在github.io/coremltools上的官方文档,它们的实现与Raywenderlich相同,但仍然不适用于我

这是我的笔记本的链接

CoreMlTools适用于scikit learn 19.2及以下版本。也许你有更大的版本。

尝试降级scikit学习19.2通过这种方式:

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

最新更新