1.原理
//TODO
2.Python Package Scikit-Learn API
2.1输入
数据的特征分为两类,一类是连续型,比如:体重,一种是分类型,比如性别。
在scikit-learn中的Glossary of Common Terms and API Elements有这么一段话:
大意是在利用基于树的模型训练时推荐使用数值编码而不是one-hot编码。
详情:https://scikit-learn.org/stable/glossary.html#glossary
2.2输出
在这里只说两点:multi:softmax和multi:softprob,官方文档是这么说的:
在这里略坑,建立model时无论填哪一个,在model fit之后,打印模型时参数却都是multi:softprob,但是predict的结果也和上述解释也不一致,结果是multi:softmax的结果,只有预测的标签,没有概率分布。
官方代码如下:可见num_class也是不用设置的,objective被强制替换成了multi:softprob.最后若想输出概率分布请用predict_proba函数来预测.
self.classes_ = np.unique(y) self.n_classes_ = len(self.classes_) if self.n_classes_ > 2: # Switch to using a multiclass objective in the underlying XGB instance xgb_options["objective"] = "multi:softprob" xgb_options['num_class'] = self.n_classes_
3.DEMO
//TODO