用于变量选择的仿制品
knockp的Python项目详细描述
磕磕碰碰的
用于变量选择的仿制品框架的python实现。有关详细的文档和教程,请参见https://amspector100.github.io/knockpy/。在
安装
要安装knockpy,首先使用以下命令安装choldate:
pip install git+git://github.com/jcrudy/choldate.git
然后,使用pip安装knockpy:
pip install knockpy[fast]
要使用(可选)kpytorch子模块,您需要安装pytorch。在
如果安装失败怎么办?
knockpy依赖于重负载的线性代数例程,在非Linux环境下有时会失败。在
- 首先,使用
pip install knockpy
。这应该可以在所有设备上正确安装,并且包含以前安装的几乎所有功能。然而,计算高斯仿冒的最优分布的算法,如minimum reconstructability knockoffs和SDP knockoffs,可能要慢一个数量级。在 - [可选]加快最小可重构性仿制品(默认仿制品类型)的计算:
(a) 跑
pip install cython>=0.29.14
如果编译器的配置有三个错误,那么很可能是因为C的配置不正确而导致的。首先,Anaconda包管理器包含一个编译器,因此命令conda install cython
应该在所有平台上工作。其次,在Windows上,可以为cython here安装预编译的二进制文件。最后,在所有平台上,文档here描述了如何在安装期间正确配置C编译器。 (b) 跑pip install git+git://github.com/jcrudy/choldate.git
- [可选]要加速(非默认)SDP仿制品的计算,您需要安装
scikit-dsdp
。在非Linux环境中,这可能是一个挑战。我们希望以后能提供更明确的安装说明。在
快速启动
给定一个数据矩阵X
和一个响应向量y
,knockpy使用各种机器学习算法(也称为“特征统计”)和各种类型的仿制品,可以很容易地使用仿制品来执行变量选择。下面是一个简单的例子,我们使用交叉验证套索来为特征和仿制品分配可变的重要性。在
import knockpy as kpy
from knockpy.knockoff_filter import KnockoffFilter
# Generate synthetic data from a Gaussian linear model
data_gen_process = kpy.dgp.DGP()
data_gen_process.sample_data(
n=1500, # Number of datapoints
p=500, # Dimensionality
sparsity=0.1,
x_dist='gaussian',
)
X = data_gen_process.X
y = data_gen_process.y
Sigma=data_gen_process.Sigma
# Run model-X knockoffs
kfilter = KnockoffFilter(
fstat='lasso',
ksampler='gaussian',
)
rejections = kfilter.forward(X=X, y=y, Sigma=Sigma)
最重要的是,knockpy
是模块化的,因此研究人员和分析人员可以轻松地将功能分层。在
运行测试
- 要运行所有测试,请运行
python3 -m pytest
- 要运行特定的标签,请运行
pytest -v -m {label}
。在 - 要选择除特定标签之外的所有标签,请运行
pytest -v -m "not {label}"
(带引号)。在 - 要运行特定的文件,请尝试pytest/{filename}.py。要在文件中运行特定的测试,请运行pytest/{file_name}.py::classname::test_方法。您也不必指定 确切的测试方法,你明白了。在
- 要使用分析运行测试,请尝试
python3 -m pytest {path} --profile
。这将在prof/中生成一组.prof文件。然后你可以运行snakeviz文件名.prof将输出可视化。 命令行命令中还有更多用于输出的标志/选项。在 - 或者,cprofilev更好。
要运行cprofilev,请将测试复制并粘贴到proftest/*上,然后运行
python3 -m cprofilev proftest/test_name.py
。在
- 项目
标签: