一致流形逼近与投影

umap-learn的Python项目详细描述


umap

一致流形逼近与投影(umap)是一种降维方法 与t-sne类似,也可用于可视化的技术 一般非线性降维。算法建立在 关于数据的假设

  1. 数据在黎曼流形上均匀分布;
  2. 黎曼度量是局部常数(或可近似为局部常数);
  3. 歧管在本地连接。
  4. < > >

    根据这些假设,可以用模糊 拓扑结构。嵌入是通过搜索低维 具有最接近的等价模糊性的数据的投影 拓扑结构。

    基础数学的细节可以在 我们关于arxiv的论文

    mcinnes,l,healy,j, umap:一致流形逼近与投影 对于尺寸缩减 ,arxiv e-prints 1802.034261018

    重要的是你不需要担心这个-你可以使用 立即进行尺寸缩减的umap一滴一滴地想象 取代scikit learn的t-sne。

    文档可通过readthedocs获得。

    如何使用umap

    umap包继承自sklearn类,因此可以方便地插入 与其他具有相同调用API的Sklearn Transformers相邻。

    importumapfromsklearn.datasetsimportload_digitsdigits=load_digits()embedding=umap.UMAP().fit_transform(digits.data)

    可以为umap类设置多个参数; 主要有以下几点:

    < Buff行情>
    • n_neighbors :这决定了在 流形结构的局部逼近。较大的值将导致 更多的全球结构在失去详细的本地 结构。一般来说,该参数通常应在5到 50,选择10到15是合理的违约。
    • 最小距离 :这控制允许压缩的嵌入程度 点在一起。较大的值确保嵌入点更均匀 分布的,而较小的值允许算法优化更多 准确地考虑到当地的结构。合理的价值观在 范围是0.001到0.5,0.1是合理的默认值。
    • 公制 :这决定了用于测量距离的公制的选择 在输入空间中。已经编码了各种各样的度量,并且用户 定义的函数只要被numba jitd,就可以传递。

    使用这些选项的示例:

    importumapfromsklearn.datasetsimportload_digitsdigits=load_digits()embedding=umap.UMAP(n_neighbors=5,min_dist=0.3,metric='correlation').fit_transform(digits.data)

    umap还支持对稀疏矩阵数据的拟合。更多细节 请参见umap文档。

    性能和示例

    umap在嵌入大型高维数据集方面非常有效。在 标准它在输入维和嵌入维上都有很好的伸缩性。 因此,对于诸如784维mnist数字集这样的问题 70000个数据样本,umap可以在大约2.5分钟内完成嵌入(如 与大多数t-sne实现大约45分钟相比)。尽管如此 运行时效率umap仍然可以生成高质量的嵌入。

    必需的mnist数字数据集,嵌入在2分钟和22分钟内 使用3.1 GHz Intel Core i7处理器的秒数(n_Neighbors=10,min_Dist=0 001):

    umap嵌入mnist数字umap embedding of";fashion mnist";

    UCI穿梭机数据集(8维43500个样本)嵌入在 相关性 2分39秒后的距离(请注意较长的时间 相关距离计算所需):

    umap嵌入uci穿梭机数据集

    安装

    umap依赖于scikit learn的依赖性。 例如 numpy scipy 。umap为 性能原因。最初的版本使用cython,但是改进后的代码 numba的清晰、简单和性能使它成为必要的过渡。

    要求:

    • 努比
    • scipy
    • SCIKIT学习
    • numba

    安装选项

    Conda安装,通过Conda Forge团队的出色工作:

    conda install -c conda-forge umap-learn
    

    Conda Forge软件包可用于Linux、OS X和Windows 64位。

    pypi安装,假设您有numba和sklearn及其所有需求 (numpy和scipy)已安装:

    pip install umap-learn
    

    如果pip在提取依赖项时遇到困难,那么我们建议安装 使用anaconda手动依赖项,然后从pip中提取umap:

    conda install numpy scipy
    conda install scikit-learn
    conda install numba
    pip install umap-learn
    

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

    wget https://github.com/lmcinnes/umap/archive/master.zip
    unzip master.zip
    rm master.zip
    cd umap-master
    

    安装要求

    sudo pip install -r requirements.txt
    

    conda install scikit-learn numba
    

    安装软件包

    python setup.py install
    

    引文

    如果你把这个软件用于你的工作,我们将不胜感激 引用《开放源码软件杂志》的论文:

    importumapfromsklearn.datasetsimportload_digitsdigits=load_digits()embedding=umap.UMAP().fit_transform(digits.data)
    0

    如果你想在你的工作中引用这个算法,arxiv论文是 当前参考:

    importumapfromsklearn.datasetsimportload_digitsdigits=load_digits()embedding=umap.UMAP().fit_transform(digits.data)
    1

    许可证

    umap软件包是3条款bsd许可的。

    我们想指出的是,umap软件包充分利用了 NumFocus赞助的项目,如果没有 他们对这些项目的支持,因此请考虑为numfocus做出贡献。 < / div>

    贡献

    我们非常欢迎您的贡献!有很多机会 对于潜在的项目,如果您愿意,请与我们联系 帮忙。从代码到笔记本到 示例和文档都同样有价值,所以请不要觉得 你不能贡献。请捐款 分叉项目 做些改变 提交请求。我们将尽最大努力解决 然后将代码合并到主分支中。

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

推荐PyPI第三方库


热门话题
java如何使用Ibatis在插入时返回ID(使用返回关键字)   java(org.hibernate.TransactionException)org。冬眠TransactionException:事务未成功启动   java小程序jwindow始终位于JNLP顶部   在Java中重新解析JSON对象?   java单击后将ListView数据移动到新屏幕   Mule ESB中的java WSA寻址特性   Java,对象编程:获取返回0值的方法   hibernate的Java通用问题,如何处理T get(K id)   java在使用超级CSV读取CSV时忽略引用   ssh使用Java远程运行命令   java如何向具体用户发送websocket消息?   在JAVA中,我可以在不指定的情况下使用条件运算符吗?