2013-05-15 96 views
1

我想基於Mahout構建推薦模型。我的數據集格式具有除userID,itemID,評分和時間戳以外的其他列。因此,我認爲我需要擴展FileDataModel的 。爲新數據集擴展Mahout

我查看了JesterDataModel作爲例子。但是,我的邏輯流程有問題。在其buildModel()方法中,首先構造一個空映射「data」。然後它被引入processFile。我假設在這個方法中修改了「data」,因爲後來它被用來構造GenericDataModel。但是,data是一個局部變量而不是一個類變量,所以它如何被修改?

processFile(iterator, data, timestamps, false); 
return new GenericDataModel(GenericDataModel.toDataMap(data, true)); 
+0

你想用這個額外的列做什麼? –

+0

@Julian例如,每個用戶讀一本書,對它進行評分,並添加一些標籤。額外的列是標籤。當向用戶推薦圖書時,我也想看看圖書的標籤是否與用戶的標籤匹配。當然,我可以創建另一個數據結構來存儲這些標記首選項,但理想情況下,我想將所有內容包裝到DataModel中。 – Jia

回答

1

我看到...我相信你將不得不重新編寫類似DataModel的,相似的計算主要部件,等等等等,使這項工作。你可以看看Rescorer,它允許你引入你自己的邏輯和過濾項目或根據你的需求增加一些其他項目。

在Mahout in Action書的第5章中,有一個如何使用Rescorer類的例子。你可以在這裏看到代碼(link)