trimap:使用三元组进行降维

trimap的Python项目详细描述


trimap是一种使用三重约束的降维方法。 形成一组点的低维嵌入。三重态约束 其形式为“点i比点k更接近点j”。三胞胎是 从点的高维表示和加权中取样 方案用来反映每个三元组的重要性。

trimap提供了比 其他降维方法,如t-sne、largevis和umap。全球 结构包括簇的相对距离,多个尺度 数据和可能的离群点的存在。

下面的实现是在python中实现的。

如何使用Trimap

trimap拥有类似于其他sklearn库的transformer api。使用 使用默认参数修剪,只需执行以下操作:

importtrimapfromsklearn.datasetsimportload_digitsdigits=load_digits()embedding=trimap.TRIMAP().fit_transform(digits.data)

参数

与其他降维方法不同,trimap只有几个参数。 调谐:

  • ^{tt1}$: Number of nearest neighbors for forming the nearest neighbor triplets (default = 10).
  • ^{tt2}$: Number of outliers for forming the nearest neighbor triplets (default = 5).
  • ^{tt3}$: Number of random triplets per point (default = 5).
  • ^{tt4}$: Learning rate (default = 1000.0).
  • ^{tt5}$: Number of iterations (default = 400).

其他参数包括:

  • ^{tt6}$: Adjust weights for extreme outliers using a log-transformation (default = True).
  • ^{tt7}$: Use only ANNOY for nearest-neighbor search (default = True).
  • ^{tt8}$: Optimization method {‘sd’ (steepest descent), ‘momentum’ (GD with momentum), ‘dbd’ (delta-bar-delta, default)}.
  • ^{tt9}$: Print the progress report (default = True).
  • ^{tt10}$: Store the intermediate results and return the results in a tensor (default = False).

调整这些参数的示例:

importtrimapfromsklearn.datasetsimportload_digitsdigits=load_digits()embedding=trimap.TRIMAP(n_inliers=10,n_outliers=5,n_random=5).fit_transform(digits.data)

默认情况下,使用ANNOY执行最近邻计算。为了获得更精确的结果,可以使用sklearn.neighbors.NearestNeighbors计算每个点的前5个最近邻,并且可以将结果与使用烦恼计算的结果相结合。但是,这可能会显著增加运行时。fast_trimap (default = True)参数控制此属性。要获得更准确的结果,请设置fast_trimap = False

示例

以下是关于真实数据集的一些结果。有关更多结果,请参阅 我们的报纸。

mnist手写数字(n=70000,d=784

TriMap embedding of the MNIST dataset

时尚mnist(n=70000,d=784

TriMap embedding of the Fashion MNIST dataset

白板鼠(n=53760,d=23433

TriMap embedding of the Tabula Muris Mouse Tissues dataset

电视新闻(n=129685,d=50

TriMap embedding of the TV News dataset

380k+歌词(n=266557,d=256

TriMap embedding of the 380k+ Lyrics dataset

安装

要求:

  • 努比
  • SCIKIT学习
  • numba
  • 烦恼

安装选项

如果已安装所有要求,则可以使用pip:

sudo pip install trimap

请定期检查更新并确保使用的是最新版本。如果已安装trimap并希望升级到新版本,则可以使用以下命令:

sudo pip install --upgrade --force-reinstall trimap

另一种方法是使用anaconda和pip手动安装依赖项。 要安装装饰件:

conda install numpy
conda install scikit-learn
conda install numba
conda install annoy
pip install trimap

对于手动安装,请获取此软件包:

wget https://github.com/eamid/trimap/archive/master.zip
unzip master.zip
rm master.zip
cd trimap-master

安装要求

sudo pip install -r requirements.txt

conda install scikit-learn numba annoy

安装软件包

python setup.py install

支持和贡献

这项执行工作仍在进行中。任何评论/建议/错误报告 非常感谢。请随时联系我:eamid@ucsc.edu。如果你愿意 想贡献代码,请fork the project 给我一个请求。

引文

如果您使用trimap,请在arxiv上引用我们当前的参考资料:

@article{2018TRIMAP,
     author = {{Amid}, E. and {Warmuth}, M. K.},
     title = "{A more globally accurate dimensionality reduction method using triplets}",
     journal = {ArXiv e-prints},
     archivePrefix = "arXiv",
     eprint = {1803.00854},
     year = 2018,
     month = march,
}

许可证

请查看许可证文件。

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

推荐PyPI第三方库


热门话题
java Play Framework 2.1中的简单搜索?   java:Springbeans的真正工作原理   java不能从字符串中提取数字   不同管道中的java共享ExecutionHandler   在Java中,如何为扩展comparator的类实现多个comparator方法?   通用混沌Java   java问题:从自定义类获取要添加到驱动程序类的形状   java如何利用HikariCP和Hibernate?   eclipse如何执行Java应用程序?   用户界面Java Swing:如何将JLabel的文本绑定到JTable选定行中的列?   java替换JPanel元素而不添加到面板的末尾?   java Sets根据action命令在按钮组中选择了特定的jradiobutton   在java中如何将从控制台添加的字符串中的元素添加到列表中   处理未在浏览器上运行的Java签名小程序   java如何在我的安卓应用程序中单击任意按钮时禁用音频音调?   编码如何在Java中将十六进制转换为utf8编码的字符串   java JSF Spring安全集成问题   java如何更正Oracle for Windows中的字符?   java Spark结构化流媒体:当前批次落后   java Hibernate根据最匹配的条件排序结果