Data Model 数据模型
上一次的学习知道了如何储存单个用户的偏好使用PreferenceArray。
如何储存所有用户的偏好数据呢?由于Mahout没有常用的Map和set,它使用的是基于hash的FastByIDMap,其中FastByIDMap的Key和Value都是long类型的。
实例:
import org.apache.mahout.cf.taste.impl.model.GenericDataModel;
import org.apache.mahout.cf.taste.impl.model.GenericUserPreferenceArray;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.PreferenceArray;
import org.apache.mahout.cf.taste.impl.common.FastByIDMap;
public class CreateGenericDataModel {
private CreateGenericDataModel(){
}
public static void main(String[] args){
FastByIDMap<PreferenceArray> preferences = new FastByIDMap<PreferenceArray>();
PreferenceArray User1Prefetence = new GenericUserPreferenceArray(2);//用户1两个元素
User1Prefetence.setUserID(0,1L);
User1Prefetence.setItemID(0,101L);
User1Prefetence.setValue(0,1.0f);
User1Prefetence.setItemID(1,102L);
User1Prefetence.setValue(1,2.0f);
PreferenceArray User2Prefetence = new GenericUserPreferenceArray(2);//用户2两个元素
User2Prefetence.setUserID(0,2L);
User2Prefetence.setItemID(0,101L);
User2Prefetence.setValue(0,3.0f);
User2Prefetence.setItemID(1,102L);
User2Prefetence.setValue(1,4.0f);
preferences.put(1L,User1Prefetence);
preferences.put(2L,User2Prefetence);
DataModel model = new GenericDataModel(preferences);
System.out.println(model);
}
}
输出结果: