本文共 1013 字,大约阅读时间需要 3 分钟。
自定义的xgboost目标函数传入的第一个参数是预测值,第二个参数是真实值,这个顺序与gridSearchCV函数的scorning参数对应自定义目标函数正好相反,需要注意。
举几个xgboost中自定义目标函数:
def customedscore(preds, dtrain): label = dtrain.get_label() pred = [int(i>=0.5) for i in preds] confusion_matrixs = confusion_matrix(label, pred) recall =float(confusion_matrixs[0][0]) / float(confusion_matrixs[0][1]+confusion_matrixs[0][0]) precision = float(confusion_matrixs[0][0]) / float(confusion_matrixs[1][0]+confusion_matrixs[0][0]) F = 5*precision* recall/(2*precision+3*recall)*100 return 'FSCORE',float(F)
def xg_eval_mae(yhat, dtrain): y = dtrain.get_label() return 'mae', mean_absolute_error(np.exp(y), np.exp(yhat))
使用方法:在xgb.train和xgb.cv中将自定义的目标函数赋值给feval参数即可。
model = xgb.train(params, trainsetall, num_round,verbose_eval=10, feval = customedscore,maximize=False)
bst_cv1 = xgb.cv(xgb_params, dtrain, num_boost_round=50, nfold=3, seed=0, feval=xg_eval_mae, maximize=False, early_stopping_rounds=10)
转载地址:http://gxrti.baihongyu.com/