[R] error in plotting model from kernlab

Luigi Marongiu m@rongiu@luigi @ending from gm@il@com
Tue Jan 8 16:40:05 CET 2019


Hi,
the maintainer hasn't answered yet. The problem with 'acc' is that yes
the objects are not of the same length but they should be: according
to the manual, ' table(pred, df$cons)' would return a 2x2 matrix of
the results. This is not the case, so there is a problem with the
model -- that is why there is no plotting either -- even if an object
of class ksvm had been created.

On Tue, Jan 8, 2019 at 4:12 PM PIKAL Petr <petr.pikal using precheza.cz> wrote:
>
> Hi
>
> I cannot help you with kernlab
>
> > >  pred = predict(mod, df, type = "probabilities")
> > >  acc = table(pred, df$cons)
> > Error in table(pred, df$cons) : all arguments must have the same length
> > which again is weird since mod, df and df$cons are made from the same
> > dataframe.
>
> Why not check length of those objects?
>
> length(pred)
> length(df$cons)
>
> > > plot(mod, data = df)
> > > kernlab::plot(mod, data = df)
> > but I get this error:
> >
> > Error in .local(x, ...) :
> >   Only plots of classification ksvm objects supported
> >
>
> seems to me selfexplanatory. What did maintainer said about it?
>
> Cheers
> Petr
>
>
> > -----Original Message-----
> > From: R-help <r-help-bounces using r-project.org> On Behalf Of Luigi Marongiu
> > Sent: Monday, January 7, 2019 1:26 PM
> > To: r-help <r-help using r-project.org>
> > Subject: [R] error in plotting model from kernlab
> >
> > Dear all,
> > I have a set of data in this form:
> > > str <data>
> > 'data.frame': 1574 obs. of  14 variables:
> >  $ serial: int  12751 14157 7226 15663 11088 10464 1003 10427 11934 3999
> > ...
> >  $ plate : int  43 46 22 50 38 37 3 37 41 11 ...
> >  $ well  : int  79 333 314 303 336 96 235 59 30 159 ...
> >  $ sample: int  266 295 151 327 231 218 21 218 249 84 ...
> >  $ target: chr  "HEV 2-AI5IQWR" "Dientamoeba fragilis-AIHSPMK" "Astro
> > 2 Liu-AI20UKB" "C difficile GDH-AIS086J" ...
> >  $ ori.ct: num  0 33.5 0 0 0 ...
> >  $ ct.out: int  0 1 0 0 0 0 0 1 0 0 ...
> >  $ mr    : num  -0.002 0.109 0.002 0 0.001 0.006 0.015 0.119 0.003 0.004 ...
> >  $ fcn   : num  44.54 36.74 6.78 43.09 44.87 ...
> >  $ mr.out: int  0 1 0 0 0 0 0 1 0 0 ...
> >  $ oper.a: int  0 1 0 0 0 0 0 1 0 0 ...
> >  $ oper.b: int  0 1 0 0 0 0 0 1 0 0 ...
> >  $ oper.c: int  0 1 0 0 0 0 0 1 0 0 ...
> >  $ cons  : int  0 1 0 0 0 0 0 1 0 0 ...
> > from which I have selected two numerical variables correspondig to x
> > and y in a Cartesian plane and one outcome variable (z):
> > > df = subset(t.data, select = c(mr, fcn, cons))
> > >  df$cons = factor(c("negative", "positive"))
> > > head(df)
> >       mr   fcn     cons
> > 1 -0.002 44.54 negative
> > 2  0.109 36.74 positive
> > 3  0.002  6.78 negative
> > 4  0.000 43.09 positive
> > 5  0.001 44.87 negative
> > 6  0.006  2.82 positive
> >
> > I created an SVM the method with the KERNLAB package with:
> > > mod = ksvm(cons ~ mr+fcn, # i prefer it to the more canonical "." but the
> > outcome is the same
> >             data = df,
> >             type = "C-bsvc",
> >             kernel = "rbfdot",
> >             kpar = "automatic",
> >             C = 10,
> >             prob.model = TRUE)
> >
> > > mod
> > Support Vector Machine object of class "ksvm"
> >
> > SV type: C-bsvc  (classification)
> >  parameter : cost C = 10
> >
> > Gaussian Radial Basis kernel function.
> >  Hyperparameter : sigma =  42.0923201429106
> >
> > Number of Support Vectors : 1439
> >
> > Objective Function Value : -12873.45
> > Training error : 0.39263
> > Probability model included.
> >
> > First of all, I am not sure if the model worked because 1439 support
> > vectors out of 1574 data points means that over 90% of the data is
> > required to fix the hyperplane. this does not look like a model but a
> > patch. Secondly, the prediction is rubbish -- but this is another
> > story -- and when I try to create a confusion table of the processed
> > data I get:
> > >  pred = predict(mod, df, type = "probabilities")
> > >  acc = table(pred, df$cons)
> > Error in table(pred, df$cons) : all arguments must have the same length
> > which again is weird since mod, df and df$cons are made from the same
> > dataframe.
> >
> > Coming to the actual error, I tried to plot the model with:
> > > plot(mod, data = df)
> > > kernlab::plot(mod, data = df)
> > but I get this error:
> >
> > Error in .local(x, ...) :
> >   Only plots of classification ksvm objects supported
> >
> > Would you know what I am missing?
> > Thank you
> > --
> > Best regards,
> > Luigi
> >
> > ______________________________________________
> > R-help using 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.
> Osobní údaje: Informace o zpracování a ochraně osobních údajů obchodních partnerů PRECHEZA a.s. jsou zveřejněny na: https://www.precheza.cz/zasady-ochrany-osobnich-udaju/ | Information about processing and protection of business partner’s personal data are available on website: https://www.precheza.cz/en/personal-data-protection-principles/
> Důvěrnost: Tento e-mail a jakékoliv k němu připojené dokumenty jsou důvěrné a podléhají tomuto právně závaznému prohláąení o vyloučení odpovědnosti: https://www.precheza.cz/01-dovetek/ | This email and any documents attached to it may be confidential and are subject to the legally binding disclaimer: https://www.precheza.cz/en/01-disclaimer/
>


-- 
Best regards,
Luigi



More information about the R-help mailing list