2016-04-16 13 views
7

Tôi đang cố gắng điều tra mô hình của mình bằng R với xgboost. Mô hình đào tạo nói chung hoạt động tốt, nhưng với dấu sót nó là một số vấn đề với số liệu.R Metric RMSE không áp dụng cho các kiểu phân loại

Tôi đã cố gắng đặt yếu tố cho cột lớp, bit vẫn không có kết quả.

Dữ liệu của tôi

ID var1var2TARGET 
1 5 0 1 
2 4 3 1 
3 4 2 0 
4 3 1 0 
5 2 4 1 
6 1 2 1 
7 5 3 1 
8 4 1 0 
9 4 1 0 
10 2 4 1 
11 5 5 1 

Đối với điều này tôi

train <- read.csv() 
train.y <- train$TARGET 
train$TARGET <- NULL 
train$ID <- NULL 
train.y <- lapply(train.y, factor) 

Sau đó, tôi chuẩn bị các thông số mô hình

xgb_grid_1 = expand.grid(
    nrounds = 1000, 
    eta = c(0.01, 0.001, 0.0001), 
    max_depth = c(2, 4, 6, 8, 10), 
    gamma = 1 
) 

# pack the training control parameters 
xgb_trcontrol_1 = trainControl(
    method = "cv", 
    number = 5, 
    verboseIter = TRUE, 
    returnData = FALSE, 
    returnResamp = "all",              # save losses across all models 
    classProbs = TRUE,               # set to TRUE for AUC to be computed 
    summaryFunction = twoClassSummary, 
    allowParallel = TRUE 
) 

Và sau tất cả điều đó, tôi gọi chức năng đào tạo

xgb_train_1 = train(
    x = train, 
    y = train.y, 
    trControl = xgb_trcontrol_1, 
    tuneGrid = xgb_grid_1, 
    method = "xgbTree" 
) 

Nó mang lại cho tôi

Error in train.default(x = train, y = train.y, trControl = xgb_trcontrol_1, : 
    Metric RMSE not applicable for classification models 

Tại sao nó có thể?

+0

rmse được sử dụng cho các biến phụ thuộc liên tục – user20650

+0

@ user20650 Bạn có thể đề xuất những gì tôi nên thay đổi không? Tôi lấy ví dụ này từ một trang có cùng vấn đề phân loại. Có vẻ như tôi đã bỏ lỡ một số điểm – paveltr

+0

Tôi không quen với dấu mũ, nhưng nhìn vào '? Train' có vẻ như đối số' metric' đang được đặt thành 'rmse' (*' metric = ifelse (is.factor (y), " Vì vậy, tôi sẽ cố gắng và thiết lập kết quả của tôi thành một nhân tố bởi 'train.y <- factor (train $ TARGET)' hay cách khác đặt 'metric =" Accuracy "' – user20650

Trả lời

11

Bạn nên cố gắng thay đổi train.y <- lapply(train.y, factor) thành train.y <- factor(train.y, labels = c("yes", "no")).

caret thường than phiền nếu nhãn là 0 hoặc 1, vì vậy, hãy thử thay đổi nhãn.

+1

Cảm ơn, cuối cùng tôi đã nhận nó – paveltr

Các vấn đề liên quan