基于Scikit-learn模型列表迭代预测:多目标模型构建技术问询
解决方案
没问题,我来帮你完成这段代码!你想要为每个目标变量单独训练一个Gradient Boosting回归模型,然后把训练好的模型统一存到ml_list里对吧?下面是完整的可运行实现:
import pandas as pd import numpy as np from sklearn.ensemble import GradientBoostingRegressor as GBM # 你的输入数据 df_learn = pd.DataFrame({'x1':[0,0,0,1,1,1], 'x2':[1,0,1,0,1,0], 'x3':[1,1,0,0,0,0]}) target_learn = pd.DataFrame({'y1':[1,0,0,2,2,0], 'y2':[1,1,1,0,1,0]}) target_colnames = ['y1', 'y2'] # 生成每个目标变量对应的模型列表 ml_list = [GBM().fit(df_learn, target_learn[col]) for col in target_colnames]
关键说明:
- 这里用了列表推导式来简化代码,遍历
target_colnames里的每个目标列名:- 对每个列
col,先实例化一个GBM模型(你可以在这里添加自定义参数,比如GBM(n_estimators=200, max_depth=3)来调整模型性能) - 立即用
fit()方法,传入预测变量df_learn和对应的目标列target_learn[col]完成训练
- 对每个列
- 最终
ml_list里的第一个元素是针对y1训练好的模型,第二个元素是针对y2训练好的模型,后续你可以直接用ml_list[0].predict(new_data)来做预测。
内容的提问来源于stack exchange,提问作者AshOfFire
相关产品推荐
相关产品推荐

