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

KMeans聚类稳定性测试报错:样本数量不一致问题排查

错误原因排查与修复方案

核心错误点

  • 标签样本数不匹配:迭代代码中,你没有保存新周期数据的预测标签,反而错误调用model_init.labels_获取初始训练数据的标签(28876个样本),而新周期数据仅2050个样本,两者长度不一致,触发adjusted_rand_score的样本数校验错误。
  • 标准化逻辑错误:新周期数据使用scaler_init.fit_transform()会重新拟合标准化器,导致数据尺度与初始模型训练时不一致,预测结果失去参考价值。
  • ARI计算逻辑偏差:ARI用于衡量同一组样本的两次聚类结果一致性,当前代码直接对比不同批次样本的标签,结果无业务意义,必须对齐同一客户后再计算。

修复后的完整迭代代码

ari_scores = []
total_periods = 25
# 提前构建初始客户-标签映射(假设数据含customer_id字段)
initial_customer_labels = pd.DataFrame({
    'customer_id': initial_period_data['customer_id'],
    'initial_label': model_init_labels
}).drop_duplicates(subset='customer_id')

for p in range(2, total_periods + 1, 2):
    current_period_end = initial_period_end + pd.DateOffset(weeks=p)
    data_period = data_init[(data_init['order_purchase_timestamp'] >= initial_period_end) & (data_init['order_purchase_timestamp'] < current_period_end)]
    # 修正:保存处理后的数据
    data_period_group = process_data(data_period)
    data_period_num = data_period_group.select_dtypes(include="number").fillna(0)
    
    # 修正:使用初始拟合的scaler做标准化,不重新拟合
    data_period_scaled = scaler_init.transform(data_period_num)
    
    # 修正:获取新周期数据的预测标签
    p_labels = model_init.predict(data_period_scaled)
    
    # 修正:对齐同一客户,仅保留两个周期都存在的样本
    period_customer_labels = pd.DataFrame({
        'customer_id': data_period_group['customer_id'],
        'period_label': p_labels
    }).drop_duplicates(subset='customer_id')
    merged_labels = pd.merge(initial_customer_labels, period_customer_labels, on='customer_id')
    
    # 用对齐后的标签计算ARI
    ari_p = adjusted_rand_score(merged_labels['initial_label'], merged_labels['period_label'])
    ari_scores.append([p, ari_p])

额外注意事项

  • 初始数据处理代码中process_data(initial_period_data)未赋值,需改为initial_period_data = process_data(initial_period_data),否则后续特征处理不会生效。
  • 若process_data函数包含客户聚合逻辑(如按客户ID汇总订单特征),需确保初始数据和新周期数据的聚合规则完全一致,避免特征维度不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 17:33:08