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

一、写在前面

安全半监督学习(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

三、魔改源码

首先进入 ...envss3lLibsite-packagessafeu 目录下,准备开始魔改源码。

3.1 Experiments.py 的修改

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

from joblib import Parallel, delayed

3.2 datasetsbase.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 classificationLPA.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 的开发者太久没维护了,不建议使用。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>