أكثر

يبدو أن تصنيف الترددات اللاسلكية يعمل ولكنه يعطي خطأ بعد 15 ثانية

يبدو أن تصنيف الترددات اللاسلكية يعمل ولكنه يعطي خطأ بعد 15 ثانية


هذا هو الكود الخاص بي. يصنف مكدس الصور (xvars) ويقرأ ملف الأشكال بنقاط التدريب.

إذا قمت بتشغيل صفوف واحدة فإنها تعمل. حتى لو قمت بتشغيلهم جميعًا ، فإنهم يعملون ويبدأون في التنبؤ ولكن بعد 15 ثانية يتوقف عن العمل ويعطي خطأ.

بقدر ما أفهم ، لا يحتاج التصنيف إلى أسماء نقطية لأنها تُقرأ تلقائيًا.

يرث ملف شكل التدريب الخاص بي (sw_trainshape.shp) جدولًا به أعمدة

FID Shape Class ObjectID x y 1 Point bush 1 481791،2429 5626286،6397 2 ...

يتم تسمية ملفات tif الخاصة بي الفرقة 1,الفرقة 2,الفرقة 3 وهكذا. لدي 6 فرق.

ومع ذلك ، فأنا لست من ذوي الخبرة الكافية ، لذلك يمكنني استخدام بعض المساعدة لمعرفة سبب عدم تصنيف الكود الخاص بي.

خطأ:

"تحميل الحزمة المطلوبة: tcltk

خطأ في Forecast.randomForest (النموذج ، blockvals ، ...): المتغيرات في بيانات التدريب مفقودة في البيانات الجديدة "

رمز:

setwd ("D: / BA-Workspace / DOP_10 / orthophotos_abcd / R / test_run_R / test_other") مكتبة مكتبة (sp) (rgdal) مكتبة (نقطية) (randomForest) # إنشاء قائمة rasters rlist = list.files (getwd (getwd ( )، pattern = "tif $"، full.names = TRUE) # CREATE RASTER STACK xvars <- stack (rlist) # READ Raster TRAINING DATA sdata <- readOGR (dsn = getwd ()، layer = "sw_trainshape") # ASSIGN قيم RASTER 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 [، "Class"])، ntree = 501 ، الأهمية = TRUE) # تحقق من تقارب الخطأ # مخطط (rf.mdl) # PLOT يعني انخفاض في الدقة #varImpPlot (rf.mdl ، type = 1) # توقع نموذج PREDICT (xvars ، rf.mdl ، اسم الملف = "RfClassPred .img "، type =" response "، index = 1، na.rm = TRUE، التقدم =" window "، الكتابة فوق = TRUE)

وحدة التحكم:

> setwd ("D: / BA-Workspace / DOP_10 / orthophotos_abcd / R / test_run_R / test_other")>> مكتبة (sp)> مكتبة (rgdal)> مكتبة (نقطية)> مكتبة (randomForest)>> # إنشاء قائمة OF RASTERS> rlist = list.files (getwd ()، pattern = "tif $"، full.names = TRUE)>> # CREATE RASTER STACK> xvars <- stack (rlist)>> # READ Raster TRAINING DATA> sdata < - readOGR (dsn = getwd ()، layer = "sw_trainshape") مصدر بيانات OGR مع برنامج التشغيل: ESRI Shapefile Source: "D: / BA-Workspace / DOP_10 / orthophotos_abcd / R / test_run_R / test_other" ، الطبقة: "sw_trainshape" مع 256 ميزة و 10 حقول نوع الميزة: wkbPoint بأبعاد 2>> # تعيين قيم RASTER لتدريب البيانات> 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 [، "Class"])، + ntree = 501، important = TRUE)>> # CHECK ERROR CONVERGENCE> #plot (rf.mdl)>> # PLOT يعني انخفاض في الدقة VARIA BLE IMPORTANCE> #varImpPlot (rf.mdl، type = 1)> #setOldClass (SpatialPointsDataFrame)> # PREDICT MODEL> توقع (xvars ، rf.mdl ، اسم الملف = "RfClassPred.img" ، اكتب = "response" ، + index = 1، na.rm = TRUE، progress = "window"، overwrite = TRUE) خطأ في Forecast.randomForest (model ، blockvals ، ...): متغيرات في بيانات التدريب مفقودة في البيانات الجديدة

الحل بفضل TimSalabim:

setwd ("D: / BA-Workspace / sw_west_aug / Red_size /") مكتبة مكتبة (sp) (rgdal) مكتبة (نقطية) (randomForest) # CREATE LIST OF RASTERS rlist = list.files (getwd ()، pattern = " tif $ "، full.names = TRUE) # CREATE RASTER STACK xvars <- stack (rlist) # CREATE RASTER STACK xvars <- stack (rlist) x <- الإحداثيات (xvars) [، 1] y <- الإحداثيات (xvars) [، 2] x_rst <- y_rst <- xvars [[1]] x_rst [] <- x y_rst [] <- y xvars <- المكدس (x_rst، y_rst، xvars) الأسماء (xvars) <- c ("X" ، "Y"، "focal_1"، "focal_2"، "focal_3") # READ Raster TRAINING DATA sdata <- readOGR (dsn = getwd ()، layer = "training_west") # 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))،]) sdata @ data <- sdata @ data [-c (5،6)] # RUN RF MODEL rf.mdl <- randomForest (x = sdata @ data [، 3: ncol (sdata @ data)]، y = as.factor (sdata @ data [، " class "])، ntree = 501، important = TRUE) # CHECK ERROR CONVERGENCE #plot (rf.mdl) # sdata @ data # PLOT يعني انخفاض في الدقة VA أهمية موثوق بها #varImpPlot (rf.mdl ، type = 1) #setOldClass (SpatialPointsDataFrame) # توقع نموذج التنبؤ (xvars ، rf.mdl ، اسم الملف = "RfClassPred.img" ، النوع = "response" ، الفهرس = 1 ، na.rm = TRUE ، التقدم = "نافذة" ، الكتابة فوق = TRUE)

تحتاج إلى التأكد من أن الأسماء (sdata @ data [، 3: ncol (sdata @ data)]) والأسماء (xvars) متطابقة تمامًا. تحقق من هذا باستخدام ملفات

متطابقة (أسماء (sdata @ data [، 3: ncol (sdata @ data)]) ، أسماء (xvars))

إذا كانت TRUE ، يجب أن يعمل توقعك بشكل جيد.

التحذيرات / الأخطاء المتعلقة بالتحرير ليست ذات صلة ، فهي تتعلق بمحاولتك عرض ملفالمضلع المكاني DataFrame(وكائن فئة S4) كإطار data.frame قياسي في RStudio.

تحرير: يبدو أن لديك اختلافات بين أسماء طبقة المكدس وإطار بيانات sdata @ data. تأكد من أن هذه هي نفسها. إذا كنت ترغب في تضمين إحداثيات x و y كطبقات في مجموعتك (إذا كان هذا منطقيًا يعتمد على هدفك) فيمكنك القيام بذلك على النحو التالي:

x <- الإحداثيات (xvars) [، 1] y <- الإحداثيات (xvars) [، 2] x_rst <- y_rst <- xvars [[1]] x_rst [] <- x y_rst [] <- y

ثم ستحتاج إلى إضافة هذه إلى مكدس الخاص بك في الموضع المناسب:

xvars <- مكدس (x_rst ، y_rst ، xvars)

لاحظ أيضًا أن لديك متغيرات إضافية في إطار بيانات sdata @ data ("band1.1" إلخ). لا أعرف من أين أتت هذه ، ربما تقوم بدمج شيء ما في وقت سابق؟ مرة أخرى من أجلتنبؤ()للعمل بشكل صحيح ، يجب أن تكون طبقات المكدس والأعمدة من بيانات التدريب الخاصة بك متطابقة (أسماء هذه).


شاهد الفيديو: Section 1: More Comfortable