prediction image update

This commit is contained in:
Pawel Sarkowicz
2026-03-29 09:40:34 -04:00
parent 01807be17d
commit 4ca8bb2134
13 changed files with 129 additions and 10838 deletions

View File

@@ -1,6 +1,6 @@
# Tension Board 2: Predicting Climbing Route Difficulty from Board Data
I recently got into *board climbing*, and have been enjoying using the <a href="https://tensionclimbing.com/products/tension-board-2">Tension Board 2</a>. I've been climbing on the 12ftx12ft (mirrored) that is available at my local gym, and I've never felt that the phrase "*it hurts so good*" would be so apt. As such, I decided to do an in depth analysis of available data.
I recently got into *board climbing*, and have been enjoying using the <a href="https://tensionclimbing.com/products/tension-board-2">Tension Board 2</a>. I've been climbing on the 12ftx12ft (mirrored) that is available at my local gym, and I've never felt that the phrase "*it hurts so good*" would be so apt. As such, I decided to do an in depth analysis of available data. See also an <a href="https://gitlab.com/psark/Kilter-Board-Analysis">analysis of the Kilter Board</a>.
![Hold Usage Heatmap](images/02_hold_stats/all_holds_all_grades_heatmap.png)
@@ -11,7 +11,7 @@ I recently got into *board climbing*, and have been enjoying using the <a href="
## Overview
This project analyzes ~130,000 climbs from the Tension Boards in order to do the following.
This project analyzes ~130,000 climbs on the Tension Boards in order to do the following.
> 1. **Understand** hold usage patterns and difficulty distributions
> 2. **Quantify** empircal hold difficulty scores
> 3. **Predict** climb grades from spatial and structural features of climbs
@@ -91,7 +91,6 @@ Go to your working directory and run notebooks in order:
Note:
* Notebooks 01-03 are uploaded with all of their cells run, so that one can see the data analysis. Notebooks 04-06 are uploaded without having been run.
* Notebook 03 generates global hold difficulty tables
* Notebook 04 generates feature matrix
* Notebook 05 trains models

Binary file not shown.

Before

Width:  |  Height:  |  Size: 501 KiB

After

Width:  |  Height:  |  Size: 565 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

After

Width:  |  Height:  |  Size: 138 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 412 KiB

After

Width:  |  Height:  |  Size: 341 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 135 KiB

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 489 KiB

After

Width:  |  Height:  |  Size: 567 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 130 KiB

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 487 KiB

After

Width:  |  Height:  |  Size: 564 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -367,6 +367,7 @@
" ax.set_title(f'{model_name}: Residual Plot', fontsize=14)\n",
"\n",
" plt.tight_layout()\n",
" plt.savefig(f'../images/05_predictive_modelling/{model_name.lower().replace(\" \", \"_\")}_predictions.png', dpi=150, bbox_inches='tight')\n",
" plt.show()\n",
"\n",
"\n",
@@ -398,6 +399,7 @@
" plt.suptitle('') # Remove automatic title\n",
"\n",
" plt.tight_layout()\n",
" plt.savefig(f'../images/05_predictive_modelling/{model_name.lower().replace(\" \", \"_\")}_errors.png', dpi=150, bbox_inches='tight')\n",
" plt.show()\n"
]
},

View File

@@ -6,5 +6,4 @@ scikit-learn
jupyter
notebook
torch
sqlite3
boardlib