如何阅读Scikit-Learn源代码?

问题描述 投票:0回答:2

我正在学习使用 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 作为我的环境....这太奇怪了

python scikit-learn decision-tree
2个回答
1
投票

sklearn 中的一些库是用 cython 编译的。 而且你在你的文件夹中找不到源代码。 它们以 .pyd 的形式放置在您的文件夹中,并且无法读取。 .pyd 文件仅从其他 .py 文件(例如库)导入。

您可以在 sklern git 存储库中找到 .pyx 形式的原始源代码。 (文件名相同)

cython 语法与 python 语法略有不同,尤其是在定义变量方面。 如果你想改变代码,你应该将.pyx编译为.pyd。


0
投票

the location of tree source code

源代码由cython编写。 '.pyd' 文件类似于 c 或 c++ 中的头文件,'.pyx' 文件类似于 c 或 c++ 中的 .c 或 .cpp 文件。

© www.soinside.com 2019 - 2024. All rights reserved.