[R] help in KNN

Uwe Ligges ligges at statistik.tu-dortmund.de
Tue Mar 1 07:51:08 CET 2016


Hmmm, this pretty much looks like homework this list is not intended 
for. Please ask your supervisor/teacher why nautodata$mydata.MPG is not 
numeric if you cannot find that out yourself.

Best,
Uwe Ligges

On 01.03.2016 00:49, Alnazer Elbedairy wrote:
> dear all
> attached you will find a csv datasets, there are many steps before these
> they work properly. but I have errors in these steps I guess. any help
> appreciated.
>
> Step1: convert the data from continuous to categorical
>
> ##nautodata is the normalized data. I did it in the previous steps.
>
> MPGCat= c(0,10,15,20,25,30, 35, 40)
> MPG <- cut(nautodata$mydata.MPG, MPGCat,labels = c(1:7))
> nautodata = data.frame(MPG, nautodata[2:7])
> nautodata
>
>
> Step 2: divided into 10 folds: as follow
>
>
> fold1= nautodata[1:39,]
> fold2= nautodata[40:79,]
> fold3= nautodata[80:119,]
> fold4= nautodata[120:159,]
> fold5= nautodata[160:199,]
> fold6= nautodata[200:139,]
> fold7= nautodata[240:279,]
> fold8= nautodata[280:319,]
> fold9= nautodata[320:359,]
> fold10= nautodata[360:398,]
>
> datafolds= list(fold1, fold2, fold3, fold4,
> fold5,fold6,fold7,fold8,fold9,fold10)
>
> step3:
> ##conduct 10-fold cross validation on KNN
>
> KNNFoldError= c(0,0,0,0,0,0,0,0,0,0)
> MGFoldError=  c(0,0,0,0,0,0,0,0,0,0)
>
> for (i in 1:10)
> {
> trainData = NULL
> for(j in 1:10)
> {
>    if(i !=j)
>      {
>       trainData = rbind(trainData, datafolds[[j]])
>      }
>    else
>      testData = datafolds[[j]]
> }
> #print (trainData)
> #print(testData)
>    targetData = trainData$MPG
>    testTargetData = testData$MPG
>
>    trainData$MPG= NULL
>    testData$MPG = NULL
>
>    M1 = knn(train=trainData, test=testData, cl=targetData, k=20)
>    M2 = MajorityGuessing(testData,MPGCat)
>    print(table(testTargetData,M1))
>    print(testTargetData)
>    print(M1)
>    print(M2)
>
>    KNNFoldError[i] = round(mean(testTargetData != M1), 3)
>    MGFoldError[i] = round(mean(testTargetData != M2), 3)
>    print(KNNFoldError)
>    print(MGFoldError)
> }
>
> ## these are the error I got:
> Quitting from lines 80-86 (Lab3 at M.Rmd)
> Error in cut.default(nautodata$mydata.MPG, MPGCat, labels = c(1:7)) :
>    'x' must be numeric
> Calls: <Anonymous> ... withCallingHandlers -> withVisible -> eval -> eval
> -> cut -> cut.default
> Execution halted
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
>



More information about the R-help mailing list