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

运行Python聚类代码时出现NameError:'pairwise_distances_argmin'未定义

解决NameError: name 'pairwise_distances_argmin' is not defined的问题

错误原因拆解

  • 函数未导入:pairwise_distances_argmin是scikit-learn库中sklearn.metrics.pairwise模块下的工具函数,不属于Python全局内置函数,也不在你当前导入的模块范围内,直接调用会触发未定义错误。
  • 变量未定义:代码里的centres也没提前赋值,就算导入了函数,下一步还是会报该变量未定义的错误。

修正后的完整代码

import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns; sns.set()

from sklearn.datasets import make_blobs
# 新增:导入需要的函数
from sklearn.metrics.pairwise import pairwise_distances_argmin

X, y_true = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)
plt.scatter(X[:,0], X[:,1], s=50)

# 新增:初始化聚类中心(以随机选4个样本作为初始中心为例)
centres = X[np.random.choice(X.shape[0], 4, replace=False)]
# 现在可以正常调用函数
labels = pairwise_distances_argmin(X, centres)

关键修改说明

  1. 导入函数:通过from sklearn.metrics.pairwise import pairwise_distances_argmin把函数引入当前代码环境,Python才能识别并调用它。
  2. 初始化聚类中心:pairwise_distances_argmin需要两个输入参数——待聚类数据X和参考中心centres,这里用np.random.choice从样本里随机选4个点作为初始中心(和生成数据时的centers=4参数对应)。
  3. (可选)拼写统一:建议把centres改成美式拼写centers,和scikit-learn API的命名风格保持一致,减少后续代码混淆。

内容的提问来源于stack exchange,提问作者Mohammad Kashif

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:31:34