用python进行科学计算是公认的。这个包利用了Rstudio中促进python-R互操作性的新工作。确定界面设计的良好实践将需要广泛的讨论和实验,而这个包在这个方向上迈出了第一步。
一个关键的动机是用非常大的内存不足数据进行增量式PCA实现的试验。我们还提供了sklearn.cluster.KMeans过程的接口。
我们可以通过reticulate 's获取包含模块的python文档py_help
:以下结果可能会变得陈旧:
skd = reticulate::import("sklearn")$decomposition py_help(skd) Help on package sklearn.decomposition in sklearn: NAME sklearn.decomposition FILE /Users/stvjc/anaconda2/lib/python2.7/site-packages/sklearn/decomposition/__init__.py DESCRIPTION:mod: ' sklearn.decomposition '模块包含矩阵分解算法,包括PCA、NMF或ICA等。本模块的大部分算法都可以看作是降维技术。包目录_online_lda base cdnmf_fast dict_learning factor_analysis fastica_ incremental_pca…
网状包的设计目的是限制将数据从R转换为python所需的工作量,以便在每种语言中自然使用。
np =网状::进口(“numpy”,转换=假,delay_load =真正的)irloc =执行(“csv / iris.csv”,包=“BiocSklearn”)irismat =np$genfromtxt(irloc分隔符=',')
为了检查子矩阵,我们使用numpy中的take方法。下面所示的括号格式通知我们,我们所查看的不是R原生数据。
##数组([5.1,3.5,1.4,0.2],## [4.9,3.], 1.4, 0.2], ## [4.7, 3.2, 1.3, 0.2]])
我们将使用R的prcomp作为第一个测试,用虹膜数据演示sklearn模块的性能。
我们有一个python的虹膜数据表示。我们计算PCA如下:
## + '/home/biocbuild/.cache/R/basilisk/1.8.0/0/bin/conda' 'create' '——yes' '——prefix' ' '/home/biocbuild/.cache/R/basilisk/1.8.0/BiocSklearn/1.18.2/bsklenv' 'python=3.7.7' '——quiet' -c' 'conda-forge' '
## + '/home/biocbuild/.cache/R/basilisk/1.8.0/0/bin/conda' 'install' '——yes' '——prefix' '/home/biocbuild/.cache/R/basilisk/1.8.0/BiocSklearn/1.18.2/bsklenv' 'python=3.7.7'
## + '/home/biocbuild/.cache/R/basilisk/1.8.0/0/bin/conda' 'install' '——yes' '——prefix' ' '/home/biocbuild/.cache/R/basilisk/1.8.0/BiocSklearn/1.18.2/bsklenv' '-c' 'conda-forge' 'python=3.7.7' 'scikit-learn=1.0.2' 'h5py=3.6.0' 'pandas=1.2.4'
SkDecomp实例,方法:PCA ##使用getTransformed()获取投影输入。
这将返回一个可以通过python方法重用的对象。数值变换通过getTransformed
.
## [1] 150
## [,1] [,2] [,3] [,4] ## [1,] -2.684126 0.3193972 -0.02791483 -0.002262437 ## [2,] -2.714142 -0.1770012 -0.21046427 -0.099026550 ## [3,] -2.888991 -0.1449494 0.01790026 -0.019968390 ## [4,] -2.745343 -0.3182990 0.03155937 0.075575817 ## [5,] -2.728717 0.3267545 0.09007924 0.061258593 ## [6,] -2.280860 0.7413304 0.16867766 0.024200858
与R计算的一致性可以检查:
## pc1 pc2 pc3 pc4 ## [1,] 1 0 0 0 ## [2,] 0 -1 0 0 ## [3,] 0 0 -1 0 ## [4,] 0 0 0 0 0 -1
一个计算支持先天的内存消耗边界可用。在此过程中,还可以选择要计算的主成分的数量。
ippca =skIncrPCA(虹膜,1:4])#垫)#ippcab =skIncrPCA(虹膜,1:4),batch_size =25 l)轮(天哪(getTransformed(ippcab) fullpc),3.)
## pc1 pc2 pc3 pc4 ## [1,] 1.000 0 0.00 0.000 ## [2,] -0.001 -1 -0.01 -0.001
当数据以块的形式提供(可能来自流)时,可以使用此过程。我们迭代更新对象,它目前没有容器。同样,可以指定计算的组件数量。
ta =np$取#提供切片器实用程序ipc =skPartialPCA_step(助教(irismat0:49, 0 l))ipc =skPartialPCA_step(助教(irismat50:99, 0 l),obj =ipc)ipc =skPartialPCA_step(助教(irismatOne hundred.:149, 0 l),obj =ipc)ipc$变换(助教(irismat0:5, 0 l))
## [,1] [,2] [,3] [,4] ## [1,] -2.684126 0.3193972 -0.02791483 0.002262437 ## [2,] -2.714142 -0.1770012 -0.21046427 0.099026550 ## [3,] -2.888991 -0.1449494 0.01790026 0.019968390 ## [4,] -2.745343 -0.3182990 0.03155937 -0.075575817 ## [5,] -2.728717 0.3267545 0.09007924 -0.061258593 ## [6,] -2.280860 0.7413304 0.16867766 -0.024200858
## pc1 pc2 pc3 pc4 ## [1,] -2.684126 -0.3193972 0.02791483 0.002262437 ## [2,] -2.714142 0.1770012 0.21046427 0.099026550 ## [3,] -2.888991 0.1449494 -0.01790026 0.019968390 ## [4,] -2.745343 0.3182990 -0.03155937 -0.075575817 ## [5,] -2.728717 -0.3267545 -0.09007924 -0.061258593
我们从yriMulti包中提取了CEPH Yoruban子队列的甲基化数据。来自chr6和chr17的数据可在这个BiocSklearn包中的HDF5矩阵中获得。通过h5py File接口创建对数据集的引用H5matref
.
有关basilisk接口,请参见skPartialPCA_h5示例(H5matref)
用于直接使用HDF5。
我们需要更多的应用程序和分析。