gpt4 book ai didi

python - 热编码: missing columns

转载 作者:行者123 更新时间:2023-12-01 02:43:54 25 4
gpt4 key购买 nike

我有 1000000 条记录的训练集和 100 条记录的测试集。为了创建推荐系统,我创建了两个组织如下的数据框:

[in]print(training_df.head(n=5))

[out] product_id
transaction_id
0000001 [P06, P09]
0000002 [P01, P05, P06, P09]
0000003 [P01, P06]
0000004 [P01, P09]
0000005 [P06, P09]

然后,我使用 sklearn 创建一个矩阵,其中 Product_id 作为列,transaction_id 作为行(索引)。

这是代码:

# Create a matrix for the transactions
from sklearn.preprocessing import MultiLabelBinarizer

mlb = MultiLabelBinarizer()
training_df1 = training_df.join(pd.DataFrame(mlb.fit_transform(training_df.pop('product_id')),
columns=mlb.classes_,
index=training_df.index))

product_id 是 P01-P10。问题是训练数据中缺少 P04 和 P08,因此我的 Training_df1 只有 8 列而不是 10 列。如何添加这两列并为所有交易填充 0?

最佳答案

在初始化 MultiLabelBinarizer 时,您可以将预定义的产品 ID P01-P10 作为类传递,因此输出将始终包含这些类别作为列:

from sklearn.preprocessing import MultiLabelBinarizer

product_ids = ['P{:02d}'.format(i+1) for i in range(10)]
print(product_ids)
# ['P01', 'P02', 'P03', 'P04', 'P05', 'P06', 'P07', 'P08', 'P09', 'P10']

mlb = MultiLabelBinarizer(classes=product_ids)
training_df.join(pd.DataFrame(mlb.fit_transform(training_df['product_id']),
columns=mlb.classes_,
index=training_df.index))

enter image description here

<小时/>

仅获取矩阵:

training_df.drop('product_id', 1).join(
pd.DataFrame(mlb.fit_transform(training_df['product_id']), columns=mlb.classes_, index=training_df.index)
)

enter image description here

关于python - 热编码: missing columns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45400744/

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