HDBSCAN:ValueError:numpy.ndarray 大小已更改,可能表示二进制不兼容。预期来自 C 标头的 88,从 PyObject 得到 80
Posted
技术标签:
【中文标题】HDBSCAN:ValueError:numpy.ndarray 大小已更改,可能表示二进制不兼容。预期来自 C 标头的 88,从 PyObject 得到 80【英文标题】:HDBSCAN: ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject 【发布时间】:2021-10-30 05:26:44 【问题描述】:我尝试初始化 HDBSCAN 以在 JupytherLab 中进行聚类。我使用 Python 3.7.6..
import numpy as np
import pandas as pd
from sklearn.datasets import load_digits
from sklearn.manifold import TSNE
import hdbscan
总是出现相同的错误(见标题),直到现在我不知道它究竟是从哪里来的。
我查看了几个帖子后的解决方案,但直到现在还没有解决方案对我有帮助。
例如:
-
卸载并安装 numpy。
已安装 numpy >= 1.20.0
试过像 pip install package --no-cache-dir --no-binary :all:这样的行
试过以下包版本组合:hdbscan=0.8.19, matplotlib=3.2.2, numpy=1.15.4, pandas=0.23.4, scikit-learn=0.20.1, scipy=1.1.0, tensorflow=1.13 .1.
我也尝试过安装 tensorboard 之类的软件包,但没有帮助。一切都是通过终端和 pip 安装的。
我开始想,问题可能更深——但也许我忽略了一些重要的事情。
有人可以帮我找出错误吗?
最好的问候
菲利普
【问题讨论】:
【参考方案1】:升级 numpy 库解决了这个问题。 我的numpy版本是1.22.0,sklearn版本是0.24.1。
你也应该看看这里:ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review @Flair 这是有道理的。我会更新我的答案。谢谢【参考方案2】:我猜你可能已经看到了很长的HDBSCAN GitHub issue 似乎仍然没有明确的解决方案。不幸的是,它似乎以奇怪的方式影响不同的系统,并且有大量可能的解决方案和对其他人有用的东西(就我个人而言,上周我遇到类似问题时,重新安装 numpy 对我有用。)
您可以尝试这么多事情但仍然无法正常工作,这一事实似乎令人怀疑。也许有关您的 Python 安装或您尝试它们的方式的其他内容会影响解决方案?例如,JupyterLab 是否肯定使用与您尝试这些解决方案相同的 Python 环境? (您可以通过卸载 HDBSCAN 并查看错误是否更改为“找不到包”来测试这一点。)
除了 GitHub 问题中的许多解决方案(听起来您已经尝试过),我真的认为除了重新安装 Python 之外,您没有其他可以尝试的方法。 NumPy 1.20 和对 C API 的更改导致了这个问题,可能是每次您尝试这些解决方案时都潜伏在您的安装中。
或者,您可以使用pyenv 或 anaconda 之类的工具创建一个新的 Python 安装/环境,这样它就不会破坏您现有的安装,并且您可以尝试在这个新安装中只安装最低限度(即只是 HDBSCAN。)
【讨论】:
请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。以上是关于HDBSCAN:ValueError:numpy.ndarray 大小已更改,可能表示二进制不兼容。预期来自 C 标头的 88,从 PyObject 得到 80的主要内容,如果未能解决你的问题,请参考以下文章
numpy 1.9.0:ValueError:概率总和不等于 1
ValueError:使用序列python,numpy设置数组元素[重复]
Numpy、Pandas 和 Sklearn 中的多维缩放拟合(ValueError)
无法导入 scikit-learn - ValueError:numpy.dtype 的大小错误,
“ValueError:无法将 NumPy 数组转换为张量(不支持的对象类型 numpy.ndarray)。在 TensorFlow CNN 中进行图像分类