Bir sınıflandırma ağacını (rpart'ta) bir dizi kural halinde düzenlemek mi?


11

Her sınıf için üretilen karar kurallarını düzenlemek için rpart (R'de) kullanılarak karmaşık bir sınıflandırma ağacının inşa edilmesinin bir yolu var mı? Yani büyük bir ağaç almak yerine, sınıfların her biri için bir dizi kuralımız var mı?

(Öyleyse nasıl?)

Aşağıda örnekleri göstermek için basit bir kod örneği verilmiştir:

fit <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)

Teşekkürler.

Yanıtlar:


9

Böyle bir işlevsellik (veya yakın bir tane ), sadece komut satırından kontrol etsem de, RJournal 1/2 2009'da (s. 50) açıklandığı gibi çıngırak paketinde mevcut gibi görünüyor .

Örneğin, aşağıdaki çıktıyı verir:

 Rule number: 3 [Kyphosis=present cover=19 (23%) prob=0.58]
   Start< 8.5

 Rule number: 23 [Kyphosis=present cover=7 (9%) prob=0.57]
   Start>=8.5
   Start< 14.5
   Age>=55
   Age< 111

 Rule number: 22 [Kyphosis=absent cover=14 (17%) prob=0.14]
   Start>=8.5
   Start< 14.5
   Age>=55
   Age>=111

 Rule number: 10 [Kyphosis=absent cover=12 (15%) prob=0.00]
   Start>=8.5
   Start< 14.5
   Age< 55

 Rule number: 4 [Kyphosis=absent cover=29 (36%) prob=0.00]
   Start>=8.5
   Start>=14.5

Bu çıktıyı elde rattle/R/rpart.Retmek Rtxt()için, asRules.rpart()işlevdeki iki çağrıyı kaldırdıktan sonra kaynak alanım (kaynak paketten) çalışma alanımda kaynakladım (ayrıca değiştirebilirsiniz print). Sonra, sadece yazıyorum

> asRules(fit)

Terminal olmayan yapraklar için de kurallar yazdırmak mümkün müdür?
user1700890

3

Rpart.plot paket sürümü 3.0 (2018 Temmuz) bir işlevi vardır rpart.rulesbir ağaç için bir dizi kural oluşturulması için. Örneğin

library(rpart.plot)
fit <- rpart(Kyphosis ~ Age + Number + Start, data=kyphosis)
rpart.rules(fit)

verir

Kyphosis
    0.00 when Start >=      15
    0.00 when Start is 9 to 15 & Age <  55
    0.14 when Start is 9 to 15 & Age >=       111
    0.57 when Start is 9 to 15 & Age is 55 to 111
    0.58 when Start <  9

Daha fazla örnek için rpart.plot skeçinin 4. Bölümüne bakın .


Harika referans, kuralın yanında yaprak numarası olması da çok yararlı olacaktır
user1700890

1
rpart.rules(fit, nn=TRUE)Düğüm numaralarını (yaprak numaraları olarak da bilinir) almak için kullanın .
Stephen Milborrow
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.