Scikit-Learn - Ошибка при импорте пользовательских файлов Cython - PullRequest
1 голос
/ 26 мая 2020

Я хочу создать собственные классы Splitter и DecisionTreeRegressor, которые будут использоваться с RandomForestRegressor в sklearn. Однако класс Splitter написан на Cython. В репозитории sklearn GitHub есть два файла-разделителя, один pxd и один pyd: https://github.com/scikit-learn/scikit-learn/tree/fd237278e895b42abe8d8d09105cbb82dc2cbba7/sklearn/tree

То, что я читал о Cython, указывает на то, что требуется этап ручной компиляции для использования кода Cython, но я бы подумал (или надеюсь), что смогу просто вручную отредактировать файлы _splitter.pxd и _splitter.pyd, поскольку именно так они выложены в репозитории GitHub, и я, очевидно, ничего не компилирую, когда использую sklearn. Однако при попытке сделать это в macOS я получаю пару ошибок.

Используя Spyder IDE, я получаю неверную синтаксическую ошибку из этой строки в _splitter.pxd, когда пытаюсь сделать копию этого файла. и импортировать мою скопированную версию, а не версию sklearn:

cimport numpy as np

Опять же, эта строка идентична оператору cimport в _splitter.pxd в sklearn: https://github.com/scikit-learn/scikit-learn/blob/fd237278e895b42abe8d8d09105cbb82dc2cbba7/sklearn/tree/_splitter.pxd

Кроме того, при попытке импортировать файл разделителя путем зеркалирования импорта в sklearn я получаю сообщение об ошибке No module named...:

import sklearn_custom.tree._splitter

Я дважды проверил, что это проблема не только со Spyder. запустил его в командной строке и по-прежнему получил ошибку.

Итак, мне интересно, что python / sklearn делают за кулисами, что позволяет коду Cython работать как есть и без компиляции или любого из Cython- Speci c импорт из инструкций Cython (https://cython.readthedocs.io/en/latest/src/tutorial/cython_tutorial.html). Неизбежна ли компиляция, если я хочу написать собственный Cython для использования со sklearn? Если да, то что именно мне делать с существующими файлами pyx и pxd (в основном последними, поскольку в инструкциях Cython не упоминается pxd, а файл pxd не импортируется в файл pyx ), которые уже существуют для sklearn?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...