一致流形逼近与投影

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如何在Android上的可访问文件夹中创建文件?(非根)   tomcat Unix脚本未使用Process Runtime在Java中运行   模拟器中的java Android AudioTrack速度异常   java是否创建具有特定@ConditionalOnProperty的注释?   java如何使用json数据从gridview中的URL加载图像?(类别和子类别)   ConcurrentHashMap的java锁定值对象   如何在具有额外属性的Java枚举上执行Javadoc?   java如何修复SocketException连接重置问题?   无附加表的java JPA实体继承   java Android应用程序在启动屏幕后崩溃   java如何将Arraylist保存到文件?   java restTemplate从restfull Web服务获取文件数组   java活动带布局隐藏导航栏   socket未接收任何内容的java BufferedReader