我是机器学习的新手,我正在使用xgboost
中的caret
包对我的数据运行分类算法R
。
然而,我对于将某些分类变量转换为数值变量以进行机器学习感到困惑。我已经浏览了网页,但是我找不到一个特定的规则,如果它存在的话。
以下网址(xgboost)中的xgboost
小插图提到“Xgboost仅管理数字向量”。这是否意味着我的所有功能(变量)只需要包含数值?但是,我已经看到一些使用xgboost
的教程,其中变量是分类变量。
对此主题的任何帮助都将受到高度赞赏。
答案 0 :(得分:0)
统计/机器学习中处理分类功能的主要方式是通过一种称为one-hot encoding的机制。
获取以下数据,例如:
outcome animal
1 cat
1 dog
0 dog
1 cat
假设您想根据给定病例的动物类型(观察/行/受试者等)预测结果(无论是什么)。这样做的方法是以一种热门方式编码animal
,如下所示:
outcome is_dog is_cat
1 0 1
1 1 0
0 1 0
1 0 1
基数 k 的动物栏已被编码到 k 新列中,表示在给定{{1}的值的情况下是否存在特定类别/属性为那一行。
从那里,你可以根据(现在不同编码的)动物专栏使用你想要预测结果的任何模型。但请确保将一只动物(一组)作为对照组留出模型。在这种情况下,您可能适合逻辑回归模型animal
并将outcome ~ is_dog
的斜率系数解释为与猫相比,狗的1个结果的可能性增加或减少< /强>