*/
public MovieLensDataModel(String filepath) {
BufferedReader reader;
OpenIntHashSet tusers = new OpenIntHashSet();
OpenIntHashSet titems = new OpenIntHashSet();
String line;
try {
reader = new BufferedReader(new FileReader(filepath));
line = reader.readLine();
int n = 0;
double score = 0.0;
while (line != null) {
n++;
if (n % 1000 == 0)
System.out.println("now iteration: " + n);
String[] tmp = line.split("\t");
int userid = Integer.parseInt(tmp[0]);
int itemid = Integer.parseInt(tmp[1]);
double rating = Double.parseDouble(tmp[2]);
tusers.add(userid);
titems.add(itemid);
score += rating;
// Initialize user-item rating matrix
Vector tmp_vector = null;
if (userItemMatrix.containsKey(userid)) {
tmp_vector = userItemMatrix.get(userid);
tmp_vector.setQuick(itemid, rating);
} else {
tmp_vector = new SequentialAccessSparseVector(400);
tmp_vector.setQuick(itemid, rating);
userItemMatrix.put(userid, tmp_vector);
}
// Initialize item-user rating matrix
tmp_vector = null;
if (itemUserMatrix.containsKey(itemid)) {
tmp_vector = itemUserMatrix.get(itemid);
tmp_vector.setQuick(userid, rating);
} else {
tmp_vector = new SequentialAccessSparseVector(400);
tmp_vector.setQuick(userid, rating);
itemUserMatrix.put(itemid, tmp_vector);
}
// read the next line
line = reader.readLine();
}
reader.close();
meanRating = score / n;
} catch (IOException e) {
e.printStackTrace();
}
users = tusers.keys();
items = titems.keys();
tusers = null;
titems = null;
}