# Feature Explanations ## Core Climb Attributes **angle** Board angle in degrees. Higher angles correspond to steeper (more overhanging) climbs, which generally increase difficulty. **angle_squared** Square of the board angle. Captures nonlinear effects of steepness (difficulty often increases faster at higher angles). **display_difficulty** Target variable: the climb’s difficulty rating provided by the dataset. **angle_x_holds** Interaction between angle and number of holds. Captures how steepness and hold count jointly affect difficulty (e.g., many holds on steep terrain vs few holds on slab). --- ## Hold Counts / Composition **total_holds** Total number of holds used in the climb. **hand_holds** Number of holds intended for hands. **foot_holds** Number of holds intended for feet. **start_holds** Number of starting holds. **finish_holds** Number of finishing holds. **middle_holds** Number of intermediate (non-start, non-finish) holds. **is_nomatch** Binary indicator for whether matching hands on holds is disallowed. No-match climbs tend to be more difficult due to restricted movement options. --- ## Spatial Position (Raw Coordinates) **mean_y** Average vertical position of all holds. Higher values indicate climbs concentrated toward the top of the board. **std_x** Standard deviation of horizontal hold positions. Measures left-right spread. **std_y** Standard deviation of vertical hold positions. Measures vertical dispersion. **range_x** Horizontal range (max − min x). Indicates how wide the climb is. **range_y** Vertical range (max − min y). Indicates how tall the climb is. **min_y** Lowest hold position. **max_y** Highest hold position. **height_gained** Total vertical distance covered by the climb. **height_gained_start_finish** Vertical distance between average start and finish holds. --- ## Density / Coverage **bbox_area** Area of the bounding box containing all holds. **hold_density** Number of holds per unit area. Higher density often means more options and potentially easier climbing. **holds_per_vertical_foot** Number of holds per unit vertical distance. Captures how “ladder-like” a climb is. --- ## Symmetry / Balance **left_ratio** Proportion of holds on the left side of the board. **symmetry_score** How balanced the climb is left-to-right (1 = perfectly balanced, 0 = fully one-sided). **upper_ratio** Fraction of holds located above the median vertical position. Indicates whether the climb is top-heavy. --- ## Hand Geometry (Reach / Movement) **mean_hand_reach** Average distance between pairs of hand holds. Proxy for typical move size. **max_hand_reach** Maximum distance between hand holds. Captures hardest reach or span. **std_hand_reach** Variation in hand distances. Measures consistency vs variability of moves. **hand_spread_x** Horizontal spread of hand holds. **hand_spread_y** Vertical spread of hand holds. --- ## Hand–Foot Interaction **min_hand_to_foot** Minimum distance between any hand and foot hold. Indicates tight body positioning. **mean_hand_to_foot** Average distance between hands and feet. Proxy for body extension requirements. **std_hand_to_foot** Variation in hand-foot distances. Measures consistency of body positioning. --- ## Global Geometry **convex_hull_area** Area of the convex hull enclosing all holds. Measures overall spatial footprint. **hull_area_to_bbox_ratio** Ratio of convex hull area to bounding box area. Indicates how “filled” or “sparse” the hold distribution is. **mean_pairwise_distance** Average distance between all pairs of holds. Global spacing measure. **std_pairwise_distance** Variation in distances between holds. Captures clustering vs spread. --- ## Path / Flow **path_length_vertical** Approximate total path length when moving from bottom to top (based on sorted vertical positions). **path_efficiency** Ratio of vertical gain to path length. Higher values indicate more direct movement; lower values indicate more traversing or inefficiency. --- ## Normalized / Relative Position **mean_y_normalized** Average vertical position scaled to board height (0–1). **start_height_normalized** Start hold height relative to board height. **finish_height_normalized** Finish hold height relative to board height. **mean_y_relative_to_start** Average hold height relative to starting position. **spread_x_normalized** Horizontal spread normalized by board width. **spread_y_normalized** Vertical spread normalized by board height. --- ## Distribution Features **y_q75** 75th percentile of hold heights. Indicates where upper holds are concentrated. **y_iqr** Interquartile range (75th − 25th percentile) of hold heights. Measures vertical spread excluding extremes. --- ## Engineered Feature **complexity_score** Composite feature combining: * hand reach (movement difficulty), * number of holds (sequence length), * hold density (spacing). Designed to capture overall climb complexity in a single metric.