两个映射/嵌入的局部相似性量化。
flameplot的Python项目详细描述
火焰图
- 两个映射/嵌入的局部相似性量化。在
方法
为了比较样本在两种不同地图中的嵌入情况,我们提出了一种尺度相关的相似性度量。对于一对映射X和Y,我们分别比较每个样本的kx和ky最近邻的集合。我们首先将变量rxij定义为样本j在所有样本中相对于样本i的距离在地图X中的秩。样本i的最近邻将具有秩1、次近邻秩2等。类似地,ryij是样本j相对于地图Y中样本i的秩。现在我们定义区间[0,1]上的分数,as(式1)
在
式中,变量n是样本总数,指标函数由(式2)给出在
如果对于每个样本,地图X中的所有kx最近邻居也是地图y中的ky最近邻居,则得分sx,y(kx,ky)的值为1,反之亦然。注意,可以在类中的最小样本数上设置样本的局部邻域。或者,kxy也可以设置为平均类大小。原理图概述
系统地比较两个样本预测之间的局部和全局差异的示意图概述。为了便于说明,我们比较了两个输入映射(x和y),其中每个映射包含n个样本(步骤1)。第二步是基于欧氏距离的样本排序。随后将映射x的秩与kx和ky最近邻的映射y的秩进行比较(步骤3)。等级之间的重叠(第4步)随后总结为Score:Sx,y(kx,ky)。在
在
flameplot中的函数
scores=flameplot.compare(map1,map2)fig=flameplot.plot(scores)X,y=flameplot.import_example()fig=flameplot.scatter(Xcoord,Ycoord)
目录
安装
- 从PyPI安装火焰图(推荐)。flameplot与python3.6+兼容,可以在Linux、macosx和Windows上运行。在
- 它是根据麻省理工学院的许可证发行的。在
要求
^{pr2}$快速入门
pip install flameplot
- 或者,从GitHub源安装flameplot:
git clone https://github.com/erdogant/flameplot.git
cd flameplot
python setup.py install
导入flameplot包
importflameplotasflameplot
火焰图
两幅地图的比较采用局部相似性量化方法。在
# Load librariesfromsklearnimport(manifold,decomposition)importpandasaspdimportnumpyasnp# Load example dataX,y=flameplot.import_example()# PCA top 50 PCsX_pca_50=decomposition.TruncatedSVD(n_components=50).fit_transform(X)# PCA top 2 PCsX_pca_2=decomposition.TruncatedSVD(n_components=2).fit_transform(X)# tSNEX_tsne=manifold.TSNE(n_components=2,init='pca').fit_transform(X)# RandomX_rand=np.c_[np.random.permutation(X_tsne[:,0]),np.random.permutation(X_tsne[:,1])]
散点图
importflameplotasflameplotflameplot.scatter(X_pca_2[:,0],X_pca_2[:,1],label=y,title='PCA')flameplot.scatter(X_tsne[:,0],X_tsne[:,1],label=y,title='tSNE')flameplot.scatter(X_rand[:,0],X_rand[:,1],label=y,title='Random')
在
现在我们有了坐标,可以进行比较和绘图了!在
# Compare PCA(50) vs. tSNEscores1=flameplot.compare(X_pca_50,X_tsne,n_steps=5)# Compare PCA(2) vs. tSNEscores2=flameplot.compare(X_pca_2,X_tsne,n_steps=5)# Compare random vs. tSNEscores=flameplot.compare(X_rand,X_tsne,n_steps=5)# plotfig=flameplot.plot(scores1,xlabel='PCA (50d)',ylabel='tSNE (2d)')fig=flameplot.plot(scores,xlabel='PCA (2d)',ylabel='tSNE (2d)')fig=flameplot.plot(scores,xlabel='Random (2d)',ylabel='tSNE (2d)')
PCA前50D与2D tSNE的比较结果表明,在局部和全球尺度上具有高度的相似性。轴是“相邻邻居”(nn)的数量。我们看到的是,在局部尺度上(低nn),地图之间的相似性很高,但在更高的比例尺上也是如此。在
在
在局部和全球尺度上,PCA顶2D与2D tSNE的比较导致了与50D相比的更低的相似性。我们看到的是,在局部尺度(低nn)上存在低相似性,这说明样本具有不同的邻域。在更大的范围内,它会变得更绿一点,而且在邻居之间的平均相似性也会稍微多一些。这基本上意味着在全球范围内检测到相同的数字,但在局部尺度上的排序不同。在
在
随机数据点与二维tSNE的比较导致了局部和全局尺度上的低相似性。这是我们在排列数据时期望看到的。在
在
引文
如果这对你的研究有用,请在你的出版物中引用火焰图。以下是BibTeX条目示例:
@misc{erdogant2019flameplot,title={flameplot},author={Erdogan Taskesen},year={2019},howpublished={\url{https://github.com/erdogant/flameplot}},}
- Taskesen,E.等,二维地图显示的泛癌亚型由分子特性的特定组合驱动的ws子结构。科学。报告6,24949
维护人员
- Erdogan Taskesen,github:erdogant
参考文献
许可证
有关详细信息,请参见LICENSE。在
捐赠
- 这个软件包是在我空闲时间创建和维护的。如果这个包是有用的,你可以显示你的gratitude:)谢谢!在
- 项目
标签: