用于变量选择的仿制品

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环境下有时会失败。在

  1. 首先,使用 pip install knockpy。这应该可以在所有设备上正确安装,并且包含以前安装的几乎所有功能。然而,计算高斯仿冒的最优分布的算法,如minimum reconstructability knockoffsSDP knockoffs,可能要慢一个数量级。在
  2. [可选]加快最小可重构性仿制品(默认仿制品类型)的计算: (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
  3. [可选]要加速(非默认)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。在

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

推荐PyPI第三方库


热门话题
基于Java的遗传算法确定最优交易行为   java改型2.0无法解析Json嵌套对象   java在数组中查找最大额定值(数字),我们不能跳过数组中的一个或多个连续数字   java在spring boot中从命令行设置活动概要文件和配置位置   JavaAxis2:传输错误:404错误:未找到帮助理解其真正含义   java使用Play2WAR和Play2.2.1   java理解函数运算符:Lambda   在代理java后面读取https网页数据   java应用程序。Android单元测试中的类mock   java为什么onClick布局XML引用的方法需要是公共的?   从SMTLIB2文件解析的java显示声明   java重写给定的类以使用组合而不是继承   HTMLUnit和Java:NoSuchMethodException:createDefaultSSLContext()   java如何使用Spring和ThymeLeaf从前端正确更新后端中的对象?   来自init()Java的方法调用   使用cellrendering从数据库向JTable动态添加数据后,java无法使用JTable执行排序操作   java Android Studio 1.5.1。渲染错误(浮动操作按钮)   web服务如何使用UsenameToken和PasswordDigest为JAVA中的SOAP客户端附加wsse安全头   java为什么要在局部变量和myApplicationClass中同时删除“ArrayList.remove”?