python - 如何阅读 Scikit-Learn 源代码?
问题描述
我正在学习使用 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 作为我的环境....太奇怪了
解决方案
sklearn 中的一些库是用 cython 编译的。而且您在文件夹中找不到源代码。它们以 .pyd 的形式放置在您的文件夹中,因此无法阅读。.pyd 文件仅从其他 .py 文件(如库)导入。
您可以在 sklern git 存储库中以 .pyx 的形式找到原始源代码。(文件名相同)
cython 语法与 python 语法略有不同,尤其是在定义变量方面。如果要更改代码,则应将 .pyx 编译为 .pyd。
推荐阅读
- angular - Angular8 路由为空或参数化
- ios - “结果”类型的 Alamofire 值
' 没有成员 'isSuccess' (Swift 5) - sql - Oracle SQL - 如何检索今天与昨天之间的 ID 计数差异
- java - recyclerview 单击转到新页面 android 页面 info.xml 并发送产品标题
- reactjs - 文档对象焦点事件在 React 中无法正常工作
- rxjs - 如何在 RxJs 5.5.6 中使用管道运算符
- asp.net-mvc - 如何在 *.cshtml 中使用 es6 类
- python - 如何仅用字典或文本文件中存在的单词替换熊猫数据框的列?
- scala - scala "console" 命令给出错误 "Missing scala-library.jar"
- javascript - 如何使用 Redux 将徽章值传递给 React Native 上的 BottomTabBar