Label balancing and symmetric behaviors for training classifiers#23
Conversation
…train a label-balanced classifier Also bugfixing saving social feature checkbox into projects
|
Current TODO:
Right now, this option only really works within the gui. classify.py will fail. |
Also forcing more project metadata to be saved when train button is clicked Fixes a bug where switching behaviors keep settings in UI, but they don't go into classifier (remain at default)
|
Adding in another new feature: symmetric behaviors (where left-right features can be swapped)
In addition to that, a massive rework was done to enable this feature to be added
|
… objects were introduced.
| writes exported data to the project directory | ||
| :param project: Project from which to export training data | ||
| :param behavior: Behavior to export | ||
| :param pose_version: Minimum required pose version for this classifier |
There was a problem hiding this comment.
Are all pose versions currently backwards-compatible?
There was a problem hiding this comment.
Features are backwards compatible, but projects/classifiers can only operate on the lowest common feature set. This is the current way projects calculate this number.
Currently no logic is present for decreasing the number passed here... but it could be added (rather than just relying on param1's value).
|
I believe that I can't test these changes on my local install of JABS unless the update-reqs is merged first. There is a version from commit-head 49c9b10 on the HPC that I will use to test these updates. 😃 |
|
Cayson initially raised this issue so I tested out the all k-fold cross-validation and it appears as though the top 10 feature labels are incorrect. I trained a Drinking classifier which typically has the distance to Lixit features present. This one does not. The all k-fold does seem to work otherwise though. |
|
It would be nice if the cross validation iteration value included a "cross validation iteration 14/n", with n being the total number that it will test. 🤠 |
…- indexed instead of 0- (for non-computational people)
|
Lower pose version projects aren't getting their feature set correctly propagated to the new functions. On a pose_v2 project: |
Adding feature docs
1. removed reliance on local paths 2. added option to use pose files or videos 3. removed forcing xgboost (in case the user specifies a different classifier) 4. adjusted pose file searching to be more easily update for new pose versions
Conda based installation works better in apple silicon. Have tested this on two different mac M1/M2 arm based architectures.
Added installation instructions for apple M1/M2 macs.
|
The commits above are a rebase merge with main (based on the other recent merge into main: #27) |
…ctor data (which can be directly passed into pd.DataFrame)
Refactor of the way JABS handles features internally * all features are vectors, instead of some being matrices * feature dicts contain feature names * merge operation no longer assumes order and uses pd.concat * classifiers store feature names
|
The feature rewrite to propagate names alongside values fixed the pose_v2 bug. |
…ed duplicated "speeds")
Main always gets bumped Features because internal structure + storage method changed Classifier because feature names are now included for sorting inputs
Adds: