machine à vecteurs de support de train caret erreur kernlab classe des calculs de probabilité a échoué; retour NAs
j'ai des données et Y la variable est un facteur de Bon ou de Mauvais. Je suis la construction d'une machine à vecteurs de Support à l'aide du "train" de la méthode de "signe". À l'aide du "train" de la fonction, j'ai été en mesure de finaliser les valeurs des différents paramètres de réglage et a obtenu le final de la machine à vecteurs de Support . Pour les données de test, je peux prédire la "classe". Mais lorsque je tente de prédire les probabilités de données de test, j'obtiens erreur ci-dessous (par exemple, mon modèle me dit que le 1er point de données dans les données de test a y='bon', mais je veux savoir quelle est la probabilité d'obtenir des "bons" ...en général, dans le cas de la machine à vecteurs de support, le modèle calcule la probabilité de prédiction..si la variable Y a 2 résultats puis modèle permettront de prédire la probabilité de chaque résultat. Le résultat qui a la probabilité maximale est considérée comme la solution finale)
**Warning message:
In probFunction(method, modelFit, ppUnk) :
kernlab class probability calculations failed; returning NAs**
exemple de code ci-dessous
library(caret)
trainset <- data.frame(
class=factor(c("Good", "Bad", "Good", "Good", "Bad", "Good", "Good", "Good", "Good", "Bad", "Bad", "Bad")),
age=c(67, 22, 49, 45, 53, 35, 53, 35, 61, 28, 25, 24))
testset <- data.frame(
class=factor(c("Good", "Bad", "Good" )),
age=c(64, 23, 50))
library(kernlab)
set.seed(231)
### finding optimal value of a tuning parameter
sigDist <- sigest(class ~ ., data = trainset, frac = 1)
### creating a grid of two tuning parameters, .sigma comes from the earlier line. we are trying to find best value of .C
svmTuneGrid <- data.frame(.sigma = sigDist[1], .C = 2^(-2:7))
set.seed(1056)
svmFit <- train(class ~ .,
data = trainset,
method = "svmRadial",
preProc = c("center", "scale"),
tuneGrid = svmTuneGrid,
trControl = trainControl(method = "repeatedcv", repeats = 5))
### svmFit finds the optimal values of tuning parameters and builds the model using the best parameters
### to predict class of test data
predictedClasses <- predict(svmFit, testset )
str(predictedClasses)
### predict probablities but i get an error
predictedProbs <- predict(svmFit, newdata = testset , type = "prob")
head(predictedProbs)
nouvelle question en dessous de cette ligne: comme par ci-dessous de sortie il y a 9 vecteurs de soutien. comment reconnaître de 12 la formation de points de données qui sont ces 9?
svmFit$finalModel
Machine à Vecteurs de Support un objet de la classe "ksvm"
SV type: C-svc (classification)
paramètre : coût C = 1
Gaussien Radiale de Base de la fonction noyau.
Hyper-paramètre : sigma = 0.72640759446315
Nombre de Vecteurs de Soutien : 9
Valeur De La Fonction Objectif : -5.6994
La formation d'erreur : 0.083333
dput(head( your_data, 30))
, et vous pouvez envisager d'utiliser vos casquettes-clé le plus souvent le cas échéant et, moins souvent, lorsqu'il n'est pas.d'accord avec vos entrées, j'ai ajouté l'exemple de code...et essayé de modifier mon capitalisation
J'ai édité ma réponse pour répondre à vos questions supplémentaires. Pour une raison quelconque, le modèle n'extrait 8 Sv.
OriginalL'auteur user2543622 | 2013-07-24
Vous devez vous connecter pour publier un commentaire.
Dans le train de contrôle de l'instruction, vous devez spécifier si vous souhaitez que la classe des probabilités
classProbs = TRUE
retourné.donnant les probabilités d'être dans le Bon ou Mauvais de la classe dans l'ensemble de données de test:
MODIFIER
Pour répondre à ta nouvelle question, vous pouvez accéder à la position du support de vecteurs dans votre jeu de données d'origine avec
alphaindex(svmFit$finalModel)
avec des coefficientscoef(svmFit$finalModel)
.si possible, veuillez répondre à ma question. j'ai ajouté à ma question ci-dessous de la ligne "nouvelle question en dessous de cette ligne" dans ma question initiale
merci...je fatigué ces commandes...font-ils de retour alpha/poids de points de données? j'ai trouvé encore une commande alphaindex(svmFit$finalModel)..je suppose que renvoie la position de points de données qui sont les vecteurs de soutien, ai-je raison?
Vous avez raison - alphaindex renvoie la position de points de données utilisés comme vecteurs de soutien, et coef renvoie la signature de poids, où le signe est positif pour sv appartenant au premier groupe et négatif appartenant à la seconde.
une chose de plus svmFit$finalModel de sortie de la commande, déclare que "SV type: C-svc (classification) paramètre : coût C = 1". est-ce à dire que le poids maximum que tout vecteur de soutien à l'aura est 1? je l'ai testé sur nos données, et je ne vois pas de poids >1, mais souhaitez obtenir votre nod..
OriginalL'auteur Jim M.