我正在尝试使用Mahout为我的项目创建推荐系统。我尝试使用.csv文件的示例程序(来自Mahout)。现在我正在使用MySQL数据库中的数据。我有一张名为' transaction'使用以下列。
transactionid
,userid
,itemid
,purchasequantity
,amount
,rating
我看到Mahout需要的数据格式为" userid,itemid,preference / rating"我看到它有MySQLJDBCDataModel。在我的交易中已经存在了所需的三个列'表。
现在对于数据源,我应该创建一个只包含所需3列的新表,并从'事务中复制值。表?或者,我可以使用'交易'桌子本身不知何故?
我确实浏览了以下链接中的文档,但是我们并不清楚http://archive.cloudera.com/cdh4/cdh/4/mahout/mahout-integration/org/apache/mahout/cf/taste/impl/model/jdbc/MySQLJDBCDataModel.html
请指教。在此先感谢您的帮助。
答案 0 :(得分:0)
By default it assumes the table schema
user_id BIGINT NOT NULL,
item_id BIGINT NOT NULL,
preference FLOAT NOT NULL,
很久以前我就像下面这样做了。我使用MySQLBooleanPrefJDBCDataModel.i没有偏好值。
public void datamodelimplementation2()
{
MysqlDataSource dataSource = new MysqlDataSource();
dataSource.setServerName("10.20.53.157");
dataSource.setUser("root");
dataSource.setPassword("root");
dataSource.setDatabaseName("mahout");
DataModel model = new MySQLBooleanPrefJDBCDataModel(dataSource,
"mahoutinput","cid", "pid", null);
ItemBasedRecommender recommender = null;
try {
DataModel dataModel = new MySQLBooleanPrefJDBCDataModel(dataSource);
ItemSimilarity similarity = new MySQLJDBCInMemoryItemSimilarity(dataSource);
AllSimilarItemsCandidateItemsStrategy candidateStrategy =
new AllSimilarItemsCandidateItemsStrategy(similarity);
recommender = new GenericItemBasedRecommender(dataModel,
similarity, candidateStrategy, candidateStrategy);
} catch (Exception e1) {
e1.printStackTrace();
System.exit(-1);
}
recommender.refresh(null);
List<RecommendedItem> r = null;
try {
r = recommender.recommend(18768, 10);
} catch (TasteException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
System.out.println(r);
}
as of my knowledge you need to create a table that contains user id,item id,rating. and incrementally add new data to that table.