不平衡与此错误无关。第一, response_predict 是一个数组,不是矩阵,不是数据帧。因此,最后一行应该是
response_predict
predicted <- as.factor(colnames(response_predict[, , 1])[1:3][apply(response_predict[, 1:3, 1], 1, which.max)])
也就是说,由于我们正在处理三维数组,因此我们有三个索引。也 response_predict[1:3] 意味着只有三个数字而不是三个数组列。从那以后 response_predict 不是数据框, names 不会给你它的列名。
response_predict[1:3]
names
但实际上所有这些都可以编写,假设有三个可能的类,就像
predicted <- as.factor(colnames(response_predict)[apply(response_predict, 1, which.max)])
哪个更清洁。我猜你也知道
predicted <- as.factor(predict(CV, data.matrix(testdata), type = "class"))
也给出了相同的结果。