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

KMeans算法silhouette_score计算报错:'numpy.float64'对象不可调用

问题描述

我的RFM_scaleddf数据集的recency、frequency、monetary字段均为浮点型数值,运行以下KMeans聚类计算轮廓系数的代码时出现错误:

K_clusters = [2,3,4,5,6,7,8,9,10]
silhouette_scores = []

for K in K_clusters:
    initialised_clusters = KMeans(n_clusters = K, max_iter = 30, random_state = 10)
    initialised_clusters.fit(RFM_scaleddf)
    cluster_labels = initialised_clusters.labels_
    score = silhouette_score(RFM_scaleddf, cluster_labels, random_state = 10)
    silhouette_scores.append(score)

我原本推测是浮点型数据导致sklearn的silhouette_score无法正常工作,但实际报错信息如下:

---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)
Cell In [127], line 8
      6 initialised_clusters.fit(RFM_scaleddf)
      7 cluster_labels = initialised_clusters.labels_
----> 8 score = silhouette_score(RFM_scaleddf, cluster_labels, random_state = 10)
      9 silhouette_scores.append(score)

TypeError: 'numpy.float64' object is not callable
问题原因与解决办法

这个错误和浮点型数据无关,核心原因是你之前的代码里把silhouette_score这个名字赋值给了一个numpy浮点数变量,导致现在调用时,Python把它当成数值而非sklearn.metrics里的轮廓系数计算函数。

解决步骤:

  • 检查之前的代码,删除或重命名类似 silhouette_score = some_float_value 的赋值语句,避免函数名和变量名冲突。
  • 确保正确导入函数:
    from sklearn.metrics import silhouette_score
    
  • 如果不确定变量是否被覆盖,可以直接使用完整路径调用函数:
    score = sklearn.metrics.silhouette_score(RFM_scaleddf, cluster_labels, random_state = 10)
    

内容的提问来源于stack exchange,提问作者Rohit Guptha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:40:38