3

我正在研究目标列中有五个类的多类分类问题。我使用扩展平均编码(目标编码)为分类变量生成了特征。该方法基于使用每个值的目标变量的平均值对分类变量值进行编码。

这也会导致一些 NaN 值,例如“Transaction-Type_mean_target”列。

  1. 填充这些 NaN 值的最佳方法是什么?我应该用均值列填充这些。

  2. 由于目标/因变量“投诉状态”不存在,如何为我的测试数据生成平均编码?

输入数据 :

在此处输入图像描述

生成平均编码:

def add_feat_mean_encoding(col_list):
    """
        Expanding mean encoding 
    """
    for i in col_list:
        cumsum = train.groupby(i)['Complaint-Status'].cumsum() - train['Complaint-Status']
        cumcnt = train.groupby(i).cumcount()
        train[i+'_mean_target'] = cumsum/cumcnt

cat_var = ['Transaction-Type','Complaint-reason','Company-response','Consumer-disputes']
add_feat_mean_encoding(cat_var)
4

1 回答 1

1

如果你的特征是分类的,用均值估算没有意义,至少这意味着你为 Nans 创造了新的价值。那是你要的吗 ?

为了回答您的问题:

  1. 对于分类特征,您可以尝试不同的方法。您可以从SimpleImputerscikit 开始(请参阅此处),例如:
FILL_VALUE=100
imp_1 = SimpleImputer(missing_values=np.nan, strategy='most_frequent')
imp_2 = SimpleImputer(missing_values=np.nan, strategy='constant', fille_value=FILL_VALUE)
  1. 请提供有关您的测试集的信息:有哪些功能?如果您在测试集中没有该功能Complaint-Status,有两种方法:

    • 您可以Complaint-Status使用训练集(以及您希望预测的特征Complaint-Status,作为 Y)预测测试集的特征。尝试不同的分类器并选择提供最佳结果的分类器。
    • 您还可以将二维 Y 与实际的 Y + 一起使用Complaint-Status
于 2020-02-17T08:26:38.173 回答