У меня есть матрица, которую я привел из realRatingMatrix в комплекте Recommenderlab в R. Данные содержат прогнозы оценок от 0 до 1 для ряда продуктов.
Матрица должна содержать номера клиентов вдоль строк (строка 2 вниз), чтобы заголовок столбца 1 был меткой строки, и идентификаторы продуктов вдоль столбцов в первой строке, начиная со столбца 2 и далее. Проблема, с которой я сталкиваюсь, заключается в том, что когда я приводлю матрицу, структура данных становится грязной:
РЕДАКТИРОВАТЬ: Ссылка на репозиторий Github www.github.com / APBuchanan / Recommenderlab-модель
str(wsratings)
num [1:43, 1:319] 0.192 0.44 0.262 0.161 0.239 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:319] "X011211" "X014227" "X014229" "X014235" ...
Первые ячейки wsratings [1,1] должны быть помечены как «CustomerNumber», а остальные столбцы в строке 1 должны содержать данные, которые в настоящее время хранятся в указанном выше $: chr, но должны отображаться как отдельные переменные в матрица.
Из приведенного ниже кода вы увидите, что я пытался это сделать, вставив данные в два вектора, которые затем я могу вызвать в функции dimnames, но я что-то не так:
setwd("location to pull in data")
#look at using XLConnect package to link straight to excel workbook
library(recommenderlab)
library(xlsx)
library(tidyr)
library(Matrix)
#library(stringer)
data=read.csv("WS1 & WS2 V3.csv",header=TRUE,row.names=1)
#remove rows where number of purchases is <10
df=data[rowSums(data[-1])>=10,]
df<-as.matrix(df)
data.matrix=as(df,"binaryRatingMatrix")
#image(data.matrix)
model=Recommender(data.matrix,method="UBCF")
predictions<-predict(model,data.matrix,n=5)
set.seed(100)
evaluation<-evaluationScheme(data.matrix,method="split",train=0.5,given=5)
Rec.ubcf <- Recommender(getData(evaluation, "train"), "UBCF")
predict.ubcf<-predict(Rec.ubcf,getData(evaluation,"known"),type="topNList")
pred.ubcfratings<-predict(Rec.ubcf,getData(evaluation,"known"),type="ratings")
error.ubcf<-calcPredictionAccuracy(predict.ubcf,getData(evaluation,"unknown"),given=5)
setwd("Location to output data from model")
wsratings<-as(pred.ubcfratings,"matrix")
ratingrows<-c(evaluation@runsTrain)
где я позвонил colnames2<-c(wsratings[1,2:ncol(wsratings)])
Я ожидаю, что данные из столбца 2 в последний столбец в строке 1 будут считаны в вектор. Но когда я печатаю результаты, они также включают в себя информацию о рейтинге, а это не то, что мне нужно.
ratingrows<-c(evaluation@runsTrain)
содержит номера клиентов, которые я хочу вставить ниже метки строки «CustomerNumber».
Я предполагаю, что есть способ разобраться в этом с пакетом tidyr, но не очень знаком с ним. Если кто-нибудь может дать какой-нибудь совет о том, как я могу все это почистить, я был бы очень признателен.