我正在尝试通过各种功能来预测客户保留率。
其中之一是org_id,代表客户所属的组织。当前它是一个浮点数列,数字范围为0.0到416.0,以及417个唯一值。
我想知道在将此列提供给scikit学习RandomForestClassifier之前最好的预处理方式是什么。通常,我会对类别特征进行一次热编码,但是这里的值太多,因此会从根本上增加我的数据维数。我有12,000行数据,因此我可能还可以,并且只有大约10个其他功能。
替代方法是为列保留浮点值,将浮点值转换为int值,或将浮点数转换为熊猫的分类对象。
任何提示都非常感谢。
答案 0 :(得分:2)
org_id
似乎不是为分类带来任何信息的功能,您应该删除该值,而不要将其传递到分类器中。
在分类器中,您只希望传递与您要执行的任务具有区别性的功能:此处可能影响保留或搅动的元素。公司ID在这种情况下不会带来任何有价值的信息,因此不应使用。
根据OP的评论进行编辑:
在进一步介绍之前,我们先说点什么:关于样本数量(12000)和模型的相对简单性,人们可以多次尝试轻松地尝试不同的功能配置。
因此,作为基准,我将按照我之前说的做,将所有功能放在一起。这是您的基准分数,也就是您可以比较其他功能组合的分数。
我认为尝试对org_id
进行热编码没有任何花费,无论您观察到哪种结果,都将加深您的经验和对随机森林在这种情况下的行为的了解。由于您只有10个以上的功能,因此布尔功能is_org_id_1
,is_org_id_2
,...将非常占优势,并且分类结果可能受这些功能的影响很大。
然后,我将尝试通过查找可以“描述”这400多个组织的新功能来减少布尔功能的数量。例如,如果它们只是美国组织,其状态约为50个特征,或者其用户数(将是一个数字特征),存在的年限(另一个单个数字特征)。让我们注意,这些仅是示例,用于说明创建新功能的过程,只有知道完整问题的人才能以明智的方式设计这些功能。
另外,我会发现有趣的是,一旦您解决了问题,您就回到这里,为我的问题写另一个答案,因为我相信,很多人在处理真实数据时都会遇到这样的问题:)