scikit-learn随机森林的输入

时间:2014-01-27 09:15:36

标签: python scikit-learn

我试图预测网球比赛的输出 - 这只是一个有趣的侧面项目。我使用随机森林回归器来做到这一点。现在,其中一个功能是在特定比赛之前对球员进行排名。对于很多比赛我没有排名(我只有前200名)。问题是 - 最好放一个不是整数的值,例如字符串"NoRank",还是放一个超出1-200范围的整数?考虑到学习算法,我倾向于设置值201,但我想听听你对此的看法。 谢谢!

2 个答案:

答案 0 :(得分:2)

scikit-learn随机森林不幸地不支持缺失值。如果你认为没有排名的球员可能表现得最差,那么球员平均排名为200,那么输入201排名是有意义的。

注意:所有scikit-learn模型都需要均匀的数字输入功能,而不是字符串标签或其他python对象。如果您有字符串标签作为功能,则首先需要找到正确的feature extraction strategy,具体取决于字符串功能的含义(例如,分类变量标识符或要作为一个单词包提取的自由文本)。

答案 1 :(得分:0)

在将201(或任何其他值)添加到未排序的值时,我会很小心。 RF对数据进行归一化(Do I need to normalize (or scale) data for randomForest (R package)?),这意味着它可以将200与201分组,也可以不分组。您基本上是在伪造您没有的数据。

我将添加另一列:“ haverank” 并使用0/1。 0将代表没有排名的人 1为有等级的人。

如果名称听起来更好,则将其称为“ highrank”。 您还可以添加另一个名为“ veryhighrank”的列 并将值1分配给等级1至50之间的所有玩家。等等...