如何在不删除ID列的前提下让LGBMClassifier忽略该列?
解决方法
核心思路:训练阶段排除id列作为模型输入特征,测试阶段单独保留id列,仅用其余有效特征执行预测,最后将预测结果与id关联输出。
拆分训练数据
从训练集特征中直接移除id和目标列tgt,确保模型只学习业务相关特征:x_train = train.drop(columns=['id', 'tgt'], axis=1) y_train = train['tgt']处理测试数据
单独提取测试集的id列留存,再构建不含id的测试特征集:# 保留id列用于后续关联预测结果 test_ids = test_new['id'] x_test = test_new.drop(columns=['id', 'tgt'], axis=1) y_test = test_new['tgt']模型训练与结果关联
完成模型训练后,用测试特征执行预测,最后合并id与预测结果:rand = LGBMClassifier(seed=seed, learning_rate=0.1, num_leaves=12, n_estimators=700) train_data = lgb.Dataset(x_train, label=y_train) rand.fit(train_data) # 生成预测结果 y_pred = rand.predict(x_test) # 合并id与预测结果,得到带标识的输出 predict_result = pd.DataFrame({'id': test_ids, 'prediction': y_pred})
内容的提问来源于stack exchange,提问作者zeman
相关产品推荐
相关产品推荐

