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

R语言报错‘Error: number of cluster centres must lie between 1 and nrow(x)’求解

问题排查与解决

你遇到的Error: number of cluster centres must lie between 1 and nrow(x)报错,核心是聚类数的合法范围与数据集样本量不匹配,结合你的代码,具体问题和修复方案如下:

  • 冗余代码清理:
    你代码里的no_1.data <- dist(no_1.scale)完全多余,这行把原本的特征数据框覆盖成了距离矩阵,但后续并未使用,直接删除即可,避免代码混乱。

  • 核心错误原因:
    fviz_nbclust默认会从k=2开始尝试聚类数,但如果你的no_1.scale数据集只有1条样本(即nrow(no_1.scale) == 1),kmeans要求聚类数k必须在1到1之间(因为样本数为1时无法分成多个簇),工具尝试的k≥2就会触发报错。

  • 修复步骤:

    1. 先确认样本量:在代码中添加print(nrow(no_1.scale)),查看数据有多少条记录。如果样本量≤1,聚类本身没有意义,需要补充更多数据。
    2. 若样本量≥2仍报错,手动限定聚类数范围:
      修改fviz_nbclust的调用,明确最大聚类数不超过样本数-1:
      fviz_nbclust(no_1.scale, kmeans, method = "wss", k.max = nrow(no_1.scale)-1)
      
    3. 额外检查:用str(no_1.scale)确认提取的no_1[2:3]是否为数值型列——如果是分类列,scale()处理后的数据无法用于kmeans聚类,需要更换特征列。

内容的提问来源于stack exchange,提问作者Akhtar Ruzain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:55:25