gpt4 book ai didi

python - 平均(似然)编码

转载 作者:行者123 更新时间:2023-11-30 09:03:53 27 4
gpt4 key购买 nike

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

我的数据集如下所示:

data.head()

ID X0 X1 X10 X100 X101 X102 X103 X104 X105 ... X90 X91 X92 X93 X94 X95 X96 X97 X98 X99
0 0 k v 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0 0 0
1 6 k t 0 1 1 0 0 0 0 ... 0 0 0 0 0 0 1 0 1 0
2 7 az w 0 0 1 0 0 0 0 ... 0 0 0 0 0 0 1 0 1 0
3 9 az t 0 0 1 0 0 0 0 ... 0 0 0 0 0 0 1 0 1 0
4 13 az v 0 0 1 0 0 0 0 ... 0 0 0 0 0 0 1 0 1 0
5 rows × 377 columns

我已经尝试过:

# Select categorical features
cat_features = data.dtypes == 'object'

# Define function
def mean_encoding(df, cols, target):

for c in cols:
means = df.groupby(c)[target].mean()
df[c].map(means)

return df

# Encode
data = mean_encoding(data, cat_features, target)

这会引发:

KeyError: False

我也尝试过:

# Define function
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,...

我已将训练和测试数据集连接到一个名为“数据”的数据集,并在将训练目标放入数据集之前将其保存为:

target = train.y
split = len(train)

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

如果有帮助,我们将不胜感激。谢谢。

最佳答案

我认为您没有正确选择分类列。通过执行cat_features = data.dtypes == 'object',您不会获得列名称,而是获得显示列类型是否为分类的 bool 值。导致 KeyError: False

您可以选择分类列作为

mycolumns = data.columns
numerical_columns = data._get_numeric_data().columns
cat_features= list(set(mycolumns) - set(numerical_columns))

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

其余的代码将是相同的

  # Define function
def mean_encoding(df, cols, target):

for c in cols:
means = df.groupby(c)[target].mean()
df[c].map(means)

return df

# Encode
data = mean_encoding(data, cat_features, target)

关于python - 平均(似然)编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57555085/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com