glimpse(leaf_data)
#> Rows: 1,907
#> Columns: 55
#> $ species <fct> chinese_redbud, chinese_redbud, chinese_red…
#> $ apex <fct> none, none, none, none, none, none, none, n…
#> $ base <fct> none, none, none, none, none, none, none, n…
#> $ shape <fct> heart_shape, heart_shape, heart_shape, hear…
#> $ edge <chr> "smooth", "smooth", "smooth", "smooth", "sm…
#> $ outlying_polar <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ skewed_polar <dbl> 0.4610066, 0.4747877, 0.5356883, 0.4771338,…
#> $ clumpy_polar <dbl> 0.006479784, 0.011100482, 0.017317486, 0.01…
#> $ sparse_polar <dbl> 0.01449941, 0.01451566, 0.02953578, 0.01425…
#> $ striated_polar <dbl> 0.9788360, 0.9797980, 0.6758621, 0.9896373,…
#> $ convex_polar <dbl> 0.000899987, 0.000152532, 0.035230741, 0.00…
#> $ skinny_polar <dbl> 0.1177954, 0.5440493, 0.7764908, 0.7067394,…
#> $ stringy_polar <dbl> 1.0000000, 1.0000000, 0.8544140, 1.0000000,…
#> $ monotonic_polar <dbl> 0.026807610, 0.005554220, 0.068481538, 0.09…
#> $ outlying_contour <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0…
#> $ skewed_contour <dbl> 0.4954035, 0.5321818, 0.5451171, 0.4675013,…
#> $ clumpy_contour <dbl> 0.007898114, 0.010846498, 0.020271493, 0.01…
#> $ sparse_contour <dbl> 0.01449941, 0.01436114, 0.02903878, 0.01451…
#> $ striated_contour <dbl> 0.9744898, 0.9811321, 0.6766917, 0.9784946,…
#> $ convex_contour <dbl> 0.000479470, 0.000000000, 0.035908221, 0.00…
#> $ skinny_contour <dbl> 0.1810093, 1.0000000, 0.7806988, 0.1348225,…
#> $ stringy_contour <dbl> 1.0000000, 1.0000000, 0.8864787, 1.0000000,…
#> $ monotonic_contour <dbl> 0.000816260, 0.000008740, 0.001253195, 0.32…
#> $ num_max_points <dbl> 1, 3, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 1…
#> $ num_min_points <dbl> 2, 4, 7, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 8, 2…
#> $ diameter <dbl> 1255.830, 1227.826, 1113.228, 1219.185, 118…
#> $ area <dbl> 936626.5, 917300.5, 855376.5, 901303.0, 885…
#> $ perimeter <dbl> 3830.534, 3781.445, 3695.646, 3678.409, 383…
#> $ physiological_length <dbl> 1253, 1218, 1098, 1205, 1153, 1179, 1188, 1…
#> $ physiological_width <dbl> 1088, 1091, 1083, 1053, 1078, 1073, 1054, 1…
#> $ aspect_ratio <dbl> 0.8683160, 0.8957307, 0.9863388, 0.8738589,…
#> $ rectangularity <dbl> 0.6870470, 0.6903027, 0.7193273, 0.7103222,…
#> $ circularity <dbl> 0.8021540, 0.8061315, 0.7870211, 0.8370680,…
#> $ compactness <dbl> 15.66578, 15.58849, 15.96701, 15.01237, 16.…
#> $ narrow_factor <dbl> 1.154255, 1.125413, 1.027912, 1.157821, 1.1…
#> $ perimeter_ratio_diameter <dbl> 3.050202, 3.079790, 3.319756, 3.017104, 3.2…
#> $ perimeter_ratio_length <dbl> 3.520711, 3.466036, 3.412416, 3.493266, 3.5…
#> $ perimeter_ratio_lw <dbl> 1.636281, 1.637698, 1.694473, 1.629056, 1.7…
#> $ num_convex_points <dbl> 125, 128, 114, 138, 125, 125, 121, 112, 115…
#> $ perimeter_convexity <dbl> 0.9404967, 0.9393550, 0.9232549, 0.9502414,…
#> $ area_convexity <dbl> 0.02359372, 0.03175513, 0.03932713, 0.01740…
#> $ area_ratio_convexity <dbl> 0.9769501, 0.9692222, 0.9621610, 0.9828892,…
#> $ equivalent_diameter <dbl> 1092.0393, 1080.7142, 1043.5992, 1071.2491,…
#> $ eccentricity <dbl> 0.44400376, 0.26866788, 0.31952502, 0.44811…
#> $ contrast <dbl> 38.69163, 32.73154, 23.20849, 30.14546, 23.…
#> $ correlation_texture <dbl> 0.9959609, 0.9967740, 0.9975354, 0.9968981,…
#> $ inverse_difference_moments <dbl> 0.5951133, 0.6022763, 0.6363508, 0.6135506,…
#> $ entropy <dbl> 6.291552, 6.273267, 5.764995, 6.203471, 5.9…
#> $ mean_red_val <dbl> 38.02429, 34.55425, 30.92509, 33.44151, 33.…
#> $ mean_green_val <dbl> 72.38449, 69.89448, 69.22250, 71.32743, 70.…
#> $ mean_blue_val <dbl> 42.78902, 42.93044, 40.80089, 40.73282, 42.…
#> $ std_red_val <dbl> 41.66486, 40.48649, 38.55110, 39.09408, 40.…
#> $ std_green_val <dbl> 74.26665, 73.05275, 76.77596, 75.85529, 75.…
#> $ std_blue_val <dbl> 46.36232, 48.04195, 48.09177, 46.57170, 48.…
#> $ correlation <dbl> -0.027629688, -0.003103965, -0.036341630, 0…