极端伪采样包
pseudo-sampler的Python项目详细描述
极端伪采样器
EPS是一种特征选择和特征排序方法我们已经描述了该技术,并用于提取apaper中的基因选择和rna-seq病例对照研究。
工作原理
这个库在4个步骤中使用TensorFlow
- 它首先创建一个变分自动编码器(vae),将每个点从特征空间映射到潜在空间的一个分布。您可以阅读有关vaeshere的更多信息。
- 然后用一个回归模型,用一条简单的直线在潜伏期空间对样本进行分类,精度很高然后在它的两边找到最远的点。我们称之为极端样本。
- 然后,它使用一个正态分布(称为极端伪样本)在我们的极端样本周围随机生成新样本。使用相同的训练vae,这些新生成的样本被映射回特征空间。
- 训练了一个新的回归模型来对生成的伪样本进行分类。然后使用回归线对这些极端伪样本中最重要的特征进行排序。
安装
使用安装工具,使用以下命令安装软件包:
python3 -m pip install pseudo-sampler
或者您可以下载代码并手动将其导入到项目中。或者使用虚拟环境。
用法
从包中导入名为eps的主类:
from pseudo-sampler.eps import EPS
然后,您可以使用以下代码片段创建eps即时消息:
eps = EPS(data, labels, layers, learning_rate = 1e-4, batch_size = 100, VAE_activation=tf.nn.relu, normalize=True)
数据应该是具有n*d维的浮点numpy数组。其中n是样本总数,d是特征空间中的特征数。 标签应该是长度为n的numpy数组,对于case和controls,包含1和0。 layers是一个整数python列表,包含deep variance auto encoder的每一层中的感知器数量;仅在编码器端(解码器端将被镜像)。例如,如果希望拥有具有以下结构的深层网络: 输入->;250->;120->;60->;30维潜在空间->;60->;120->;250->;输出 可以通过将以下内容作为layers参数来表示它。
layers = [250,120,60,30]
学习率、批量大小和激活函数用于创建vae。 默认情况下,输入数据将规范化为介于0和1之间。如果它们已经在该间隔内,则可以将规范化标志设置为“关”。 创建eps实例后,可以使用以下命令运行eps实验:
feature_ranks = eps.run(vae_epochs=50,regression_epochs=500,vae_address=‘./vae_mode.ckpt’)
可以分别为VAE和线性回归模型设置时段数。训练过的vae模型在运行过程中作为备份保存。可以使用vae_address参数设置备份地址。 run函数返回一个特征索引列表,这些特征是根据它们在eps分类中的重要性排序的。
未来工作
在不久的将来,我计划增加使用vae分类器进行分类的能力,而不仅仅是特征排序。我还计划为模型添加更多自定义选项。例如可用于生成eps的分布数。