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