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