1
我有100万点的记录训练集和测试集的100为了创建一个推荐系统,我已经创建了组织为这样的两个dataframes:热编码:缺少列
[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?
我得到'code'(Key Error:'product_id')。此外,我不想返回'product_id'列,只有矩阵。 – zsad512
很可能你已经用'pop'方法从'training_df'弹出'product_id'列,我不推荐使用它,因为它修改'training_df'并给你这样的问题。所以试着重建它。另外,你需要'transaction_id'列,还是只需要P01-P10? – Psidom
好的,我认为你是对的,我会重建df并再次尝试 - 但是,保留transaction_id列会很有帮助,但是包含product_id列会因为数据已经存在而变得有点冗余。 – zsad512