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

Python做KMeans聚类时触发float64相关ValueError该如何修改

报错解决方案

你遇到的报错是因为输入KMeans模型的数据集不符合要求,存在缺失值、无穷值,或非数值类型数据,无法转换为float64格式参与计算,可按以下步骤修改代码:

  • 首先确认你用于聚类的列是数值类型,不要将fuelType这类字符串分类列传入模型,优先按列名选取数据避免索引选取出错
  • 对选中的数值列做缺失值、异常值清洗,删除或填充无效数据
  • 修正绘图逻辑中不存在的列引用问题,避免二次触发报错

修改后的完整代码如下:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from sklearn.cluster import KMeans

# 读取数据集
dataset = pd.read_csv('autos1.csv', encoding= 'unicode_escape')

# 按列名选取用于聚类的数值列,避免索引起始位置选错
x = dataset[['price', 'yearOfRegistration']]

# 清洗数据:替换无穷值为NaN,删除所有包含空值的行
x = x.replace([np.inf, -np.inf], np.nan).dropna()

# 初始化KMeans并训练
km = KMeans(n_clusters = 2, random_state = 21)
km.fit(x)
centers = km.cluster_centers_
print(centers)

# 生成聚类结果,不需要重复fit,直接调用predict即可
clusters = x.copy()
clusters['cluster_id'] = km.predict(x)

# 第一张图修正x轴标签与输入数据匹配
plt.xlabel('fuelType')
plt.ylabel('yearOfRegistration')
plt.scatter(dataset['fuelType'], dataset['yearOfRegistration'], c='black')
plt.show()

# 第二张聚类结果图
plt.scatter(centers[:,0], centers[:,1], c = 'black', s = 100 , alpha = 0.9)
plt.scatter(clusters['price'], clusters['yearOfRegistration'], c=clusters['cluster_id'], cmap='rainbow')
plt.xlabel('price')
plt.ylabel('yearOfRegistration')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:15:03