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

KModes使用已有质心数组初始化的正确语法及报错解决咨询

KModes自定义质心初始化报错解决方案

错误根因

你第一次训练得到的cluster_centroids_输出数组的dtype为统一字符串类型<U11,所有列的元素都被转为了字符串格式,而你的原始输入数据中A1列为整数类型、A2列为字符串类型,类型不匹配导致模型解析质心时尝试将字符串'C'转为整数触发报错。

正确用法

  1. 先将质心数组的每列类型调整为和原始数据列类型一一对应
  2. 自定义初始质心时必须将n_init参数设为1,避免模型重复初始化覆盖你指定的质心
import numpy as np
import pandas as pd
from kmodes.kmodes import KModes

# 原始数据构造代码
att1 = [1,2,3,1,1,2,3,1]  
att2 = ['A','B','B','A','C','C','C','C']  
data1 = list(zip(att1, att2))  
test = pd.DataFrame(data=data1, columns =['A1','A2'])  

# 第一次训练获取初始质心
kmodeTest = KModes(n_clusters=3, init = 'random', n_init = 3, verbose=1).fit(test)  
cent = kmodeTest.cluster_centroids_  

# 调整质心类型,和原数据列类型一一对应
cent_adjusted = np.array([
    [int(row[0]), row[1]] 
    for row in cent
], dtype=object)

# 用调整后的质心初始化新模型
kmodeTest2 = KModes(n_clusters=3, init = cent_adjusted, n_init = 1, verbose=1).fit(test)

注意事项

  • 如果原始数据包含更多不同类型的列,需要逐列匹配原始数据的类型调整质心元素的格式,不要保持全字符串格式
  • 自定义质心传入时n_init必须为1,否则会出现参数冲突警告

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:30:01