আমি নিশ্চিত না যে ডেটা "সংগ্রহ" করে আপনি কী বোঝাতে চেয়েছেন তা আমি বুঝতে পেরেছি। আপনি যদি ক্লাসের শীর্ষস্থানীয় ডিজিটাইজেশন এবং কার্যনির্বাহীকরণের কথা উল্লেখ করছেন তবে এটি জিআইএসে সেরা করা হয়। অনেকগুলি বিনামূল্যে বিকল্প রয়েছে যা উপযুক্ত হবে (i.e, QGIS, GRASS) RA আপনার শ্রেণিবদ্ধকরণকে প্রশিক্ষণ দেওয়ার জন্য আদর্শভাবে আপনার মাঠের ডেটা থাকবে।
র্যান্ডম অরণ্য ব্যবহার করে শ্রেণিবিন্যাসের প্রক্রিয়াটি মোটামুটি সোজা এগিয়ে। আপনি "rgdal" বা "maptools" ব্যবহার করে আপনার প্রশিক্ষণ ডেটাতে (যেমন একটি পয়েন্ট শেফফিল) পড়তে পারেন raster::stack
, ব্যবহার করে আপনার বর্ণাল ডেটাতে পড়তে পারেন , ব্যবহার করে আপনার প্রশিক্ষণ পয়েন্টগুলিতে রাস্টার মান নির্ধারণ করুন raster:extract
এবং তারপরে এটি পাস করুনrandomForest
। আরএফকে শ্রেণিবিন্যাসের উদাহরণ হিসাবে স্বীকৃতি দেওয়ার জন্য আপনাকে আপনার "শ্রেণি" কলামটি একটি ফ্যাক্টারে বাধ্য করতে হবে। একবার আপনার কাছে উপযুক্ত মডেল হয়ে গেলে আপনি পূর্বাভাস ফাংশনটি ব্যবহার করতে পারবেন, এটি পাস করে আপনার রাস্টার স্ট্যাক। রাস্টার পূর্বাভাস ফাংশন সম্পর্কিত নির্দিষ্টগুলি ছাড়াও পূর্বাভাস দেওয়ার জন্য আপনাকে স্ট্যান্ডার্ড আর্গুমেন্টগুলি পাস করতে হবে। রাস্টার প্যাকেজটিতে রাস্টারগুলিকে "মেমরির বাইরে" পরিচালনা করার ক্ষমতা রয়েছে এবং এগুলি স্মৃতিশক্তি নিরাপদ এমনকি খুব বড় রাস্টারদেরও রয়েছে। রাস্টার পূর্বাভাস ফাংশনের একটি যুক্তি হ'ল "ফাইলের নাম" যা কোনও রাস্টারকে ডিস্কে লিখিত থাকতে পারে। মাল্টিক্লাস সমস্যার জন্য আপনাকে টাইপ = "প্রতিক্রিয়া" এবং সূচক = 1 সেট করতে হবে যা আপনার ক্লাসগুলির একটি পূর্ণসংখ্যার রাস্টার আউটপুট দেবে।
কয়েকটি সতর্কতা রয়েছে যেগুলি লক্ষ করা উচিত:
- আপনার প্রতিক্রিয়া পরিবর্তনশীল ( y ) বা সমীকরণের ডান দিকে কোনও অংশের ( x ) এর 32 টিরও বেশি স্তর থাকতে পারে না
- আপনার ক্লাস অবশ্যই ভারসাম্যপূর্ণ হতে হবে। একটি 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)