当前位置: 首页>>代码示例>>Java>>正文


Java CosineVectorSimilarity类代码示例

本文整理汇总了Java中org.grouplens.lenskit.vectors.similarity.CosineVectorSimilarity的典型用法代码示例。如果您正苦于以下问题:Java CosineVectorSimilarity类的具体用法?Java CosineVectorSimilarity怎么用?Java CosineVectorSimilarity使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


CosineVectorSimilarity类属于org.grouplens.lenskit.vectors.similarity包,在下文中一共展示了CosineVectorSimilarity类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: getUserUserSimilarity

import org.grouplens.lenskit.vectors.similarity.CosineVectorSimilarity; //导入依赖的package包/类
/**
 * Get the cosine similarity between user-user
 * @param user1  user ID 1
 * @param user2  user ID 2
 * @return  the cosine similarity
 */
private double getUserUserSimilarity(long user1, long user2){
    CosineVectorSimilarity csim = new CosineVectorSimilarity();
    SparseVector uv1 = getUserRatingVector(user1);
    SparseVector uv2 = getUserRatingVector(user2);

    MutableSparseVector mv1  = uv1.mutableCopy();
    MutableSparseVector mv2  = uv2.mutableCopy();
    mv1.add(-uv1.mean());
    mv2.add(-uv2.mean());
    return csim.similarity(mv1,mv2);
}
 
开发者ID:4DD8A19D69F5324F9D49D17EF78BBBCC,项目名称:Introd_uction_to_Recom_mander_S_ystem,代码行数:18,代码来源:SimpleUserUserItemScorer.java

示例2: get

import org.grouplens.lenskit.vectors.similarity.CosineVectorSimilarity; //导入依赖的package包/类
@Override
public SimpleItemItemModel get() {
	// Get the transposed rating matrix
	// This gives us a map of item IDs to those items' rating vectors
	Map<Long, ImmutableSparseVector> itemVectors = getItemVectors();

	// Get all items - you might find this useful
	LongSortedSet items = LongUtils.packedSet(itemVectors.keySet());
	// Map items to vectors of item similarities
	@SuppressWarnings("unused")
	Map<Long,MutableSparseVector> itemSimilarities = new HashMap<Long, MutableSparseVector>();

	// Compute the similarities between each pair of items
	// It will need to be in a map of longs to lists of Scored IDs to store in the model
	Map<Long, List<ScoredId>> neighborhoods = new HashMap<Long, List<ScoredId>>();


	// Compute the similarities between each pair of items
	CosineVectorSimilarity cosine = new CosineVectorSimilarity();

	for(long item : items){

		// get this item ratings
		ImmutableSparseVector itemRatings = itemVectors.get(item);

		// create the accumulator for this item
		TopNScoredItemAccumulator accumulator = new TopNScoredItemAccumulator(items.size() - 1);

		for(long neighbor : items){

			// skip itself
			if(item == neighbor) continue;

			ImmutableSparseVector neighRatings = itemVectors.get(neighbor);

			// cosine similarity
			double similarity = cosine.similarity(itemRatings, neighRatings);

			//accumulate positive similarities
			if(similarity >= 0.0){
				accumulator.put(neighbor, similarity);
			}
		}

		//get the final list of sorted neighbors
		List<ScoredId> similarities = accumulator.finish();

		// update the map of similarity
		neighborhoods.put(item, similarities);
	}

	// It will need to be in a map of longs to lists of Scored IDs to store in the model
	return new SimpleItemItemModel(neighborhoods);
}
 
开发者ID:paolobarbaglia,项目名称:coursera_recommender_systems,代码行数:55,代码来源:SimpleItemItemModelBuilder.java

示例3: get

import org.grouplens.lenskit.vectors.similarity.CosineVectorSimilarity; //导入依赖的package包/类
@Override
  public SimpleItemItemModel get() {
      // Get the transposed rating matrix
      // This gives us a map of item IDs to those items' rating vectors
      Map<Long, ImmutableSparseVector> itemVectors = getItemVectors();

      // Get all items - you might find this useful
      LongSortedSet items = LongUtils.packedSet(itemVectors.keySet());
      // Map items to vectors of item similarities
      //Map<Long,MutableSparseVector> itemSimilarities = new HashMap<Long, MutableSparseVector>();
Map<Long, List<ScoredId>> neighborhoods = new HashMap<Long, List<ScoredId>>();

// Computing the similarities between each pair of items
      // It will need to be in a map of longs to lists of Scored IDs to store in the model
for(Iterator outerIter = items.iterator(); outerIter.hasNext() ; ) {
	Long thisItemId = (Long) outerIter.next();

	TopNScoredItemAccumulator accumulator = new TopNScoredItemAccumulator(items.size()-1);

	// Calculate similiarity with other item one by one and
	for(Iterator innerIter = items.iterator(); innerIter.hasNext() ; ) {
		Long nghbrItemId = (Long) innerIter.next();

		if(thisItemId.equals(nghbrItemId)) continue;

		// cosine similarity
		double similarity = new CosineVectorSimilarity().similarity(itemVectors.get(thisItemId),
				itemVectors.get(nghbrItemId));

		//accumulate
		if (similarity > 0) {
			accumulator.put(nghbrItemId, similarity);
		}
	}
	//put in the final list of sorted neighbors
	List<ScoredId> similarities = accumulator.finish();
	neighborhoods.put(thisItemId, similarities);
}
return new SimpleItemItemModel(neighborhoods);
      //return new SimpleItemItemModel(Collections.EMPTY_MAP);
  }
 
开发者ID:rohitsinha54,项目名称:Coursera-Introduction-to-Recommender-Systems-Programming-Assignment-5,代码行数:42,代码来源:SimpleItemItemModelBuilder.java

示例4: calculateUserSimilarity

import org.grouplens.lenskit.vectors.similarity.CosineVectorSimilarity; //导入依赖的package包/类
/**
    * Calculate User similarity
    * @param userVector, otherUserVector
    * @return The similarity vector 
    */
private double calculateUserSimilarity(SparseVector userVector, SparseVector otherUserVector) {
	
	MutableSparseVector userCopy = userVector.mutableCopy();
	MutableSparseVector otherUserCopy = otherUserVector.mutableCopy();
	
	userCopy.subtract(MutableSparseVector.create(userCopy.keyDomain(), userVector.mean()));
	otherUserCopy.subtract(MutableSparseVector.create(otherUserCopy.keyDomain(), otherUserCopy.mean()));
	
	CosineVectorSimilarity similarity = new CosineVectorSimilarity();
	
	return similarity.similarity(userCopy, otherUserCopy);
}
 
开发者ID:paolobarbaglia,项目名称:coursera_recommender_systems,代码行数:18,代码来源:SimpleUserUserItemScorer.java


注:本文中的org.grouplens.lenskit.vectors.similarity.CosineVectorSimilarity类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。