Using the information you collected on movie ratings, implement a Global Baseline Estimate recommendation system in R.
Most recommender systems use personalized algorithms like “content management” and “item-item collaborative filtering.” Sometimes non-personalized recommenders are also useful or necessary. One of the best non-personalized recommender system algorithms is the “Global Baseline Estimate.
The job here is to use the survey data collected and write the R code that makes a movie recommendation using the Global Baseline Estimate algorithm. Please see the attached spreadsheet for implementation details.
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.4.2
## Warning: package 'ggplot2' was built under R version 4.4.2
## Warning: package 'tibble' was built under R version 4.4.2
## Warning: package 'stringr' was built under R version 4.4.2
## Warning: package 'lubridate' was built under R version 4.4.2
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(openintro)
## Loading required package: airports
## Loading required package: cherryblossom
## Loading required package: usdata
library(readxl)
library(dplyr)
library(fortunes)
#load data
movie_rating_data <- read.csv("https://raw.githubusercontent.com/asadny82/Data607/refs/heads/main/MovieRatings.csv", header = TRUE)
head(movie_rating_data)
## Critic CaptainAmerica Deadpool Frozen JungleBook PitchPerfect2
## 1 Burton NA NA NA 4
## 2 Charley 4 5 4 3 2
## 3 Dan NA 5 NA NA
## 4 Dieudonne 5 4 NA NA
## 5 Matt 4 NA 2 NA 2
## 6 Mauricio 4 NA 3 3 4
## StarWarsForce
## 1 4
## 2 3
## 3 5
## 4 5
## 5 5
## 6 NA
#change NA to zero
#movie_rating_data <- replace(movie_rating_data, is.na(movie_rating_data),0)
round(dist(movie_rating_data, diag =T, upper=F, method = "euclidean"),2)
## Warning in dist(movie_rating_data, diag = T, upper = F, method = "euclidean"):
## NAs introduced by coercion
## 1 2 3 4 5 6 7 8 9 10 11 12
## 1 0.00
## 2 2.65 0.00
## 3 2.65 3.74 0.00
## 4 2.65 3.74 1.87 0.00
## 5 2.65 3.74 0.00 1.87 0.00
## 6 2.65 2.96 NA 2.65 3.42 0.00
## 7 3.74 1.87 2.65 2.16 2.96 3.24 0.00
## 8 0.00 2.65 2.65 2.65 2.65 NA 0.00 0.00
## 9 2.65 4.95 1.87 1.53 1.53 3.74 4.18 2.65 0.00
## 10 2.65 3.24 5.29 3.74 4.77 4.58 3.74 2.65 6.06 0.00
## 11 1.87 3.13 1.87 2.16 5.07 4.58 4.10 0.00 5.77 2.90 0.00
## 12 2.65 3.06 5.29 5.29 5.29 4.18 4.83 2.65 6.75 1.53 2.16 0.00
## 13 1.87 3.58 0.00 1.53 4.95 3.24 3.74 2.65 5.61 4.04 1.67 3.74
## 14 0.00 1.87 2.65 2.65 1.87 0.00 0.00 0.00 1.87 1.87 1.87 2.65
## 15 2.65 1.67 0.00 2.65 2.16 1.32 2.37 NA 3.42 4.27 3.97 4.18
## 16 2.65 4.18 NA NA 7.94 5.29 5.92 NA 10.58 0.00 0.00 1.87
## 13 14 15 16
## 1
## 2
## 3
## 4
## 5
## 6
## 7
## 8
## 9
## 10
## 11
## 12
## 13 0.00
## 14 2.65 0.00
## 15 3.13 0.00 0.00
## 16 1.87 NA 5.29 0.00
round(dist(movie_rating_data, diag =T, upper=T, method = "euclidean"),1)
## Warning in dist(movie_rating_data, diag = T, upper = T, method = "euclidean"):
## NAs introduced by coercion
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
## 1 0.0 2.6 2.6 2.6 2.6 2.6 3.7 0.0 2.6 2.6 1.9 2.6 1.9 0.0 2.6
## 2 2.6 0.0 3.7 3.7 3.7 3.0 1.9 2.6 4.9 3.2 3.1 3.1 3.6 1.9 1.7
## 3 2.6 3.7 0.0 1.9 0.0 NA 2.6 2.6 1.9 5.3 1.9 5.3 0.0 2.6 0.0
## 4 2.6 3.7 1.9 0.0 1.9 2.6 2.2 2.6 1.5 3.7 2.2 5.3 1.5 2.6 2.6
## 5 2.6 3.7 0.0 1.9 0.0 3.4 3.0 2.6 1.5 4.8 5.1 5.3 4.9 1.9 2.2
## 6 2.6 3.0 NA 2.6 3.4 0.0 3.2 NA 3.7 4.6 4.6 4.2 3.2 0.0 1.3
## 7 3.7 1.9 2.6 2.2 3.0 3.2 0.0 0.0 4.2 3.7 4.1 4.8 3.7 0.0 2.4
## 8 0.0 2.6 2.6 2.6 2.6 NA 0.0 0.0 2.6 2.6 0.0 2.6 2.6 0.0 NA
## 9 2.6 4.9 1.9 1.5 1.5 3.7 4.2 2.6 0.0 6.1 5.8 6.7 5.6 1.9 3.4
## 10 2.6 3.2 5.3 3.7 4.8 4.6 3.7 2.6 6.1 0.0 2.9 1.5 4.0 1.9 4.3
## 11 1.9 3.1 1.9 2.2 5.1 4.6 4.1 0.0 5.8 2.9 0.0 2.2 1.7 1.9 4.0
## 12 2.6 3.1 5.3 5.3 5.3 4.2 4.8 2.6 6.7 1.5 2.2 0.0 3.7 2.6 4.2
## 13 1.9 3.6 0.0 1.5 4.9 3.2 3.7 2.6 5.6 4.0 1.7 3.7 0.0 2.6 3.1
## 14 0.0 1.9 2.6 2.6 1.9 0.0 0.0 0.0 1.9 1.9 1.9 2.6 2.6 0.0 0.0
## 15 2.6 1.7 0.0 2.6 2.2 1.3 2.4 NA 3.4 4.3 4.0 4.2 3.1 0.0 0.0
## 16 2.6 4.2 NA NA 7.9 5.3 5.9 NA 10.6 0.0 0.0 1.9 1.9 NA 5.3
## 16
## 1 2.6
## 2 4.2
## 3 NA
## 4 NA
## 5 7.9
## 6 5.3
## 7 5.9
## 8 NA
## 9 10.6
## 10 0.0
## 11 0.0
## 12 1.9
## 13 1.9
## 14 NA
## 15 5.3
## 16 0.0
#similat matrix
movie_rating1 = 1/(1+as.matrix(dist(movie_rating_data)))
## Warning in dist(movie_rating_data): NAs introduced by coercion
round(movie_rating1,2)
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
## 1 1.00 0.27 0.27 0.27 0.27 0.27 0.21 1.00 0.27 0.27 0.35 0.27 0.35 1.00 0.27
## 2 0.27 1.00 0.21 0.21 0.21 0.25 0.35 0.27 0.17 0.24 0.24 0.25 0.22 0.35 0.37
## 3 0.27 0.21 1.00 0.35 1.00 NA 0.27 0.27 0.35 0.16 0.35 0.16 1.00 0.27 1.00
## 4 0.27 0.21 0.35 1.00 0.35 0.27 0.32 0.27 0.40 0.21 0.32 0.16 0.40 0.27 0.27
## 5 0.27 0.21 1.00 0.35 1.00 0.23 0.25 0.27 0.40 0.17 0.16 0.16 0.17 0.35 0.32
## 6 0.27 0.25 NA 0.27 0.23 1.00 0.24 NA 0.21 0.18 0.18 0.19 0.24 1.00 0.43
## 7 0.21 0.35 0.27 0.32 0.25 0.24 1.00 1.00 0.19 0.21 0.20 0.17 0.21 1.00 0.30
## 8 1.00 0.27 0.27 0.27 0.27 NA 1.00 1.00 0.27 0.27 1.00 0.27 0.27 1.00 NA
## 9 0.27 0.17 0.35 0.40 0.40 0.21 0.19 0.27 1.00 0.14 0.15 0.13 0.15 0.35 0.23
## 10 0.27 0.24 0.16 0.21 0.17 0.18 0.21 0.27 0.14 1.00 0.26 0.40 0.20 0.35 0.19
## 11 0.35 0.24 0.35 0.32 0.16 0.18 0.20 1.00 0.15 0.26 1.00 0.32 0.37 0.35 0.20
## 12 0.27 0.25 0.16 0.16 0.16 0.19 0.17 0.27 0.13 0.40 0.32 1.00 0.21 0.27 0.19
## 13 0.35 0.22 1.00 0.40 0.17 0.24 0.21 0.27 0.15 0.20 0.37 0.21 1.00 0.27 0.24
## 14 1.00 0.35 0.27 0.27 0.35 1.00 1.00 1.00 0.35 0.35 0.35 0.27 0.27 1.00 1.00
## 15 0.27 0.37 1.00 0.27 0.32 0.43 0.30 NA 0.23 0.19 0.20 0.19 0.24 1.00 1.00
## 16 0.27 0.19 NA NA 0.11 0.16 0.14 NA 0.09 1.00 1.00 0.35 0.35 NA 0.16
## 16
## 1 0.27
## 2 0.19
## 3 NA
## 4 NA
## 5 0.11
## 6 0.16
## 7 0.14
## 8 NA
## 9 0.09
## 10 1.00
## 11 1.00
## 12 0.35
## 13 0.35
## 14 NA
## 15 0.16
## 16 1.00
recommend_movies=(1/sum(movie_rating1[16,c(1:16)])) * (movie_rating1[16,c(1:16)] %*% movie_rating1)
recommend_movies
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
## [1,] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
movies_data_subset <- movie_rating_data [, c("CaptainAmerica","Deadpool","Frozen","JungleBook","PitchPerfect2","StarWarsForce")]
global_average_rating <- mean(as.matrix(movies_data_subset), na.rm = TRUE)
## Warning in mean.default(as.matrix(movies_data_subset), na.rm = TRUE): argument
## is not numeric or logical: returning NA
print(global_average_rating)
## [1] NA
calculate_baseline <- function(rating_matrix, mu) {
baseline_matrix <- matrix(0, nrow = nrow(rating_matrix), ncol = ncol(rating_matrix))
for (i in 1:nrow(rating_matrix)) {
for (j in 1:ncol(rating_matrix)) {
if (!is.na(rating_matrix[i, j])) {
baseline_matrix[i, j] <- mu + mean(rating_matrix[i, ], na.rm = TRUE) - mu + mean(rating_matrix[, j], na.rm = TRUE) - mu
}
}
}
return(baseline_matrix)
}
mu <- mean(as.matrix(movie_rating_data), na.rm = TRUE)
## Warning in mean.default(as.matrix(movie_rating_data), na.rm = TRUE): argument
## is not numeric or logical: returning NA
rating_matrix <- as.matrix(movie_rating_data[, -1])
baseline_estimation <- calculate_baseline(rating_matrix, mu)
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[i, ], na.rm = TRUE): argument is not
## numeric or logical: returning NA
## Warning in mean.default(rating_matrix[, j], na.rm = TRUE): argument is not
## numeric or logical: returning NA
recommendation_for_mpvies <- function(baseline_matrix) {
recommendation_list <- list()
for (i in 1:nrow(baseline_matrix)) {
max_index <- which.max(baseline_matrix[i, ])
recommendation_list[[i]] <- names(movie_rating_data)[-1][max_index]
}
return(recommendation_list)
}
movie_recommendation<- recommendation_for_mpvies(baseline_estimation)
for (i in 1:length(movie_recommendation)) {
cat("Critic", i, ":", movie_recommendation[[i]], "\n")
}
## Critic 1 : CaptainAmerica
## Critic 2 :
## Critic 3 : CaptainAmerica
## Critic 4 : Frozen
## Critic 5 : Deadpool
## Critic 6 : Deadpool
## Critic 7 :
## Critic 8 : CaptainAmerica
## Critic 9 : JungleBook
## Critic 10 :
## Critic 11 :
## Critic 12 : CaptainAmerica
## Critic 13 :
## Critic 14 : Deadpool
## Critic 15 : StarWarsForce
## Critic 16 : CaptainAmerica