Python Scikit学习-导入自定义Cython文件时出错
我想创建自定义的Python Scikit学习-导入自定义Cython文件时出错,python,scikit-learn,cython,Python,Scikit Learn,Cython,我想创建自定义的拆分器和决策树累加器类,与sklearn中的随机森林回归器一起使用。但是,拆分器类是用Cython编写的。sklearn GitHub repo有两个拆分器文件,一个是pxd,另一个是pyd: 我读到的关于Cython的内容表明,使用Cython代码需要手动编译步骤,但我认为(或希望)我可以手动编辑\u splitter.pxd和\u splitter.pyd文件,因为它们在GitHub repo中的布局就是这样的,当我使用sklearn时,我显然没有编译任何东西。然而,在mac
拆分器
和决策树累加器
类,与sklearn中的随机森林回归器
一起使用。但是,拆分器
类是用Cython编写的。sklearn GitHub repo有两个拆分器文件,一个是pxd
,另一个是pyd
:
我读到的关于Cython的内容表明,使用Cython代码需要手动编译步骤,但我认为(或希望)我可以手动编辑\u splitter.pxd
和\u splitter.pyd
文件,因为它们在GitHub repo中的布局就是这样的,当我使用sklearn时,我显然没有编译任何东西。然而,在macOS上尝试这样做时,我会遇到一些错误
使用Spyder IDE,当我尝试复制该文件并导入复制的版本而不是sklearn版本时,我从\u splitter.pxd
中的这一行中得到一个无效语法错误:
cimport numpy as np
同样,此行与sklearn中的\u splitter.pxd
中的cimport
语句相同:
另外,当尝试通过在sklearn中镜像导入来导入拆分器文件时,我得到一个无模块名为…
错误:
import sklearn_custom.tree._splitter
通过在命令行上运行Spyder,我仔细检查了这不仅仅是Spyder的问题,仍然得到了错误
因此,我想知道python/sklearn在幕后做了什么,允许Cython代码按原样运行,而无需编译或Cython指令()中的任何特定于Cython的导入。如果我想编写与sklearn一起使用的自定义Cython,编译是不可避免的吗?如果是这样,我该如何处理现有的pyx
和pxd
文件(主要是后者,因为Cython指令中没有提到pxd
,并且pxd
文件没有导入到sklearn已有的pyx
文件中)