Как получить значения классификации в RWeka?

кто-нибудь может объяснить, как я получаю результаты каждого ухода в дереве решений, сделанном J48 из пакета RWeka?

Так, например, у нас есть этот набор данных радужной оболочки глаза в R:

 library(RWeka)
 m1 <- J48(Species ~ ., data = iris)
 m1

В прогнозе я хочу использовать пропорцию в отпуске. Я пытался использовать пакет Partykit, но все же он выглядит слишком сложным, чтобы просто получить пропорцию в каждом листе.

 library(partykit)
 pres <- as.party(m1)
 partykit:::.list.rules.party(pres)

По крайней мере, я получаю количество листьев в списке, но не могу найти вероятность.

pres

Model formula:
Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width

Fitted party:
[1] root
|   [2] Petal.Width <= 0.6: setosa (n = 50, err = 0.0%)
|   [3] Petal.Width > 0.6
|   |   [4] Petal.Width <= 1.7
|   |   |   [5] Petal.Length <= 4.9: versicolor (n = 48, err = 2.1%)
|   |   |   [6] Petal.Length > 4.9
|   |   |   |   [7] Petal.Width <= 1.5: virginica (n = 3, err = 0.0%)
|   |   |   |   [8] Petal.Width > 1.5: versicolor (n = 3, err = 33.3%)
|   |   [9] Petal.Width > 1.7: virginica (n = 46, err = 2.2%)

Number of inner nodes:    4
Number of terminal nodes: 5

Итак, в качестве прогноза я хочу, например, получить результат для новой точки данных, где Petal.Width> 0,6; Лепесток.Ширина ‹= 1,7; Лепесток.Длина ‹= 4,9 результат лишай 97,9%. и 2,1% прочие. Как я могу получить эти прогнозы?


person T. Beige    schedule 19.11.2019    source источник


Ответы (1)


Ваша точка зрения не является точкой. Если вы полностью укажете точку, вы можете просто вставить ее в функцию predict. Например, я сгенерирую точку, соответствующую спецификациям, но не похожую на другие точки радужной оболочки, а затем классифицирую ее.

## Generate wild new point
NewPoint = iris[1,]
NewPoint[1,3:4] = c(2.0,1.7)
NewPoint
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5            2         1.7  setosa

## Look at where the new point is
plot(iris[,3:4], pch=20, col=rainbow(3, alpha=0.3)[iris$Species])
points(NewPoint[,3:4], pch=16, col="orange")

Положение новой точки

## Get the probability from the model
predict(m1, newdata = NewPoint, type = "probability")
  setosa versicolor  virginica
1      0  0.9791667 0.02083333
person G5W    schedule 12.12.2019