Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scikit学习-导入自定义Cython文件时出错_Python_Scikit Learn_Cython - Fatal编程技术网

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
文件中)