我正在使用randomforestrestregressor(来自python中伟大的Scikt学习库)进行我的项目, 它给了我很好的结果,但我认为我可以做得更好。 当我为“fit(…)”功能提供功能时, 将分类特征作为二进制特征更好吗?你知道吗
示例: 而不是:
===========
continent |
===========
1 |
===========
2 |
===========
3 |
===========
2 |
===========
制作类似于:
===========================
is_europe | is_asia | ...
===========================
1 | 0 |
===========================
0 | 1 |
===========================
因为它像树一样工作也许第二种选择更好, 或者对第一个选项也一样? 多谢了!你知道吗
强烈建议对分类变量进行二值化,并期望其性能优于不使用二值化器转换的模型。如果
scikit-learn
将continent = [1, 2, 3, 2]
视为数值(连续变量[定量]而不是分类[定性]),则会对该特征施加人工顺序约束。例如,假设continent=1
表示is_europe
,continent=2
表示is_asia
,continent=3
表示is_america
,那么当检查continent feature
与您的响应变量y
的关系时,它意味着is_asia
总是在is_europe
和is_america
之间,这不一定是真的,并且有机会降低模型的有效性。相反,使其成为虚拟变量没有这样的问题,scikit-learn
将分别处理每个二进制特性。你知道吗要在
scikit-learn
中对分类变量进行二值化,可以使用LabelBinarizer
。你知道吗如果您在
pandas
中处理数据,那么它的顶级函数pandas.get_dummies
也会有所帮助。你知道吗相关问题 更多 >
编程相关推荐