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

基于KMeans聚类分组构建随机森林模型的方法及目标变量疑问

实现方法与问题确认

关于目标变量CprTarget的确认

必须将原数据中的CprTarget加入训练集和测试集。因为随机森林是监督学习算法,训练过程需要输入特征(比如PC1、PC2、聚类标签)和对应的目标标签(CprTarget)来学习两者的映射关系,没有目标变量的话无法完成监督式模型训练。

基于KMeans聚类结果的随机森林实现方案

这里提供两种常用的实现思路,根据你的业务场景选择:

思路一:按聚类簇分别训练独立的随机森林模型

适合不同聚类簇的特征与目标变量之间的逻辑差异较大的场景,每个簇单独建模更精准。
步骤如下:

  1. 把KMeans得到的聚类标签(命名为cluster_label)合并到包含PC1、PC2、SRCDate、CprTarget的DataFrame中;
  2. 基于已拆分好的训练集(train_set)和测试集(test_set),对每个聚类簇循环训练模型:
from sklearn.ensemble import RandomForestClassifier  # 分类任务用这个,回归任务换RandomForestRegressor
import pandas as pd

# 假设train_set和test_set已包含PC1、PC2、CprTarget、cluster_label字段
cluster_models = {}
# 获取所有聚类ID
cluster_ids = train_set['cluster_label'].unique()

for cluster_id in cluster_ids:
    # 筛选当前簇的训练数据
    train_cluster = train_set[train_set['cluster_label'] == cluster_id]
    # 分离特征和目标变量
    X_train = train_cluster[['PC1', 'PC2']]
    y_train = train_cluster['CprTarget']
    # 初始化并训练随机森林
    rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
    rf_model.fit(X_train, y_train)
    # 保存对应簇的模型
    cluster_models[cluster_id] = rf_model

# 测试阶段:根据每条数据的聚类标签调用对应模型预测
test_set['prediction'] = test_set.apply(
    lambda row: cluster_models[row['cluster_label']].predict([[row['PC1'], row['PC2']]])[0],
    axis=1
)

思路二:将聚类标签作为额外特征,训练全局随机森林模型

适合簇间差异可以通过模型自动捕捉的场景,只需维护一个模型,实现更简单。
步骤如下:

  1. 同样将cluster_label合并到特征DataFrame中;
  2. 把cluster_label和PC1、PC2一起作为输入特征,训练统一的随机森林:
from sklearn.ensemble import RandomForestClassifier

# 分离训练集的特征与目标
X_train = train_set[['PC1', 'PC2', 'cluster_label']]
y_train = train_set['CprTarget']
# 分离测试集的特征与目标
X_test = test_set[['PC1', 'PC2', 'cluster_label']]
y_test = test_set['CprTarget']

# 训练模型(随机森林可直接处理类别型特征cluster_label,无需额外编码)
rf_model = RandomForestClassifier(n_estimators=100, random_state=42)
rf_model.fit(X_train, y_train)

# 生成预测结果
y_pred = rf_model.predict(X_test)

额外注意事项

  • 如果CprTarget是连续数值(回归任务),请使用RandomForestRegressor替代RandomForestClassifier;
  • 训练前检查并处理数据中的缺失值,避免影响模型训练;
  • 可以通过网格搜索(GridSearchCV)或随机搜索(RandomizedSearchCV)对随机森林的超参数(如n_estimators、max_depth等)进行调优,提升模型性能;
  • 确保按日期拆分训练/测试集时,训练集的日期全部早于测试集,避免数据泄露问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 15:12:51