import java.io.File;
import java.io.IOException;
import java.util.List;
import org.apache.mahout.cf.taste.common.TasteException;
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.recommender.CachingRecommender;
import org.apache.mahout.cf.taste.impl.recommender.GenericUserBasedRecommender;
import org.apache.mahout.cf.taste.impl.similarity.PearsonCorrelationSimilarity;
import org.apache.mahout.cf.taste.model.DataModel;
import org.apache.mahout.cf.taste.model.JDBCDataModel;
import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood;
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 UserCF {
private String m_strFileName ;
private DataModel m_dataModel ;
private Recommender m_recommender;
public UserCF(String str ) throws IOException {
m_strFileName = str ;
m_dataModel = new FileDataModel(new File(m_strFileName ));
}
public DataModel GetDataModel(){
return m_dataModel ;
}
public void Parse() throws TasteException {
UserSimilarity userSimilarity = new PearsonCorrelationSimilarity(m_dataModel);
UserNeighborhood userNeighborhood = new NearestNUserNeighborhood(2,
userSimilarity, m_dataModel);
m_recommender = new GenericUserBasedRecommender(m_dataModel,
userNeighborhood, userSimilarity);
}
public void GetRecommender ( int which , int range ) throws TasteException {
for( RecommendedItem x : m_recommender.recommend(which , range ) ){
System.out.println( x );
}
}
public int GetUserCountFromDataModel( ) {
Cmd pcmd=new Cmd();
String str = "./sh//usercount.sh " + m_strFileName ;
//System.out.println(str ) ;
List<String> res = pcmd.exec( str ) ;
if( res.size() > 0 ){
return Integer.parseInt( res.get( 0 ) ) ;
}
return -1 ;
}
}
Java Mahout之UserCF
最新推荐文章于 2024-05-07 00:08:28 发布