如何从 OrangeML 模型获取 Scikit-learn 模型输出?

How to get Scikit-learn model output from OrangeML model?

我希望在 Orange 模型(例如 Orange Tree Classifier)上应用 python 库,但是该库只接受 scikit-learn 模型。有没有办法将我的橙树分类器转换为 Scikit-Learn 树分类器,包括我的橙色管道中的 Python 脚本?我知道 Orange ML 模型是建立在 scikit 学习库上的,所以理论上它们应该是可转换的。

提前致谢! 马丁

大多数 Orange 模型都是基于 Scikit-Learns 的分类器构建的,但 TreeLearner 不是。但是,Orange 中有 SklTreeLearner,它包装了 Scikit 中的 DecisionTreeClassifier。如果你想从橙色模型中取出 Scikit 模型,请使用这个。这是一个例子:

from Orange.classification import SklTreeLearner
from Orange.data import Table

learner = SklTreeLearner()
model = learner(Table("iris"))  # train model on Iris data
skl_model = model.skl_model  # get skl model

同样的原则也可以用于包装 Scikit 模型的其他模型 - LogisticRegression、RandomForest,...

为了在 visual Orange 中训练模型,可以选择使用 Python 脚本小部件获取 skl_model。您将学习者连接到 Python 脚本小部件,如下面的屏幕截图所示。将 Model 学习者输出连接到 Python 脚本小部件上的 Classifier 输入很重要。然后在 Python Script widget.

中使用以下代码获取 Skl 模型
skl_model = in_classifier.skl_model

注意:您可以从除 Tree 学习者之外的任何学习者那里获得 skl_learner。