2012-12-17 15 views
8

के साथ एसवीएम वर्गीकरण मैं शायद यहां एक बहुत ही सरल (और बेवकूफ) गलती कर रहा हूं लेकिन मैं इसे समझ नहीं सकता। मैं Kaggle (Digit Recognizer) से कुछ डेटा के साथ खेल रहा हूं और कुछ वर्गीकरण करने के लिए कैरेट पैकेज के साथ एसवीएम का उपयोग करने की कोशिश कर रहा हूं। यदि मैं केवल लेबल मानों को फ़ंक्शन में संख्यात्मक प्रकार के रूप में प्लग करता हूं, तो train कैरेट में फ़ंक्शन प्रतिगमन के लिए डिफ़ॉल्ट लगता है और प्रदर्शन काफी खराब है। तो मैंने आगे की कोशिश की है कि इसे factor() फ़ंक्शन के साथ एक कारक में परिवर्तित करें और SVM वर्गीकरण को चलाने और चलाने का प्रयास करें।कैरेट त्रुटि (बेसिक)

library(caret) 
library(doMC) 
registerDoMC(cores = 4) 

ytrain <- factor(sample(0:9, 1000, replace=TRUE)) 
xtrain <- matrix(runif(252 * 1000,0 , 255), 1000, 252) 

preProcValues <- preProcess(xtrain, method = c("center", "scale")) 
transformerdxtrain <- predict(preProcValues, xtrain) 

fitControl <- trainControl(method = "repeatedcv", number = 10, repeats = 10) 
svmFit <- train(transformerdxtrain[1:10,], ytrain[1:10], method = "svmradial") 

मैं इस त्रुटि मिलती है: यहाँ कुछ कोड मैं कुछ डमी डेटा जहां पैदा करते हैं और उसके बाद कैरट में प्लग है

Error in kernelMult(kernelf(object), newdata, xmatrix(object)[[p]], coef(object)[[p]]) : 
    dims [product 20] do not match the length of object [0] 
In addition: Warning messages: 
1: In train.default(transformerdxtrain[1:10, ], ytrain[1:10], method = "svmradial") : 
    At least one of the class levels are not valid R variables names; This may cause errors if class probabilities are generated because the variables names will be converted to: X0, X1, X2, X3, X4, X5, X6, X7, X8, X9 
2: In nominalTrainWorkflow(dat = trainData, info = trainInfo, method = method, : 
    There were missing values in resampled performance measures. 

किसी मुझे बता सकते हैं मैं गलत क्या कर रहा हूँ? धन्यवाद!

+0

त्रुटि संदेश सुंदर आत्म व्याख्यात्मक है, है ना? अपने कारक स्तर को 0, 1, ... 9 के अलावा कुछ और कॉल करें। – joran

+0

@ जोरन चेतावनी संदेश, नहीं है? – agstudy

+0

@agstudy हाँ, धन्यवाद। यह निश्चित रूप से एक शर्मनाक चेतावनी है (ओह !, मेरा मतलब है त्रुटि!) मेरे हिस्से पर! :) – joran

उत्तर

2

आप 10 विभिन्न वर्गों है और अभी तक आप केवल train() में 10 मामलों सहित रहे हैं। इसका अर्थ यह है कि जब आप पुन: नमूना करते हैं तो आपके क्लासिफायर के व्यक्तिगत उदाहरणों में अक्सर आपके पास 10 कक्षाएं नहीं होतीं। train() इन अलग-अलग श्रेणी के एसवीएम के परिणामों को संयोजित करने में कठिनाई हो रही है।

आप के मामलों की संख्या बढ़ रही है, वर्गों की संख्या कम, या यहाँ तक कि एक अलग क्लासिफ़ायर का उपयोग के कुछ संयोजन करके इसे ठीक कर सकते हैं।

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