Saya memiliki serangkaian gambar satelit (5 band) dan ingin mengklasifikasikannya berdasarkan kmeans dalam R. Skrip saya berfungsi dengan baik (loop melalui gambar saya, mengonversi gambar ke data.frame, mengelompokkannya, dan mengubahnya kembali menjadi raster):
for (n in files) {
image <- stack(n)
image <- clip(image,subset)
###classify raster
image.df <- as.data.frame(image)
cluster.image <- kmeans(na.omit(image.df), 10, iter.max = 10, nstart = 25) ### kmeans, with 10 clusters
#add back NAs using the NAs in band 1 (identic NA positions in all bands), see http://stackoverflow.com/questions/12006366/add-back-nas-after-removing-them/12006502#12006502
image.df.factor <- rep(NA, length(image.df[,1]))
image.df.factor[!is.na(image.df[,1])] <- cluster.image$cluster
#create raster output
clusters <- raster(image) ## create an empty raster with same extent than "image"
clusters <- setValues(clusters, image.df.factor) ## fill the empty raster with the class results
plot(clusters)
}
Masalah saya adalah: Saya tidak dapat membandingkan hasil klasifikasi satu sama lain karena cluster assignents berbeda dari gambar ke gambar. Misalnya, "air" ada di cluster gambar pertama nomor 1, di 2 berikutnya dan di 10 ketiga, sehingga tidak mungkin untuk membandingkan hasil air antara tanggal.
Bagaimana saya bisa memperbaiki tugas cluster?
Dapatkah saya menentukan titik awal yang tetap untuk semua gambar (berharap bahwa air selalu terdeteksi pertama dan dengan demikian diklasifikasikan sebagai 1)?
Dan jika ya, bagaimana?