void Project_Engine::Voting_Algorithm(Node** table){ int i,j,current_cust,counter; Sparse_Mat Movie_Matrix(CUSTOMERS_MAX-1,MOVIES_MAX-1); //Declare Movie Matrix (N x F) double sum; MatrixXd rate_matrix(Cust_classes,MOVIES_MAX); NodePtr p; NodePtr Class_List = NULL; Movie_Matrix.reserve(VectorXi::Constant(CUSTOMERS_MAX,Profile_Length));//Reserve memory for a MAX_CUSTOMERS number of vectors (of size 4) for (i=0; i<upRating_Count; i++){ Movie_Matrix.insert(Rating_spec[i].Cust_ID-1,Rating_spec[i].Movie_ID-1) = Rating_spec[i].Rating; } Movie_Matrix.makeCompressed(); for (j=0;j<Cust_classes;j++){ for (i=1;i<MOVIES_MAX;i++){ sum = 0; counter = 0; p = table[j]; while(p!=NULL){ current_cust = p->Cust_ID; //0 - 38065 addToList(current_cust, j, Class_List); //List showing with which class each user is associated with if (Movie_Matrix.coeff(current_cust,i-1)!=0){ //if (Movie_Matrix.coeff(current_cust-1,i-1)!=0){ sum += Movie_Matrix.coeff(current_cust,i-1);//sum += Movie_Matrix.coeff(current_cust-1,i-1); counter++; } p = p->Next; } sum = sum/counter; if ((sum == 0) || (counter == 0)) sum = 3.9; rate_matrix(j,i) = sum; } } this->Qualify(L"probe.txt", rate_matrix, Class_List, Movie_Matrix); }
arma::mat exact_trans2(arma::cube joint_means_trans, Rcpp::List eigen_decomp, double time_int, arma::ivec absorb_states, int start_state, int end_state, int exact_time_index){ arma::mat rate_matrix=Rcpp::as<arma::mat>(eigen_decomp["rate"]); arma::mat out=arma::zeros<arma::mat>(rate_matrix.n_rows,rate_matrix.n_rows); arma::mat temp=arma::zeros<arma::mat>(rate_matrix.n_rows,rate_matrix.n_rows); int i=start_state-1; int j=end_state-1; int k=0; bool i_in_A=0; bool j_in_A=0; //std::cout<<absorb_states; while(i_in_A==0 && k<absorb_states.size()){ int test=absorb_states[k]-1; if(test==i){ i_in_A=1; } k++; } k=0; while(j_in_A==0 && k<absorb_states.size()){ int test=absorb_states[k]-1; if(test==j){ j_in_A=1; } k++; } int in_either=i_in_A+j_in_A; if(in_either==0){ for(int l=0;l<absorb_states.size();l++){ int absorb_state=absorb_states[l]-1; temp.col(absorb_state)=rate_matrix.col(absorb_state); } out=joint_means_trans.slice(exact_time_index)*temp; } if(i_in_A==0 && j_in_A==1){ arma::mat prob_mat=mat_exp_eigen_cpp(eigen_decomp,time_int); out.col(j)=prob_mat.col(i)*rate_matrix(i,j); } return(out); }