【发布时间】:2019-01-09 16:09:04
【问题描述】:
我正在学习使用 scikit-learn 构建决策树。但是,当我使用示例代码时。我发现建树的内核代码是空的。
我正在使用以下代码:
from sklearn import tree
X = [[0, 0], [1, 1]]
Y = [0, 1]
clf = tree.DecisionTreeClassifier()
clf = clf.fit(X, Y)
我去 fit() 方法查看代码的详细信息。而且我认为实现决策树最重要的代码是tree.py第362行的以下代码。
builder.build(self.tree_, X, y, sample_weight, X_idx_sorted)
但是,当我进入_tree.py中的build方法时,我发现所有方法都是空的,只包含'pass'关键字,例如:
""" Build a decision tree in depth-first fashion. """
def build(self, *args, **kwargs): # real signature unknown
""" Build a decision tree from the training set (X, y). """
pass
我想知道奇怪的代码。我不知道弄清楚。我对源代码有误吗?这段代码怎么运行?
我使用 PyCharm 作为我的 IDE,并使用 Anaconda3 作为我的环境....太奇怪了
【问题讨论】:
-
不确定你在看哪里,但这是实现的(之一):github.com/scikit-learn/scikit-learn/blob/master/sklearn/tree/…
-
我使用 PyCharm 作为我的 IDE,使用 Anaconda3 作为我的环境....太奇怪了
-
哦,我现在明白了。有时 IDE 会为 cython 使用一些 python 存根函数。我猜语法检查器需要它才能正常工作(或类似的东西)
-
scikit-learn 的某些部分使用 Cython 代码来加快执行速度,例如树模块,然后是 svm 模块等。这实际上不是 IDE 可能正在寻找的正确的 python def 和类。
-
@Vivek Kumar 谢谢。也许我不应该用 PyCharm 检查它。
标签: python scikit-learn decision-tree