【持续更新】关于SafeU的安装说明

【持续更新】关于SafeU的安装说明,第1张

目录

  • 一、写在前面


  • 二、SafeU的安装


  • 三、魔改源码

    • 3.1 `Experiments.py` 的修改
    • 3.2 `datasets\base.py` 的修改
    • 3.3 `classification\LPA.py` 的修改

  • 四、降低版本以兼容


  • 五、写在最后


一、写在前面

安全半监督学习(S3L)是目前较为新的一个领域,Python 中有两种第三方库(很大程度上)实现了S3L的一些算法:s3lsafeu,均为同一作者开发(两个包的内容似乎一模一样,只有名字不一样)。


前者在PyPI上已经搜不到了,所以本文将聚焦于后者的安装使用。


SafeU链接:https://pypi.org/project/safeu/(版本0.1.0)

可能会有读者疑惑,安装一个第三方库不是有手就行吗?这还需要单独写一篇文章来讲解?

这是因为,SafeU所依托的一些包太过陈旧(开发者已经两年多没有维护了),最新的包又不兼容SafeU,如果强行去折腾版本问题最后可能竹篮打水一场空。


所以目前来说,最佳方案是安装最新版本的依赖包,然后魔改源码。



二、SafeU的安装

强烈建议用 conda 创建一个新的环境。


在命令行中按顺序依次执行以下命令:

conda create -n s3l python numpy scipy pandas scikit-learn h5py
conda activate s3l
pip install safeu

三、魔改源码

首先进入 ...\envs\s3l\Lib\site-packages\safeu 目录下,准备开始魔改源码。


3.1 Experiments.py 的修改

因为 sklearn.externals.joblib 已经弃用,所将第 10 行改为

from joblib import Parallel, delayed
3.2 datasets\base.py 的修改

pandasDataFrame 数据结构转换出现问题,将第 332 行改为

X = pd.read_csv(f, delimiter=',', low_memory=False).to_numpy()

将第 338 行改为

y = pd.read_csv(f, delimiter=',', low_memory=False).to_numpy()
3.3 classification\LPA.py 的修改

该文件对应的是标签传播算法,其中使用的 sklearn 的一些API已经过时。


将第 2 行改为

from sklearn.semi_supervised import LabelPropagation

第 124 行改为

model = LabelPropagation(kernel=self.kernel,

第 128 行没有 ravel,需要改为

model.fit(instance, labels.ravel())

四、降低版本以兼容

如果不想魔改源码可以看这一章节(注意三和四是独立的)。


在命令行按顺序依次执行以下命令

conda create -n s3l python=3.7
conda activate s3l
pip install numpy==1.15.1 scipy==1.1.0 pandas==0.24 scikit-learn==0.19.2 h5py
pip install safeu

五、写在最后

SafeU 的开发者太久没维护了,不建议使用。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/580970.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-11
下一篇 2022-04-11

发表评论

登录后才能评论

评论列表(0条)

保存