【发布时间】:2018-01-06 03:10:02
【问题描述】:
我有 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?
【问题讨论】:
标签: python scikit-learn one-hot-encoding