首页 > 代码库 > mahout推荐5-偏好数据的表示

mahout推荐5-偏好数据的表示

Preference对象:单个用户Id,物品ID和偏好值,实现GenericPreference

PreferenceArray数组,单个用户所有偏好值数组,实现GenericPreferenceArray

代码示例:

package mahout;import org.apache.mahout.cf.taste.impl.model.GenericUserPreferenceArray;import org.apache.mahout.cf.taste.model.Preference;import org.apache.mahout.cf.taste.model.PreferenceArray;public class TestData {	public static void main(String[] args) {		//某个用户的偏好集合,表示的是与某个用户关联的所有偏好,内部包含一个单一用户ID,一个物品ID数组,一个偏好值数组		//其中物品ID数组和偏好值数组是一一对应的。		// 数组大小2个		PreferenceArray user1Prefs = new GenericUserPreferenceArray(2);		//关联的用户Id		user1Prefs.setUserID(0, 1L);		//第一个偏好		user1Prefs.setItemID(0, 101L);		user1Prefs.setValue(0, 2.0f);		//第二个偏好		user1Prefs.setItemID(1, 102L);		user1Prefs.setValue(1, 3.0f);		//试着放第三个		/*user1Prefs.setItemID(2, 103L);		user1Prefs.setValue(2, 3.0f);*/				Preference pref = user1Prefs.get(1);		System.out.println(pref.getUserID());		System.out.println(pref.getItemID());		System.out.println(pref.getValue());	}}

 输出:

1
102
3.0

试着放第三个看看:异常了吧

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2	at org.apache.mahout.cf.taste.impl.model.GenericUserPreferenceArray.setItemID(GenericUserPreferenceArray.java:129)	at mahout.TestData.main(TestData.java:23)

 另外还有FastMap,FastByIDMap,FastIdSet.这些都嵌入了mahout的内部类里面了,所以如果要看怎么使用,可以查看源码。