运行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)
关键修改说明
- 导入函数:通过
from sklearn.metrics.pairwise import pairwise_distances_argmin把函数引入当前代码环境,Python才能识别并调用它。 - 初始化聚类中心:
pairwise_distances_argmin需要两个输入参数——待聚类数据X和参考中心centres,这里用np.random.choice从样本里随机选4个点作为初始中心(和生成数据时的centers=4参数对应)。 - (可选)拼写统一:建议把
centres改成美式拼写centers,和scikit-learn API的命名风格保持一致,减少后续代码混淆。
内容的提问来源于stack exchange,提问作者Mohammad Kashif
相关产品推荐
相关产品推荐

