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

运行K-Means肘部法则代码时出现AttributeError错误求助

K-Means肘部法则代码报错:AttributeError: 'NoneType' object has no attribute 'split'

问题代码

from sklearn.cluster import KMeans
cs = []
for i in range(1, 11):
    kmeans = KMeans(n_clusters = i, init = 'k-means++', max_iter = 300, n_init = 10, random_state = 0)
    kmeans.fit(X)
    cs.append(kmeans.inertia_)
plt.plot(range(1, 11), cs)
plt.title('The Elbow Method')
plt.xlabel('Number of clusters')
plt.ylabel('CS')
plt.show()

报错信息

AttributeError: 'NoneType' object has no attribute 'split'

错误原因及解决方案

1. 核心原因:变量X未正确初始化(为None)

这是触发该错误的最常见场景——kmeans.fit(X)中的X是None,sklearn在内部处理数据时会调用字符串分割操作,从而抛出该异常。

解决办法:

  • 确保X是有效的二维数值型数组/矩阵,比如加载公开数据集测试:
    from sklearn.datasets import load_iris
    from sklearn.cluster import KMeans
    import matplotlib.pyplot as plt
    
    data = load_iris()
    X = data.data  # 此时X是(150,4)的二维数值数组
    
    cs = []
    for i in range(1, 11):
        kmeans = KMeans(n_clusters=i, init='k-means++', max_iter=300, n_init=10, random_state=0)
        kmeans.fit(X)
        cs.append(kmeans.inertia_)
    
    plt.plot(range(1, 11), cs)
    plt.title('The Elbow Method')
    plt.xlabel('Number of clusters')
    plt.ylabel('CS')
    plt.show()
    
  • 若使用自定义数据集,检查加载代码是否正确(文件路径、数据格式):
    import pandas as pd
    # 确保文件路径正确,且数据为数值型
    X = pd.read_csv('your_dataset.csv').values
    
  • 可以在fit前添加断言排查:
    assert X is not None, "X不能为None,请检查数据加载逻辑"
    

2. 次要可能原因:数据格式/缺失值问题

如果X不是None,但包含非数值型数据、大量缺失值,也可能在sklearn内部处理时触发类似错误。

解决办法:

  • 处理缺失值:
    import numpy as np
    # 将缺失值替换为0,或根据业务逻辑用均值/中位数填充
    X = np.nan_to_num(X)
    
  • 确保X所有特征都是数值型:
    import pandas as pd
    # 转换所有列为数值型,无法转换的设为NaN
    X = pd.read_csv('your_dataset.csv').apply(pd.to_numeric, errors='coerce').values
    

3. 额外检查:补全matplotlib导入

原代码中使用了plt但未导入,虽然这会触发NameError而非当前的AttributeError,但仍需在代码开头添加:

import matplotlib.pyplot as plt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 00:40:01