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')- Windows文件路径丢失了反斜杠分隔符,和其余4个文件的路径格式不统一,会导致系统找不到目标文件
- 编码参数名拼写错误,平白多出
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,根本无法执行到聚类步骤:
修复时给循环内的所有代码统一加4空格缩进即可:# 错误写法 for i in range(1,7): kmeans = KMeans(i) kmeans.fit(data) wcss_iter = kmeans.inertia_ wcss.append(wcss_iter)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
相关产品推荐
相关产品推荐

