当前位置: 首页 > news >正文

umap结果不能复现

umap-learn结果就是固定不住哈,怎么都固定不住,不纠结了,希望后面有人能告诉我怎么解决这个问题

https://datarock.com.au/blog/whats-the-uncertainty-on-your-umap/

测试案例如下

import umap
import numpy as np 
import random 
print(umap.__version__)
print(np.__version__)# 你的代码,UMAP 或其他使用 Numba 的函数
random.seed(42)
np.random.seed(42)din= [[39.715797424316406, 5.328598499298096],[40.119140625, 6.10653018951416],[39.6290283203125, 6.134637832641602],[39.19687271118164, 5.85951566696167],[9.60939884185791, 9.586419105529785],[-6.015710353851318, -11.25406265258789],[9.012431144714355, 8.989534378051758],[9.283456802368164, 9.261088371276855],[-5.681527614593506, -10.919998168945312],[-5.479494571685791, -10.71765422821045]]a = umap.UMAP(random_state=42, n_neighbors=2,n_jobs=1, n_components=2).fit_transform(din).tolist()
b = umap.UMAP(random_state=42, n_neighbors=2,n_jobs=1, n_components=2).fit_transform(din).tolist()print(a)
print("*"*50)
print(b)assert a == b

在这里插入图片描述
注意这个结果不是固定的,有时重启内核,能得到一样的结果,但是大部分情况下是不一样的,但是画图来看的话,其实结构是差不大多

example2

import numpy as np
from umap import UMAPseed = np.random.RandomState(42)
x1 = seed.normal(0, 100, (1000, 50))
print(x1.shape)
embedding1 = UMAP(random_state=np.random.RandomState(42)).fit_transform(x1)
embedding2 = UMAP(random_state=np.random.RandomState(42)).fit_transform(x1)np.testing.assert_equal(embedding1, embedding2)
# AssertionError: 
# Arrays are not equal# (mismatch 100.0%)
#  x: array([ 0.295949,  2.511852, -0.848451, ...,  2.265384, -0.997055,
#         2.001218], dtype=float32)
#  y: array([ 0.685097, -2.574292,  2.627948, ..., -0.650334,  1.900896,
#         0.803105], dtype=float32)

我去人家的package里面看了,很奇怪的一个问题在于初始的embedding使用spetral参数来初始化,两次运行的结果有个很奇怪的区别,这个初始embeding的第二维是相反数的关系,所以最终的embedding事不同的,就很神奇

在这里插入图片描述
所以对于该测试数据集,如果使用init = "pca", 那么结果就是唯一的,神奇吧,但是换到别的数据集,使用init = "pca"的结果仍然不能保持稳定,就很bug.

在这里插入图片描述


http://www.mrgr.cn/news/46773.html

相关文章:

  • Unity 语音转文字 Vosk 离线库
  • Jmeter进行http接口并发测试
  • RabbitMQ的工作模式
  • 创建 WordPress 插件(第一部分):添加管理页面
  • web-app uniapp监测屏幕大小的变化对数组一行展示数据作相应处理
  • ansible 检查目录大小
  • linux基础-------堡垒机与跳板机
  • 【LeetCode】修炼之路-0004-Median of Two Sorted Arrays【python】
  • keil5| printf()函数 | 使用技巧 | STM32|UARST串口输出
  • 逼近理论及应用精解【11】
  • JS中的异步和Promise
  • 算法.图论-bfs及其拓展
  • k8s、prometheus、grafana数据采集和展示的链路流程
  • 「字符串」Z函数(扩展KMP|exKMP)/ LeetCode 2223(C++)
  • 基于SpringBoot问卷调查系统小程序【附源码】
  • Linux系统中,文件和文件夹的权限和所有权核心概念
  • 汇编语言_王爽_寄存器
  • Kubernetes 探秘:深入理解 StatefulSet 的拓扑状态
  • house_of_muney
  • 如何在两台服务器之间迁移 MySQL 数据库
  • 肺腺癌预后新指标:全切片图像中三级淋巴结构密度的自动化量化|文献精析·24-10-09
  • QCompleter Class
  • springboot简单案例
  • Windows10的MinGW安装和VS Code配置C/C++编译环境
  • 速盾:cdn经常换ip有利于SEO吗?
  • ECCV24高分论文:MVSplat稀疏视图下的高效的前馈三维重建模型