均值(可能性)编码

我有一个名为“data”的数据集,其中包含分类值,我希望使用均值(可能性/目标)编码而不是标签编码来对其进行编码。

我的数据集看起来像这样:

data.head()ID  X0  X1  X10 X100    X101    X102    X103    X104    X105    ... X90 X91 X92 X93 X94 X95 X96 X97 X98 X990   0   k   v   0   0   0   0   0   0   0   ... 0   0   0   0   0   0   0   0   0   01   6   k   t   0   1   1   0   0   0   0   ... 0   0   0   0   0   0   1   0   1   02   7   az  w   0   0   1   0   0   0   0   ... 0   0   0   0   0   0   1   0   1   03   9   az  t   0   0   1   0   0   0   0   ... 0   0   0   0   0   0   1   0   1   04   13  az  v   0   0   1   0   0   0   0   ... 0   0   0   0   0   0   1   0   1   05 rows × 377 columns

我尝试过:

# 选择分类特征cat_features = data.dtypes == 'object'# 定义函数def mean_encoding(df, cols, target):    for c in cols:        means = df.groupby(c)[target].mean()        df[c].map(means)    return df# 编码data = mean_encoding(data, cat_features, target)

这会引发以下错误:

KeyError: False

我也尝试过:

# 定义函数def mean_encoding(df, target):    for c in df.columns:        if df[c].dtype == 'object':            means = df.groupby(c)[target].mean()            df[c].map(means)    return df

这会引发以下错误:

KeyError: ‘Columns not found: 87.68, 87.43, 94.38, 72.11, 73.7, 74.0, 74.28, 76.26,…

我已经将训练集和测试集合并成一个名为“data”的数据集,并在数据集中删除目标变量之前保存了训练集的目标变量,如下所示:

target = train.ysplit = len(train)data = pd.concat(objs=[train, test])data = data.drop('y', axis=1)data.shape

希望能得到帮助。谢谢。


回答:

我认为您没有正确选择分类列。通过执行cat_features = data.dtypes == 'object',您并没有得到列名,而是得到一个布尔值,显示列类型是否为分类类型。因此会导致KeyError: False

您可以这样选择分类列:

mycolumns = data.columnsnumerical_columns = data._get_numeric_data().columnscat_features= list(set(mycolumns) - set(numerical_columns))

或者

cat_features = df.select_dtypes(['object']).columns

其余代码保持不变

  # 定义函数  def mean_encoding(df, cols, target):     for c in cols:        means = df.groupby(c)[target].mean()        df[c].map(means)    return df# 编码data = mean_encoding(data, cat_features, target)

Related Posts

在使用k近邻算法时,有没有办法获取被使用的“邻居”?

我想找到一种方法来确定在我的knn算法中实际使用了哪些…

Theano在Google Colab上无法启用GPU支持

我在尝试使用Theano库训练一个模型。由于我的电脑内…

准确性评分似乎有误

这里是代码: from sklearn.metrics…

Keras Functional API: “错误检查输入时:期望input_1具有4个维度,但得到形状为(X, Y)的数组”

我在尝试使用Keras的fit_generator来训…

如何使用sklearn.datasets.make_classification在指定范围内生成合成数据?

我想为分类问题创建合成数据。我使用了sklearn.d…

如何处理预测时不在训练集中的标签

已关闭。 此问题与编程或软件开发无关。目前不接受回答。…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注