极端伪采样包

pseudo-sampler的Python项目详细描述


极端伪采样器

EPS是一种特征选择和特征排序方法我们已经描述了该技术,并用于提取apaper中的基因选择和rna-seq病例对照研究。

工作原理

这个库在4个步骤中使用TensorFlow

  1. 它首先创建一个变分自动编码器(vae),将每个点从特征空间映射到潜在空间的一个分布。您可以阅读有关vaeshere的更多信息。
  2. 然后用一个回归模型,用一条简单的直线在潜伏期空间对样本进行分类,精度很高然后在它的两边找到最远的点。我们称之为极端样本。
  3. 然后,它使用一个正态分布(称为极端伪样本)在我们的极端样本周围随机生成新样本。使用相同的训练vae,这些新生成的样本被映射回特征空间。
  4. 训练了一个新的回归模型来对生成的伪样本进行分类。然后使用回归线对这些极端伪样本中最重要的特征进行排序。

安装

使用安装工具,使用以下命令安装软件包:

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的分布数。

Github-flavored Markdown

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java解析一个文本文件,如果内容是一种特定的格式,就打印它   java如何使jbutton在另一个组件中执行键盘笔划   连接到独立帐户的java Stripe   java在数据库连接过程中出错。。。初始连接   一个系列JavaFX中特定节点的java集样式   java重建recycler视图会导致它消失   在codechef上提交java Getting runtime(NZEC)时出错   Java类路径设置错误   java如何显示数组中2个数字之间的信息?   java为什么新的GC只有很长的用户时间?   如何解决java。关于此代码的lang.OutOfMemoryError   通过应用程序在Facebook粉丝页面上发布java帖子   java Red5服务器无法启动   系统输出Java读取文本文件外置行   java整数。Parse对excel获取的字符串抛出NumberFormatException   有一个Java数组列表;如何按每个数组的最后一个元素排序?   java需要txt文件中的数据(以逗号分隔)来用现有类中的对象填充arraylist