使用以下代码在r中创建conditionMatrix
时遇到了一些困难。
我已经搜索了这个问题,发现它似乎确实是火车和测试系统之间的差异,但是我绝对不知道是什么原因造成了这个差异。
# Create DB with Topics
doctopicDB <- data.frame(doc_topic_distr)
doctopicDB <- cbind(doc_id = rownames(doctopicDB), doctopicDB)
doctopicDB$doc_id <- as.numeric(as.character(doctopicDB$doc_id))
# Merge Topic Distr with rawDB
predictionDB <- merge(x=rawDBnoDups,
y=doctopicDB,
by="doc_id",
all=TRUE)
# Create SVM Subset: Helpful + All Topic Distributions
predictionDB <- subset(predictionDB,
select = c(6,12:(11+nTopicsLDA)))
# Binary just all factors
predictionDB <- data.frame(predictionDB[1],
(predictionDB[-1] > 0) * 1)
# Get rid of potentially NAs
predictionDB <- na.omit(predictionDB) # get rid of NA rows
testForNA <- predictionDB[rowSums(is.na(predictionDB)) > 0,] #Debugging
# Debug:
# Split a 10% Testset for Debugging purpose
#trainData <- createDataPartition(y = predictionDB$Helpful, p= 0.9, list = FALSE) ########################## Debug
#trainData <- predictionDB[-trainData,]
# Split DB in Train & Test Set ( 70/30%)
trainData <- createDataPartition(y = predictionDB$Helpful, p= 0.7, list = FALSE)
trainSet <- predictionDB[trainData,]
testSet <- predictionDB[-trainData,]
# Factorizing the target variable
trainSet[["Helpful"]] = factor(trainSet[["Helpful"]])
# Setup the training method
# - method: repeated cross-validation
# - number: number of resample iterations
# - repeats: set to compute the repeated cross-validation
trctrl <- trainControl(method = "repeatedcv",
number = 10,
repeats = 3)
#parralelize SVM Code
cl <- makeCluster(detectCores()-1) # save 1 core as spare
registerDoParallel(cl)
# machine learning code goes in here
svm_Linear <- train(Helpful ~ .,
data = trainSet,
method = "svmLinear",
trControl=trctrl,
preProcess = c("center",
"scale"),
tuneLength = 10)
stopCluster(cl)
输出:
> stopCluster(cl)
>
> test_pred <- predict(svm_Linear, newdata = testSet)
> confusionMatrix(table(test_pred, testSet$Helpful))
Error in !all.equal(nrow(data), ncol(data)) : invalid argument type
一个提示真是太棒了!
非常感谢!
//编辑:
输入;
dput(table(test_pred, testSet$Helpful))
输出:
...
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 60L,
0L, 5L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 0L,
0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
3L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L), .Dim = c(259L, 89L), .Dimnames = list(test_pred = c("0",
"000", "1", "10", "100", "101", "102", "103", "104", "105", "106",
"107", "108", "109", "11", "110", "111", "112", "113", "115",
"116", "117", "118", "119", "12", "120", "122", "123", "124",
"125", "126", "127", "129", "13", "130", "132", "133", "135",
"136", "137", "138", "139", "14", "141", "142", "144", "145",
"147", "148", "149", "15", "150", "151", "155", "156", "157",
"158", "159", "16", "161", "162", "163", "164", "166", "168",
"169", "17", "173", "174", "176", "179", "18", "181", "184",
"188", "19", "190", "191", "192", "197", "198", "2", "20", "200",
"205", "21", "212", "213", "215", "217", "219", "22", "221",
"223", "224", "226", "228", "229", "23", "231", "232", "237",
"24", "241", "242", "243", "245", "247", "25", "251", "254",
"258", "259", "26", "261", "262", "265", "269", "27", "271",
"274", "277", "279", "28", "285", "287", "29", "294", "295",
"297", "3", "30", "301", "306", "31", "310", "313", "315", "316",
"32", "323", "325", "328", "33", "334", "34", "340", "344", "347",
"348", "35", "353", "36", "361", "37", "38", "382", "383", "39",
"393", "396", "4", "40", "405", "408", "41", "410", "415", "42",
"43", "431", "438", "44", "440", "443", "448", "45", "459", "46",
"47", "474", "48", "482", "485", "49", "492", "5", "50", "51",
"52", "53", "530", "538", "54", "546", "549", "55", "553", "56",
"563", "57", "570", "571", "58", "59", "6", "60", "61", "62",
"624", "63", "64", "65", "66", "661", "663", "667", "67", "68",
"69", "7", "70", "706", "71", "72", "723", "73", "738", "74",
"75", "76", "77", "78", "79", "8", "80", "81", "813", "817",
"82", "825", "83", "84", "85", "86", "88", "89", "9", "90", "91",
"92", "93", "94", "942", "95", "96", "965", "97", "98"), c("0",
"1", "10", "103", "11", "116", "117", "12", "122", "13", "137",
"14", "15", "155", "157", "158", "16", "17", "18", "19", "2",
"20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "3",
"30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "4",
"40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "5",
"50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "6",
"60", "61", "62", "63", "65", "66", "67", "69", "7", "70", "71",
"72", "75", "77", "79", "8", "80", "81", "82", "83", "84", "85",
"9", "90")), class = "table")