我正在学习使用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作为我的环境...。真是太奇怪了
答案 0 :(得分:0)
sklearn中的某些库是使用cython编译的。 而且您在文件夹中找不到源代码。 它们以.pyd形式放置在您的文件夹中,无法阅读。 .pyd文件仅从其他.py文件(例如库)导入。
您可以在sklern git存储库中以.pyx的形式找到原始源代码。 (文件名相同)
cython语法与python语法略有不同,特别是在定义变量方面。 如果要更改代码,则应将.pyx编译为.pyd。