两个映射/嵌入的局部相似性量化。

flameplot的Python项目详细描述


火焰图

PythonPyPI VersionLicenseDownloadsDonate

  • 两个映射/嵌入的局部相似性量化。在

方法

为了比较样本在两种不同地图中的嵌入情况,我们提出了一种尺度相关的相似性度量。对于一对映射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

维护人员

参考文献

许可证

有关详细信息,请参见LICENSE。在

捐赠

  • 这个软件包是在我空闲时间创建和维护的。如果这个包是有用的,你可以显示你的gratitude:)谢谢!在

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

推荐PyPI第三方库


热门话题
java查询,该查询应返回特定相关实体的实体   java创建了两个可运行的JAR,它们使用相同的库而不需要两次   java swing应用程序如何设置面板中组件的高度(和宽度)   在fat jar中找不到java JasperReport文件错误   kotlin在java中如何称呼这个构造函数?   java为什么被零除是一个不可恢复的问题?   java为SUTime添加用于解析季度的自定义规则   java merge 2带所有元素的排序列表   从字符串StringUtils Java中提取数字   java ForLoops最大和最小数   java我可以为嵌入式tomcat 8定义始终保持活动状态的最小executer线程数吗?   java当metod返回ResponseEntry<Resource>抛出错误时,如何返回ModelandView?   java片段翻译和电话定位错误   javagwt:如何让regex(模式和匹配器)在客户端工作   java EAR文件和“WebSphere增强的EAR”之间有什么区别?