2016-04-16 10 views
7

के लिए लागू नहीं है मैं xgboost के साथ आर के साथ अपने मॉडल की जांच करने की कोशिश कर रहा हूं। सामान्य रूप से प्रशिक्षण मॉडल अच्छी तरह से काम करता है, लेकिन देखभाल के साथ यह मीट्रिक के साथ कुछ समस्या है।आर मेट्रिक आरएमएसई वर्गीकरण मॉडल

मैंने कक्षा कॉलम के लिए एक कारक सेट करने का प्रयास किया, लेकिन अभी भी कोई परिणाम नहीं है।

मेरे डेटा

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 

इसके लिए मैं

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

तो मैं मॉडल मापदंडों

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 
) 

और उस की सब के बाद तैयार है, मैं फोन ट्रेन समारोह

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

यह मुझे देता है

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

यह क्यों हो सकता है?

+0

आरएमएसई निरंतर निर्भर चर के लिए उपयोग किया जाता है – user20650

+0

@ user20650 क्या आप सुझाव दे सकते हैं कि मुझे क्या बदलना चाहिए? मैंने इस उदाहरण को एक ही वर्गीकरण समस्या के साथ एक साइट से लिया। ऐसा लगता है कि मुझे कुछ बिंदु – paveltr

+0

याद आया, मैं कैरेट से परिचित नहीं हूं, लेकिन 'ट्रेन' को देखकर ऐसा लगता है कि 'मीट्रिक' तर्क 'rmse' (* 'metric = ifelse (is.factor (y)," पर सेट किया जा रहा है। शुद्धता "," आरएमएसई "' *), इसलिए मैं अपने परिणाम को 'train.y <- कारक (ट्रेन $ TARGET) द्वारा किसी कारक में आज़माकर सेट करूंगा या अन्यथा स्पष्ट रूप से' मीट्रिक = "शुद्धता सेट करें '' – user20650

उत्तर

11

आपको train.y <- lapply(train.y, factor) से train.y <- factor(train.y, labels = c("yes", "no")) बदलने की कोशिश करनी चाहिए।

caret आमतौर पर शिकायत करता है कि लेबल 0 या 1 हैं, इसलिए इसे बदलने का प्रयास करें।

+1

धन्यवाद, अंततः मुझे यह मिला – paveltr

संबंधित मुद्दे