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

C-Means聚类算法中InitializeMembershipWeight函数数组定义失败及NameError问题

问题

在实现C-Means聚类算法时,调用initializeMembershipWeights函数后无法访问内部定义的数组,代码及报错信息如下:

#Membership Initialisation
def initializeMembershipWeights():

  weight = np.random.dirichlet(np.ones(k),n)
  weight_array = np.array(weight)
  return weight_array


print(weight_array)

报错信息:

NameError                                  
Traceback (most recent call last)
<ipython-input-114-70f058bffa58> in <module>
----> 1 print(weight_array)

NameError: name 'weight_array' is not defined

解决方案

  • 核心问题:变量作用域限制
    weight_array是函数内部的局部变量,仅在函数执行范围内有效,函数外部无法直接引用。必须通过调用函数并接收返回值的方式获取该数组。
  • 修正后的代码
import numpy as np

# 提前定义k(聚类数)和n(样本数),根据实际需求赋值
k = 3
n = 10

#Membership Initialisation
def initializeMembershipWeights():
  weight = np.random.dirichlet(np.ones(k), n)
  weight_array = np.array(weight)
  return weight_array

# 调用函数并保存返回结果
membership_weights = initializeMembershipWeights()
# 打印结果
print(membership_weights)
  • 额外提示
    代码中用到的k和n必须在函数外部提前定义,否则会触发新的NameError,提示这两个变量未定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:49:56