Computes a
neighborhood consisting of the nearest n users to a given user.
"nearest" is defined by UserSimilarity you used.
NearestNUserNeighborhood
class provides following constructors to construct NearestNUserNeighborhood
object.
NearestNUserNeighborhood(int
n, double minSimilarity, UserSimilarity userSimilarity, DataModel dataModel)
NearestNUserNeighborhood(int
n, double minSimilarity, UserSimilarity userSimilarity, DataModel dataModel,
double samplingRate)
NearestNUserNeighborhood(int
n, UserSimilarity userSimilarity, DataModel dataModel)
n: Neighborhood
size
minSimilarity
: minimal similarity required for neighbors
userSimilarity: UserSimilarity instance
DataModel :
Input data
samplingRate
- percentage of users to consider when building neighborhood.
Following
example shows usage of NearestNUserNeighborhood.
Let’s say I
had following data.
customers.csv
1,1,3 1,2,1 1,4,5 1,5,3 1,9,3 1,10,2 2,1,2 2,3,2 2,4,1 2,7,5 3,1,5 3,2,1 3,3,1 3,6,1 3,8,1 4,1,1 4,2,1 4,6,3 4,7,1 4,9,2 5,2,1 5,3,3 5,6,5 5,10,3 6,1,1 6,2,4 6,3,4 6,7,2 6,8,3 7,1,3 7,2,3 7,3,1 7,5,3 7,6,3 7,7,3 8,1,1 8,3,3 8,4,5 8,8,1 8,9,2 9,4,2 9,6,5 9,8,3 9,9,3 10,2,5 10,3,1 10,4,2 10,5,1 10,9,4 11,2,3 11,4,2 11,5,2 11,8,1 12,1,1 12,3,4 12,7,3 12,8,2 13,1,3 13,2,4 13,3,2 13,5,3 13,9,3 14,2,3 14,3,2 14,5,1 14,7,1 14,8,5 14,9,2 15,1,3 15,2,2 15,3,2 15,6,5 15,7,1 15,9,3 16,2,2 16,3,4 16,6,1 16,7,3 16,10,1 17,3,1 17,4,3 17,7,4 17,8,4 18,3,3 18,5,2 18,6,3 18,9,1 18,10,2 19,1,1 19,2,5 19,6,2 19,7,2 19,8,3 19,10,3 20,1,2 20,2,2 20,3,1 20,4,4 20,8,1
20,8,1 means
user 20 bought item 8 and rated 1
import java.io.File; import java.io.IOException; 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.similarity.EuclideanDistanceSimilarity; import org.apache.mahout.cf.taste.model.DataModel; import org.apache.mahout.cf.taste.neighborhood.UserNeighborhood; public class NearestNUserNeighborhoodEx { public static String dataFile = "/Users/harikrishna_gurram/customer.csv"; private static final int NEIGHBORHOOD_SIZE = 5; public static void main(String args[]) throws IOException, TasteException { DataModel model = new FileDataModel(new File(dataFile)); EuclideanDistanceSimilarity similarity = new EuclideanDistanceSimilarity( model); UserNeighborhood neighborhood = new NearestNUserNeighborhood( NEIGHBORHOOD_SIZE, similarity, model); long[] neighbors = neighborhood.getUserNeighborhood(1); System.out.println("Neighbors for user 1 are"); for (long user : neighbors) { System.out.print(user + " "); } } }
Output
Neighbors
for user 1 are
15 5 16 20 7
No comments:
Post a Comment