示例#1
0
float SVDPredictor::Predict(int user, int item, int k) {
  assert(k <= sv_.rows());
  float ret = RatingMeanByUser(user);
  for (int i = 0; i < k; i++) {
    ret += u_(user, i) * sv_(i, 0) * v_(item, i);
  }
#if 0
  const Eigen::MatrixXf d =  (u_ * sv_.asDiagonal()) * v_.transpose();
  printf("ret(%d, %d)=%f\n", user, item, d(user, item) +  RatingMeanByUser(user));
#endif
  return ret;
}
 /** \brief Zero-based indexing: Preconditions: <tt>values()!=NULL && (0 <= i
  * < subDim()-1)</tt>. */
 Scalar& operator()(Teuchos_Index i) const { return sv_(i); }