rpart

2011-02-24 9 views
6

का उपयोग कर एक रिग्रेशन पेड़ में संबंधित नोड के लिए खोजें मैं आर के लिए काफी नया हूं और मैं एक सुंदर गूंगा समस्या से फंस गया हूं।rpart

मैं कुछ वर्गीकरण और कुछ पूर्वानुमान करने के लिए rpart पैकेज का उपयोग कर एक रिग्रेशन पेड़ को कैलिब्रेट कर रहा हूं।

आर के लिए धन्यवाद अंशांकन भाग करना आसान है और नियंत्रण में आसान है।

#the package rpart is needed 
library(rpart) 

# Loading of a big data file used for calibration 
my_data <- read.csv("my_file.csv", sep=",", header=TRUE) 

# Regression tree calibration 
tree <- rpart(Ratio ~ Attribute1 + Attribute2 + Attribute3 + 
         Attribute4 + Attribute5, 
         method="anova", data=my_data, 
         control=rpart.control(minsplit=100, cp=0.0001)) 

के बाद एक बड़ा निर्णय पेड़ कैलिब्रेटेड रहा है, मैं चाहता हूँ, किसी दिए गए डेटा नमूना के लिए कुछ नए डेटा की इसी क्लस्टर (और इस प्रकार पूर्वानुमानित मान) को खोजने के लिए।
predict फ़ंक्शन आवश्यकता के लिए बिल्कुल सही लगता है।

# read validation data 
validationData <-read.csv("my_sample.csv", sep=",", header=TRUE) 

# search for the probability in the tree 
predict <- predict(tree, newdata=validationData, class="prob") 

# dump them in a file 
write.table(predict, file="dump.txt") 

हालांकि predict विधि के साथ मैं सिर्फ अपनी नई तत्वों की पूर्वानुमानित अनुपात मिलता है, और मैं एक तरह से निर्णय वृक्ष का पत्ता जहाँ मेरे नए तत्व हैं नहीं मिल सकता है।

मुझे लगता है कि अनुमानित विधि को अनुपात को वापस करने के लिए उस पत्ते को मिला है, इसलिए यह बहुत आसान होना चाहिए।

वहाँ कई मापदंडों कि class= तर्क के माध्यम से भविष्यवाणी विधि को दिया जा सकता है, लेकिन एक प्रतिगमन पेड़ के लिए सभी एक ही बात (निर्णय वृक्ष का लक्ष्य विशेषता के मान) लौटने के लिए लग रहे हैं

करता है किसी को भी पता है कि निर्णय पेड़ में संबंधित नोड कैसे प्राप्त करें?

path.rpart विधि के साथ नोड का विश्लेषण करके, यह मुझे परिणामों को समझने में मदद करेगा।

+0

आप 'str()' का उपयोग कर अपने वस्तुओं की खोज करने की कोशिश की है? –

+0

किस वस्तु पर हम? – antoine

उत्तर

1

मुझे लगता है कि क्या आप चाहते हैं type="vector" बजाय class="prob" (मुझे नहीं लगता कि वर्ग की भविष्यवाणी विधि का एक स्वीकृत पैरामीटर है है), rpart डॉक्स में विस्तार से बताया है:

तो type = "वेक्टर" : भविष्यवाणी प्रतिक्रियाओं का वेक्टर। रिग्रेशन पेड़ के लिए यह के लिए नोड पर औसत प्रतिक्रिया है, पोइसन पेड़ अनुमानित प्रतिक्रिया दर है, और वर्गीकरण पेड़ के लिए यह अनुमानित वर्ग है ( संख्या के रूप में)।

11

दुर्भाग्यवश बेंजामिन का जवाब काम नहीं करता है: type="vector" अभी भी पूर्वानुमानित मान देता है।

मेरा समाधान सुंदर क्लेगी है, लेकिन मुझे नहीं लगता कि एक बेहतर तरीका है। यह चाल मॉडल के फ्रेम में संबंधित नोड संख्याओं के साथ अनुमानित वाई मानों को प्रतिस्थापित करने के लिए है।

tree2 = tree 
tree2$frame$yval = as.numeric(rownames(tree2$frame)) 
predict = predict(tree2, newdata=validationData) 

अब भविष्यवाणी के आउटपुट अनुमानित y मानों के विपरीत नोड संख्याएं होंगी।

(एक ध्यान दें:। ऊपर मेरे मामले जहां tree प्रतिगमन पेड़, नहीं एक वर्गीकरण पेड़ था में काम किया एक वर्गीकरण पेड़ के मामले में, आप शायद as.numeric छोड़ देते हैं या as.factor से बदलने की जरूरत है।)

1

आप partykit पैकेज का उपयोग कर सकते हैं:

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

library("partykit") 
fit.party <- as.party(fit) 
predict(fit.party, newdata = kyphosis[1:4, ], type = "node") 

अपने उदाहरण के लिए सिर्फ सेट

predict(as.party(tree), newdata = validationData, type = "node")