【问题标题】:Python strategies for handing categorical variables处理分类变量的 Python 策略
【发布时间】:2020-09-06 18:35:37
【问题描述】:

我目前正在处理binary classification 任务,其中的类是imbalanced

我有以下不同级别的categorical属性:

time_slot: 8 levels
product_type: 3 levels
state: 40 levels
due_day: 6 levels (Mon - Sat)
lead_time: numerical in days (0-100)

现在,我打算从三个算法开始:

Logistic Regression, Decision Tree and Random Forest

对于分类变量最好的编码策略,我感到很困惑?

LabelEncoder, OneHot, BinaryEncoding?

另外,我正在考虑为lead_time 创建垃圾箱

任何指针/提示都会很有用。

【问题讨论】:

  • 看看一个热编码 (OHE) 将您的分类数据转换为您将能够提供给您的模型的特征

标签: python python-3.x pandas scikit-learn classification


【解决方案1】:

我认为您的问题没有简明的答案,尤其是因为您的数据集的具体情况未知。尝试不同的方法并查看哪种方法在特定情况下效果最好通常是一个好主意。使用scikit-learn,您可能想看看category_encoders 库。

一般来说,所有策略都有其优点和烦恼。通常不鼓励对分类特征进行标签编码,因为它可能会人为地引入顺序(尤其是对于计算权重的算法,如Logistic Regression)。另一方面,One-Hot 编码通常会增加维度,因为所有类别都转换为二进制特征。在您的情况下,可能不是那么引人注目,但如果您有几个具有高基数的分类特征,那绝对是个坏主意。

最后,您还可以查看一些可以开箱即用地处理分类特征的算法,例如 CatBoostLightGBM

“试一试”可能听起来不令人满意,但我认为这是一种可靠的方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 2018-10-22
    • 2018-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-11
    • 2016-04-22
    相关资源
    最近更新 更多