I am faced with the task, using the data of Sentinel-2 channels, to build a classifier based on time series (time series cassification), where the dependent variable is the wheat class (1) or another crop (0). I am using R language. For greater clarity, I will give a small example of data.

 exampl=structure(list(date = c("19.12.2020", "24.12.2020", "03.01.2021", 
    "08.01.2021", "13.01.2021", "18.01.2021", "23.01.2021", "28.01.2021", 
    "02.02.2021", "07.02.2021", "17.02.2021", "22.02.2021", "27.02.2021", 
    "04.03.2021", "09.03.2021", "14.03.2021", "24.03.2021", "29.03.2021", 
    "03.04.2021", "13.04.2021", "18.04.2021", "28.04.2021", "08.05.2021", 
    "01.10.2020", "06.10.2020", "11.10.2020", "16.10.2020", "21.10.2020", 
    "31.10.2020", "05.11.2020", "10.11.2020", "20.11.2020", "30.11.2020", 
    "05.12.2020", "10.12.2020", "20.12.2020", "25.12.2020", "04.01.2021", 
    "29.01.2021", "18.02.2021", "23.02.2021", "28.02.2021", "05.03.2021", 
    "10.03.2021", "15.03.2021", "20.03.2021", "30.03.2021", "04.04.2021", 
    "09.04.2021", "19.04.2021", "29.04.2021", "09.05.2021", "14.05.2021", 
    "01.10.2020"), red = c(1103L, 1084L, 1504L, 1259L, 1230L, 1393L, 
    1225L, 1482L, 1386L, 1316L, 1400L, 1418L, 1546L, 1540L, 1644L, 
    1568L, 1682L, 1828L, 1887L, 1992L, 2024L, 1965L, 1915L, 1600L, 
    1360L, 1520L, 1360L, 1528L, 1600L, 1634L, 1508L, 1380L, 1548L, 
    1456L, 1460L, 1732L, 1080L, 1008L, 1068L, 784L, 580L, 920L, 578L, 
    1016L, 1296L, 1184L, 1374L, 1224L, 1576L, 2094L, 1932L, 1799L, 
    1738L, 248L), green = c(964L, 940L, 1392L, 1054L, 999L, 1244L, 
    964L, 1350L, 1043L, 1044L, 1064L, 1045L, 1170L, 1148L, 1212L, 
    1176L, 1290L, 1404L, 1410L, 1485L, 1501L, 1496L, 1489L, 1392L, 
    1056L, 1248L, 1120L, 1160L, 1296L, 1426L, 1388L, 1172L, 1372L, 
    1352L, 1252L, 1524L, 936L, 1008L, 1092L, 640L, 660L, 884L, 602L, 
    808L, 1256L, 912L, 1162L, 952L, 1208L, 1598L, 1560L, 1495L, 1474L, 
    392L), blue = c(737L, 668L, 864L, 838L, 672L, 1060L, 628L, 1166L, 
    678L, 772L, 792L, 639L, 802L, 756L, 844L, 776L, 930L, 1044L, 
    986L, 1084L, 1084L, 1153L, 1117L, 960L, 712L, 816L, 784L, 664L, 
    960L, 1226L, 1204L, 932L, 1068L, 1200L, 1044L, 1292L, 728L, 832L, 
    860L, 272L, 420L, 644L, 362L, 408L, 1072L, 480L, 826L, 680L, 
    840L, 1166L, 1268L, 1275L, 1138L, 152L), nir = c(2488L, 2262L, 
    2120L, 2516L, 2504L, 2566L, 2414L, 2556L, 2568L, 2621L, 2616L, 
    2584L, 2744L, 2743L, 2840L, 2772L, 2676L, 2865L, 2952L, 3077L, 
    3051L, 3005L, 2890L, 3096L, 2696L, 2904L, 2680L, 2960L, 2392L, 
    2120L, 2020L, 2232L, 2088L, 1928L, 2072L, 2488L, 1912L, 1928L, 
    2296L, 2472L, 2696L, 2792L, 3000L, 2568L, 2740L, 2504L, 2456L, 
    2296L, 2584L, 2976L, 2624L, 2568L, 2696L, 2632L), swir = c(2976L, 
    2885L, 2720L, 3216L, 3104L, 3104L, 3020L, 3120L, 3104L, 3337L, 
    3488L, 3232L, 3603L, 3552L, 3808L, 3614L, 3760L, 3856L, 3859L, 
    3982L, 4172L, 4076L, 4240L, 3040L, 3104L, 3040L, 3040L, 3232L, 
    2848L, 2656L, 2256L, 2656L, 2656L, 2464L, 2592L, 2464L, 2080L, 
    2144L, 2080L, 2016L, 1744L, 2080L, 1888L, 2144L, 2128L, 2256L, 
    2400L, 2464L, 2848L, 3520L, 3280L, 3304L, 3168L, 1376L), B05 = c(1376L, 
    1440L, 1712L, 1568L, 1504L, 1712L, 1554L, 1773L, 1632L, 1632L, 
    1696L, 1632L, 1862L, 1888L, 2000L, 1923L, 2067L, 2189L, 2160L, 
    2322L, 2347L, 2327L, 2287L, 2016L, 1696L, 1952L, 1824L, 1952L, 
    1888L, 1824L, 1712L, 1696L, 1760L, 1648L, 1696L, 1952L, 1376L, 
    1376L, 1424L, 1184L, 1056L, 1296L, 1056L, 1376L, 1632L, 1568L, 
    1648L, 1632L, 1888L, 2520L, 2216L, 2080L, 2128L, 608L), B06 = c(1952L, 
    1952L, 1968L, 2050L, 1952L, 2208L, 2062L, 2224L, 2075L, 2081L, 
    2208L, 2208L, 2250L, 2283L, 2462L, 2336L, 2318L, 2448L, 2470L, 
    2574L, 2600L, 2551L, 2519L, 2656L, 2272L, 2512L, 2400L, 2528L, 
    2208L, 2016L, 1872L, 1952L, 1952L, 1824L, 1888L, 2160L, 1696L, 
    1888L, 2016L, 1952L, 2096L, 2272L, 2208L, 2144L, 2352L, 2144L, 
    2144L, 2016L, 2208L, 2688L, 2416L, 2352L, 2464L, 2016L), B07 = c(2185L, 
    2123L, 2080L, 2314L, 2272L, 2400L, 2144L, 2452L, 2208L, 2395L, 
    2400L, 2330L, 2466L, 2400L, 2644L, 2541L, 2525L, 2736L, 2732L, 
    2838L, 2860L, 2762L, 2835L, 2976L, 2528L, 2784L, 2528L, 2784L, 
    2272L, 2080L, 2016L, 2016L, 2016L, 2016L, 2016L, 2320L, 1824L, 
    1952L, 2128L, 2272L, 2576L, 2656L, 2848L, 2464L, 2704L, 2464L, 
    2320L, 2144L, 2336L, 2912L, 2528L, 2480L, 2736L, 2592L), B08A = c(2455L, 
    2336L, 2272L, 2540L, 2524L, 2592L, 2388L, 2604L, 2588L, 2648L, 
    2699L, 2656L, 2833L, 2720L, 2953L, 2902L, 2800L, 2981L, 2992L, 
    3147L, 3167L, 3096L, 3108L, 3232L, 2848L, 2976L, 2848L, 2976L, 
    2464L, 2208L, 2080L, 2256L, 2144L, 2016L, 2128L, 2464L, 1952L, 
    2080L, 2192L, 2464L, 2656L, 2784L, 2976L, 2656L, 2784L, 2528L, 
    2464L, 2400L, 2592L, 3104L, 2784L, 2720L, 2784L, 2720L), B12 = c(2336L, 
    2144L, 2096L, 2592L, 2392L, 2528L, 2336L, 2576L, 2448L, 2656L, 
    2845L, 2512L, 2947L, 2842L, 3087L, 2784L, 2976L, 3232L, 3104L, 
    3253L, 3476L, 3412L, 3612L, 2400L, 2400L, 2400L, 2528L, 2496L, 
    2400L, 2336L, 1744L, 2144L, 2336L, 2224L, 2272L, 2144L, 1760L, 
    1616L, 1632L, 1552L, 1312L, 1568L, 1376L, 1696L, 1680L, 1760L, 
    1888L, 1888L, 2336L, 2976L, 2856L, 2784L, 2664L, 800L), wheat = c(0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 
    0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 
    1L, 1L, 1L, 1L, 1L)), class = "data.frame", row.names = c(NA, 

I am interested in the methodological aspect of solving the problem. What is the most correct time series classification algorithm i should use in the context of geodata for field crops. The matter is that it is necessary to use all independent variables (covariates) for forecasting of a class of crops.

Does anyone have experience with this kind of data. Or is there somewhere an illustrative example of an algorithm in R where shown how best to make a classifier?

Thank you for your help.

  • $\begingroup$ I don't think there is a single "optimal" method. This search may be helpful. One approach would be to normalize your time series in some way, use Dynamic Time Warping if necessary, then do k-nearest neighbors, with an appropriate distance function between multiple time series. $\endgroup$ May 7, 2023 at 11:21


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.