I have 20 classes, and I want to classify and predict class label:

model=train(x=df_train,y=train_class, method="nnet")

The output of pred is real number (it performs regression), How can I ask to return me prediction of class labels?


This question might be better suited to stackoverflow, though you have not given a reproducible example.

The following predicts the species class label for the iris dataset, adapting the example from ?train

TestRows     <- c(sample(50,15), sample(50,15)+50, sample(50,15)+100)
TrainData    <- iris[-TestRows,1:4]
TrainClasses <- iris[-TestRows,5]
TestData     <- iris[TestRows,1:4]
TestClasses  <- iris[TestRows,5]
nnetFit <- train(x=TrainData, y=TrainClasses,
                 method = "nnet",
                 preProcess = "range", 
                 tuneLength = 2,
                 trace = FALSE,
                 maxit = 100)

and gives the following result for the training set:

> table(TrainClasses, predict(nnetFit)) 

TrainClasses setosa versicolor virginica
  setosa         35          0         0
  versicolor      0         34         1
  virginica       0          1        34

and for the test set

> table(TestClasses,  predict(nnetFit,TestData))  

TestClasses  setosa versicolor virginica
  setosa         15          0         0
  versicolor      0         15         0
  virginica       0          3        12

which I find surprisingly accurate for the versicolor/virginica distinction

  • $\begingroup$ Thank you for the solution. But, when I apply to my data predict(nnetFit,TestData)[1] is 0.9923. It returns regression prediction of my data. I think the problem comes from levels of data. levels(iris) shows the three classes but levels(myData) is Null. Do this levels is problem? how to fix this? $\endgroup$ – Cina Apr 16 '17 at 7:11
  • $\begingroup$ No - this works without levels in the input data. But without seeing your data, it is difficult to say much more. What type of data is your train_class $\endgroup$ – Henry Apr 16 '17 at 8:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.