मुझे यकीन नहीं है कि मैं समझता हूं कि "एकत्रित" डेटा से आपका क्या मतलब है। यदि आप हेड-अप डिजिटाइज़िंग और कक्षाओं के असाइनमेंट की बात कर रहे हैं, तो यह जीआईएस में सबसे अच्छा है। कई मुफ्त विकल्प हैं जो उपयुक्त होंगे (i..e, QGIS, GRASS)। आदर्श रूप से आपके पास अपने वर्गीकरण को प्रशिक्षित करने के लिए फ़ील्ड डेटा होगा।
यादृच्छिक जंगलों का उपयोग करके वर्गीकरण की प्रक्रिया काफी सीधे आगे है। आप "rgdal" या "maptools" का उपयोग करके अपने प्रशिक्षण डेटा (यानी, एक बिंदु आकृति) में पढ़ सकते हैं, अपने वर्णक्रमीय डेटा का उपयोग करके पढ़ सकते हैं raster::stack
, उपयोग करने वाले अपने प्रशिक्षण बिंदुओं को रेखापुंज मान असाइन करें raster:extract
और फिर इसे पास करेंrandomForest
। आरएफ को मॉडल को एक वर्गीकरण उदाहरण के रूप में पहचानने के लिए आपको अपने "वर्ग" कॉलम को एक कारक में तब्दील करने की आवश्यकता होगी। एक बार जब आपके पास एक फिट मॉडल होता है, तो आप भविष्यवाणी फ़ंक्शन का उपयोग कर सकते हैं, इसे पास करके आप स्टैस्टर स्टैक कर सकते हैं। आपको रास्टर प्रेडिक्ट फंक्शन के लिए विशिष्ट के अलावा भविष्यवाणी करने के लिए मानक तर्क पारित करने की आवश्यकता होगी। रेखापुंज पैकेज में चूहों को "स्मृति से बाहर" संभालने की क्षमता है और जैसे कि बहुत बड़ी चूहों के साथ भी स्मृति सुरक्षित है। रेखापुंज पूर्वानुमान समारोह में एक तर्क "फ़ाइलनाम" है जो डिस्क पर लिखे गए रेखापुंज के लिए अनुमति देता है। एक बहुस्तरीय समस्या के लिए आपको टाइप = "रेस्पॉन्स" और इंडेक्स = 1 सेट करना होगा जो आपकी कक्षाओं के पूर्णांक रेखापुंज को आउटपुट करेगा।
वहाँ कुछ चेतावनी है कि ध्यान दिया जाना चाहिए:
- आपके प्रतिक्रिया चर ( y ) या समीकरण के दाईं ओर किसी भी कारक में 32 से अधिक स्तर नहीं हो सकते हैं ( x )
- आपकी कक्षाएं संतुलित होनी चाहिए। एक 30% नियम का पालन करने के लिए एक अच्छा एक है, अगर आप एक समस्या पर 30% से अधिक अवलोकन है किसी भी अन्य की तुलना में आपकी समस्या असंतुलित हो जाती है और परिणाम पक्षपाती हो सकते हैं
- यह एक गलत धारणा है कि आरएफ ओवरफिट नहीं कर सकता है। यदि आप अपने पहनावा को सहसंबंधित करते हैं तो आप मॉडल को ओवरफिट कर सकते हैं। इससे बचने का एक अच्छा तरीका प्रारंभिक मॉडल को चलाना और त्रुटि स्थिरीकरण की साजिश है। अंगूठे के एक नियम के रूप में, मैं ntree पैरामीटर के लिए त्रुटि को स्थिर करने के लिए आवश्यक बूटस्ट्रैप की संख्या 2X चुनता हूं। ऐसा इसलिए है क्योंकि चर इंटरैक्शन त्रुटि की तुलना में धीमी दर पर स्थिर होता है। यदि आप मॉडल में कई चर शामिल नहीं हैं, तो आप इस पैरामीटर के साथ अधिक रूढ़िवादी हो सकते हैं।
- परिवर्तनीय महत्व के उपाय के रूप में नोड शुद्धता का उपयोग न करें। यह सटीकता में माध्य में कमी की तरह अनुमत नहीं है।
मेरे पास CRAN पर उपलब्ध rfUtilities पैकेज में मॉडल चयन, वर्ग असंतुलन और सत्यापन के लिए कार्य हैं।
आपको आरंभ करने के लिए यहां कुछ सरल कोड दिए गए हैं।
require(sp)
require(rgdal)
require(raster)
require(randomForest)
# CREATE LIST OF RASTERS
rlist=list.files(getwd(), pattern="img$", full.names=TRUE)
# CREATE RASTER STACK
xvars <- stack(rlist)
# READ POINT SHAPEFILE TRAINING DATA
sdata <- readOGR(dsn=getwd() layer=inshape)
# ASSIGN RASTER VALUES TO TRAINING DATA
v <- as.data.frame(extract(xvars, sdata))
sdata@data = data.frame(sdata@data, v[match(rownames(sdata@data), rownames(v)),])
# RUN RF MODEL
rf.mdl <- randomForest(x=sdata@data[,3:ncol(sdata@data)], y=as.factor(sdata@data[,"train"]),
ntree=501, importance=TRUE)
# CHECK ERROR CONVERGENCE
plot(rf.mdl)
# PLOT mean decrease in accuracy VARIABLE IMPORTANCE
varImpPlot(rf.mdl, type=1)
# PREDICT MODEL
predict(xvars, rf.mdl, filename="RfClassPred.img", type="response",
index=1, na.rm=TRUE, progress="window", overwrite=TRUE)