Libimseti 사용자 추천 시스템
<span style="font-size:18px;">/***
* @author YangXin
* @date 2016/2/19
* @info Libimseti
* ,
*/
package unitFive;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.List;
import org.apache.mahout.cf.taste.common.Refreshable;
import org.apache.mahout.cf.taste.common.TasteException;
import org.apache.mahout.cf.taste.impl.common.FastIDSet;
import org.apache.mahout.cf.taste.impl.model.file.FileDataModel;
import org.apache.mahout.cf.taste.impl.neighborhood.NearestNUserNeighborhood;
import org.apache.mahout.cf.taste.impl.similarity.EuclideanDistanceSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
import org.apache.mahout.cf.taste.recommender.IDRescorer;
import org.apache.mahout.cf.taste.recommender.RecommendedItem;
import org.apache.mahout.cf.taste.recommender.Recommender;
import org.apache.mahout.cf.taste.similarity.UserSimilarity;
public class LibimsetiRecommender implements Recommender {
private final Recommender delegate;
private final DataModel model;
private final FastIDSet men;
private final FastIDSet women;
private final FastIDSet usersRateMoreMen;
private final FastIDSet usersRateLessMen;
//
public LibimsetiRecommender() throws TasteException, IOException{
this(new FileDataModel(readResourceToTempFile("E:\\mahout \\examples\\ratings.dat")));
}
/***
* ,
* @param string
* @return
*/
private static File readResourceToTempFile(String string) {
// TODO Auto-generated method stub
return null;
}
//
public LibimsetiRecommender(DataModel model) throws TasteException, IOException {
// TODO Auto-generated constructor stub
UserSimilarity similarity = new EuclideanDistanceSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(2, similarity, model);
delegate = new GenericUserBasedRecommender(model, neighboehood, similarity);
this.model = model;
FastIDSet[] menWomen = GenderRescorer.parseMenWomen(readResourceToTempFile("E:\\mahout \\examples\\gender.dat"));
men = menWomen[0];
women = menWomen[1];
usersRateMoreMen = new FastIDSet(50000);
usersRateLessMen = new FastIDSet(50000);
}
//
@Override
public List<RecommendedItem> recommend(long userID, int howMany)
throws TasteException {
// TODO Auto-generated method stub
IDRescorer rescorer = new GenderRescorer(men, women, userID, usersRateMoreMen, userRateLessMen, userID, model);
return delegate.recommend(userID, howMany, rescorer);
}
@Override
public List<RecommendedItem> recommend(long userID, int howMany, IDRescorer rescorer)
throws TasteException {
// TODO Auto-generated method stub
return delegate.recommend(userID, howMany, rescorer);
}
@Override
public float estimatePreference(long userID, long itemID) throws TasteException {
// TODO Auto-generated method stub
IDRescorer rescorer = new GenderRescorer(men, women, userID, usersRateMoreMen,usersRateLessMen, userID, model);
return (float)rescorer.rescore(itemID, delegate.estimatePreference(userID, itemID));
}
@Override
public void setPreference(long userID, long itemID, float value)
throws TasteException {
// TODO Auto-generated method stub
delegate.setPreference(userID, itemID, value);
}
@Override
public void removePreference(long userID, long itemID) throws TasteException {
// TODO Auto-generated method stub
delegate.removePreference(userID, itemID);
}
@Override
public DataModel getDataModel() {
// TODO Auto-generated method stub
return delegate.getDataModel();
}
@Override
public void refresh(Collection<Refreshable> alreadyRefreshed) {
// TODO Auto-generated method stub
delegate.refresh(alreadyRefreshed);
}
@Override
public List<RecommendedItem> recommend(long userID, int howMang, boolean arg2)
throws TasteException {
// TODO Auto-generated method stub
return null;
}
@Override
public List<RecommendedItem> recommend(long arg0, int arg1,
IDRescorer arg2, boolean arg3) throws TasteException {
// TODO Auto-generated method stub
return null;
}
@Override
public void refresh(Collection<Refreshable> arg0) {
// TODO Auto-generated method stub
}
@Override
public List<RecommendedItem> recommend(long arg0, int arg1)
throws TasteException {
// TODO Auto-generated method stub
return null;
}
@Override
public List<RecommendedItem> recommend(long arg0, int arg1, boolean arg2)
throws TasteException {
// TODO Auto-generated method stub
return null;
}
@Override
public List<RecommendedItem> recommend(long arg0, int arg1, IDRescorer arg2)
throws TasteException {
// TODO Auto-generated method stub
return null;
}
@Override
public List<RecommendedItem> recommend(long arg0, int arg1,
IDRescorer arg2, boolean arg3) throws TasteException {
// TODO Auto-generated method stub
return null;
}
}
</span>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.