对sklearn文件pyd文件进行修改的方法

由于要修改决策树分裂算法进行修改,所以为了省事想要直接使用sklearn里现场的代码。

首先说明一下,sklearn为了提升程序运行效率所以将关键代码通过Cython编译成了.pyd文件运行。生成.pxd文件的流程是通过.pyx文件编译为c然后将编译为可执行文件.pyd(win平台下是.pyd文件,linux下是.so文件),.pyd文件可以被作为包引用到python代码中,从而实现将关键代码使用c编写。

想要修改.pyd文件就需要获取原始的.pyx文件。正常安装scikit-learn是不会有这个文件的,正确的获取该文件需要通过github的scikit-learn项目下载。下载方式随意。

github的项目中包含了全部.pyx文件。首先修改你想要修改的pyd对应的pyx文件。然后在命令行中将目录移动到你下载的scikit-learn文件下,执行以下命令(建议在anaconda中新建一个虚拟环境,不要直接使用原始的环境)。

pip install --no-build-isolation --editable .

之后等待编译结束即可。

Obtaining file:///D:/school/github/scikit-learn
    Preparing wheel metadata ... done
Requirement already satisfied: joblib>=0.11 in c:\anaconda3\envs\sklearndev\lib\site-packages (from scikit-learn==1.0.dev0) (1.0.1)
Requirement already satisfied: scipy>=0.19.1 in c:\anaconda3\envs\sklearndev\lib\site-packages (from scikit-learn==1.0.dev0) (1.6.2)
Requirement already satisfied: numpy>=1.13.3 in c:\anaconda3\envs\sklearndev\lib\site-packages (from scikit-learn==1.0.dev0) (1.20.2)
Requirement already satisfied: threadpoolctl>=2.0.0 in c:\anaconda3\envs\sklearndev\lib\site-packages (from scikit-learn==1.0.dev0) (2.1.0)
Installing collected packages: scikit-learn
  Attempting uninstall: scikit-learn
    Found existing installation: scikit-learn 1.0.dev0
    Uninstalling scikit-learn-1.0.dev0:
      Successfully uninstalled scikit-learn-1.0.dev0
  Running setup.py develop for scikit-learn
Successfully installed scikit-learn

如果出错的话就按照错误提示进行操作,一般是缺少环境或者是代码语法错误。缺少环境使用pip install XXXX进行安装(如果使用的anaconda的话用conda install XXXX),语法问题会提示你具体位置,自行解决。

另外说一下,如果要系统的对scikit-learn文件进行修改,推荐看一下参考文献中的sklearn官方的文档。

参考文献:Cython官方文档

scikit-learn官网贡献指南

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值