이 오류가 발생하는 이유는 무엇입니까? 은 무슨 뜻인가요? 나는 그 방법을 사용하지 않았습니까?
오류 발생 : naive_model <-naiveBayes (X_train, Y_train)
오류:
Error in tapply(var, y, mean, na.rm = TRUE) :
arguments must have same length
암호:
library(e1071)
#Naive Bayes
#Learn Time
start.time <- Sys.time()
naive_model <-naiveBayes(X_train,Y_train)
end.time <- Sys.time()
time.taken <- end.time - start.time
naivebayes_Learnruntime[i]<- time.taken
#Prediction Time
start.time <- Sys.time()
pred = predict(naive_model,X_test)
end.time <- Sys.time()
time.taken <- end.time - start.time
naivebayes_Predictruntime [i]<- time.taken
전체 코드
balance_data = read.table(file.choose(), sep=",")
attach(balance_data)
x <- balance_data[, c(2,3,4,5)]
y <- balance_data[,1]
X_train <-head(x,500)
Y_train <- head(y,100)
X_test <-tail(x,122)
str(X_train)
str(X_test)
str(Y_train)
decisionTree_Learnruntime = c()
svm_Learnruntime = c()
naivebayes_Learnruntime = c()
knn_Learnruntime = c()
decisionTree_Predictruntime = c()
svm_Predictruntime = c()
naivebayes_Predictruntime =c()
knn_Predictruntime = c()
for (i in 1:20){
library(e1071)
library(caret)
#SVM Model
start.time <- Sys.time()
svm_model <- svm(X_train,Y_train)
end.time <- Sys.time()
time.taken <- end.time - start.time
svm_Learnruntime[i]<- time.taken
#Prediction Time
start.time <- Sys.time()
pred <- predict(svm_model,X_test)
end.time <- Sys.time()
time.taken <- end.time - start.time
svm_Predictruntime[i]<- time.taken
library(rpart)
#Decision Tree
#Learn Time
start.time <- Sys.time()
tree_model <- rpart(X_train,Y_train)
end.time <- Sys.time()
time.taken <- end.time - start.time
decisionTree_Learnruntime[i]<- time.taken
#Prediction Time
start.time <- Sys.time()
pred = predict(tree_model,X_test)
end.time <- Sys.time()
time.taken <- end.time - start.time
decisionTree_Predictruntime[i] <- time.taken
library(e1071)
#Naive Bayes
#Learn Time
start.time <- Sys.time()
naive_model <-naiveBayes(X_train,Y_train)
end.time <- Sys.time()
time.taken <- end.time - start.time
naivebayes_Learnruntime[i]<- time.taken
#Prediction Time
start.time <- Sys.time()
pred = predict(naive_model,X_test)
end.time <- Sys.time()
time.taken <- end.time - start.time
naivebayes_Predictruntime [i]<- time.taken
}
svm_Learnruntime
svm_Predictruntime
decisionTree_Learnruntime
decisionTree_Predictruntime
naivebayes_Learnruntime
naivebayes_Predictruntime
이 오류는 동일해야하는 naiveBayes()
입력 ( X_train
및 Y_train
) 길이의 차이를 나타냅니다 (즉, x 데이터의 모든 행에 해당하는 y 값). 에서
X_train <- head(x,500)
Y_train <- head(y,100)
우리는 입력이 다른 것을 볼 수 있습니다 (1500 대 1100 행 balance_data
). Y_train
의 해당 행에서 결과 데이터를 할당하면 X_train
이 오류 메시지가 해결됩니다. 예를 들어 다음을 사용할 수 있습니다.
trainset <- 1:500 # to be similar to your 'head(x,500)'
# create train/test
X_train <- balance_data[trainset, -1]
Y_train <- balance_data[trainset, 1]
X_test <- balance_data[-trainset, -1]
# model and predict
naive_model <- naiveBayes(X_train, Y_train)
pred <- predict(naive_model, X_test)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다