You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义metric触发ValueError: setting an array element with a sequence问题求助

错误原因分析:"setting an array element with a sequence"

核心原因

你的自定义距离函数dum_cusmet不符合Scikit-learn的要求:

  • Scikit-learn的NearestNeighbors类要求自定义距离函数返回单个数值型的距离值(比如float或int),但你的函数返回的是一个元组(x, x2)。
  • 当计算样本间距离时,程序试图把这个元组赋值给距离矩阵的单个元素,而数组元素只能存储单一数值,无法容纳序列(元组属于序列类型),因此触发ValueError: setting an array element with a sequence。
  • 错误栈里的TypeError: float() argument must be a string or a real number, not 'tuple'是前置问题:程序尝试将你的函数返回的元组转换为float类型(用于构建距离矩阵),但转换失败,进而引发了最终的ValueError。

修正示例

如果需要自定义距离函数,需修改为返回单一数值,比如计算欧氏距离:

def dum_cusmet(x, x2):
    return np.linalg.norm(x - x2)  # 返回两个样本间的欧氏距离数值

替换后,radius_neighbors方法就能正常生成距离矩阵,不会再触发序列赋值错误。

内容的提问来源于stack exchange,提问作者Fia Shofia Zahra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.02 03:13:09