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的内部类里面了,所以如果要看怎么使用,可以查看源码。

posted @ 2014-08-04 10:23  jseven  阅读(453)  评论(0编辑  收藏  举报