python-3.x - 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 相同,但对我仍然不起作用。
这是我笔记本的链接
解决方案
CoreMlTools 适用于 scikit-learn 19.2 及以下版本。可能你有更大的版本。
尝试以这种方式将 scikit-learn 降级到 19.2:
!pip install --force-reinstall 'scikit-learn==0.19.2'
推荐阅读
- android - 即使将调试模式更改为发布模式,Android App Bundle 也未签名
- node.js - 从firestore Cloud Functions nodejs获取时间戳
- flutter - Flutter Firebase 身份验证模拟器启用
- r - 检查两个文本字符串中文本的相似性
- c++ - 类函数宏扩展为空
- salesforce - Salesforce SOQL 或 SOSL 中是否有 SOQL 函数将日期转换为 Unix 时间戳?
- latex - Latex 中的多列
- python - Ansible:根据特定事实计算主机
- swift - 用户凭证 - 使用 Apple 登录 (SwiftUI)
- outlook - 在 Outlook 加载项中获取浏览器 URL