我正在R中创建一个堆叠模型来预测个人排名。我分别创建的两个模型是KNN和NeuralNetwork。创建堆叠模型时,我遇到了“对“字符”类的对象没有适用的“预测”适用方法的问题。
我尝试将等级观测值转换为“ 0,1”,但是由于某种原因,即使我添加了代码,R也不会将它们识别为等级。导致错误的行在代码的两边都有**。
library(caretEnsemble)
library(readxl)
library(caret)
library(neuralnet)
Logs1 <- read_excel("C:/Users/Abdulazizs/Desktop/Projects/Indirect/Logisitc Idea.xlsx",
sheet = "Pivot Table", n_max = 5000)
Logs1$Direct_or_Indirect <- NULL
Logs1$parentaccount <- NULL
Logs1$Rank <- as.factor((Logs1$Rank))
head(Logs1)
set.seed(32942899)
##Seperating Data
logpart <- Logs1[sample(nrow(Logs1)),]
split <- floor(nrow(Logs1)/3)
trainlog <- Logs1[(split+1):(split*2), ]
testlog <- Logs1[(split*2+1):nrow(Logs1), ]
validtest <- Logs1[0:split,]
TrainingParameters1 <- trainControl(method = "repeatedcv", number = 10, repeats=10)
table(testlog$Rank)
##Models
KNN1 <- train(Rank~., trainlog, method = "knn", trControl= TrainingParameters1, preProcess=c("scale","center"), na.action = na.omit)
NModel <- train(Rank~., trainlog, method = "nnet", trControl= TrainingParameters,preProcess=c("scale","center"),na.action = na.omit)
##Predicting off of test data
KNNPrediction <-predict(KNN1, newdata = testlog)
NMPred<-predict(NModel, testlog, type = "raw")
##Placing Predicts vs actual in same table
KNNTable<- table(KNNPrediction, testlog$Rank, useNA="ifany")
NNTable<- table(NMPred, testlog$Rank, useNA="ifany")
## Confusion Matrix
KNNCnn <- confusionMatrix(KNNTable)
NNCnn <- confusionMatrix(NNTable)
#####
Test_KNN_NNTable <- data.frame(NMPred,KNNPrediction, testlog, stringsAsFactors = F )
modelStack <- train(Rank~ ., data = Test_KNN_NNTable, method = "rf", na.action = na.omit)
#################################################################START OF STACKED MODEL SECTION#################################################################################
## Creating new predicitions
TestNN<- predict(NModel, newdata = validtest)
TestKNN <- predict(KNN1, newdata = validtest)
Test_KNN_NNTable2 <- data.frame(TestNN,TestKNN, validtest, stringsAsFactors = F )
length(TestNN)
length(TestKNN)
modelStack <- modelStack[1:1666]
***Test_KKN_NN_Pred <- predict(modelStack, Test_KNN_NNTable2 )***
## Checking lengths
length(Test_KKN_NN_Pred)
length(TestKNN)
length(TestNN)
length(validtest$Rank)
##Creating new tables
Everything_Combined <- table(Test_KKN_NN_Pred[1:1666], validtest$Rank, useNA="ifany")
KNN_New_Table <- table(TestKNN, validtest$Rank, useNA="ifany")
NN_New_table <- table(TestNN, validtest$Rank, useNA="ifany")
##New COnfusion Matrix
confusionMatrix(KNN_New_Table)
confusionMatrix(NN_New_table)
confusionMatrix(Everything_Combined)
```
Expected results are: Creating a more accurate model from stacking.