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

Python多组数据K-means聚类报AttributeError问题求助

代码问题排查与修复

你遇到的AttributeError: 'NoneType' object has no attribute 'split'报错由代码中多处语法、参数错误共同导致,具体问题和修复方案如下:

  • 直接触发报错的问题:Cap_120文件读取代码存在两处低级错误
    原错误代码段:
    Cap_120=pd.read_csv(r"C:UsersUserDocumentsCapacitorEXPTemp_Cap_2200data1803_2200uf_120deg.csv",cap_120encoding='unicode_escape')
    
    错误点:
    1. Windows文件路径丢失了反斜杠分隔符,和其余4个文件的路径格式不统一,会导致系统找不到目标文件
    2. 编码参数名拼写错误,平白多出cap_120前缀,read_csv函数无法识别该非法参数,内部解析流程异常返回None值,后续调用split方法处理参数时直接抛出属性错误
      修复后代码:
    Cap_120=pd.read_csv(r"C:\Users\User\Documents\CapacitorEXP\Temp_Cap_2200\data1803_2200uf_120deg.csv",encoding='unicode_escape')
    
  • 语法错误:for循环代码未按Python规则缩进
    原肘部法计算的循环代码没有缩进,解释器会直接抛出IndentationError,根本无法执行到聚类步骤:
    # 错误写法
    for i in range(1,7):
    kmeans = KMeans(i)
    kmeans.fit(data)
    wcss_iter = kmeans.inertia_
    wcss.append(wcss_iter)
    
    修复时给循环内的所有代码统一加4空格缩进即可:
    for i in range(1,7):
        kmeans = KMeans(i)
        kmeans.fit(data)
        wcss_iter = kmeans.inertia_
        wcss.append(wcss_iter)
    
  • 逻辑缺失:拼接数据后未做聚类前置校验
    5份不同来源的实验数据拼接后,很可能存在空值、非数值类型字段,这类数据直接传入KMeans会触发类型报错。建议在数据拼接完成后增加预处理步骤:
    data = pd.concat(df)
    # 仅保留数值类型列、删除含空值的行
    data = data.select_dtypes(include=[np.number]).dropna()
    
  • 细节问题:肘部法绘图代码末尾缺少plt.show(),绘制的图像无法正常弹出显示,在plt.ylabel('WCSS')后补充该行代码即可。

按以上方案修改完成后,重新运行代码即可正常执行KMeans聚类全流程,不会再触发你遇到的属性报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 22:09:36