carpentries-incubator / ml4bio-workshop

Materials for a workshop introducing machine learning to biologists
https://carpentries-incubator.github.io/ml4bio-workshop/
Other
21 stars 8 forks source link

Machine learning carpentry #56

Open agitter opened 5 years ago

agitter commented 5 years ago

@sstevens2 pointed me to this machine learning carpentry project: https://github.com/machinelearningcarpentry/machine-learning-novice https://machinelearningcarpentry.github.io/machine-learning-novice/

This is a workshop for machine learning novices that uses scikit-learn to introduce supervised learning, unsupervised learning, ethics, etc. It's intended for participants with basic Python knowledge.

I'm using the issue to connect with @colinsauze, the maintainer. @colinsauze we're developing a workshop to teach machine learning "literacy" that is aimed at biologists with minimal computational backgrounds and no programming experience. Consequently, we created a graphical interface to wrap scikit-learn classification-related APIs and introduce supervised learning concepts. Although we're focusing on different audiences, we could possibly partner on some topics. Our materials have open licenses.

We have one example Jupyter notebook and have discussed making more to parallel the workflows participants execute in the graphical interface (related to https://github.com/machinelearningcarpentry/machine-learning-novice/issues/1). We also curating interesting datasets, like #51, which is relevant to https://github.com/machinelearningcarpentry/machine-learning-novice/issues/2. Our examples happen to be biology related though.

cmilica commented 5 years ago

I have never taken a carpentry workshop - are these given to the participants as manuscripts for the reference? Or is this for online use?

@sstevens2 I wonder how much the participants engage in the questions that are on the bottom of each lesson? So, the full workshop is predicted to be about 4 and a half hours?

What I really like about this is the language of the workshop - simple and "every day". Incredibly easy to understand! I think we should aim for that.

Fan moment - I love that this workshop is using Gapminder - I am a huge fan of Hans Rosling! 👍

The workshop is code-heavy. But I like the structures of the lessons and the language of the manuscripts a lot.

agitter commented 5 years ago

@cmilica the carpentry workshops are typically designed as in person workshops. Workshop instructors collaborate on the materials. Participants can access those materials and follow along as the instructors lead the interactive activities. Participants can also reference the materials after the workshop as a guide.

As another example, here is a more mature workshop: http://swcarpentry.github.io/git-novice/ It has the lessons on the main page as well as extras like a glossary and instructor notes.

So, the full workshop is predicted to be about 4 and a half hours?

Yes, that's the correct interpretation of the time annotations.

agitter commented 5 years ago

We can review the carpentries template https://github.com/carpentries/workshop-template as we consider adopting their format. Most carpentries workshops are designed around command line operations (bash, Python, R, etc.). We will need to think about how our paper- and GUI-based activities would fit that format.

sstevens2 commented 5 years ago

@cmilica The website is mostly used as a teaching reference for the instructor but we do usually tell the learners about the materials so they can go back to them in the future. We don't print it much though if that is what you are asking above and mostly use it as an online resource.

I've never taught this specific Carpentry lesson and as far as I know it has never been taught on campus. It is fairly new and is in "alpha" status so it is still being actively developed and hasn't been taught much.
As for the questions at the bottom. I think the formatting is a bit messed up on some of those but they are "exercises" for the learners to do as part of the workshop. Typically the instructor will put these on slides or somehow present them to the learners and give them a little time to work on then before bringing the group back together to go over the answer.

We use the gapminder lessons in the Software Carpentry workshop we teach too. :-D

If you are interested in sitting in on part of a workshop, we are running them as a series in Sept/Oct and you are welcome to join for a section or more. Links for the two different workshops on our training webpage.

sstevens2 commented 5 years ago

@agitter You're right in noting that the Carpentries doesn't have a whole lot of GUI lessons, typically due to our emphasis on reproducibility. The best example of a lesson that uses a GUI interface and is taught regularly is probably the Data Carpentry Ecology Open Refine Lesson. OpenRefine is a GUI but is reproducible since it saves the commands behind the scenes and will let you export/import the script for reuse.

agitter commented 5 years ago

Thanks @sstevens2. What's your opinion on the suitability of this machine learning "concepts" and "literacy" focused workshop in the Carpentries format? Our approach is atypical because we don't actually recommend using our GUI for real data analysis. It's not reproducible or high-throughput. Rather, we use that GUI and other activities to introduce concepts that could lead participants to more technical machine learning workshops and training, collaborations, a better understanding of the literature in their field, etc.

cmilica commented 5 years ago

@sstevens2 I can attend one of the Ecology carpentries. Do I need to sign up? Can I just come to observe one day?

agitter commented 5 years ago

The workshop lessons at https://carpentries.github.io/lesson-example/ can guide us into what it would take to set up this workshop in Carpentries format and what features it would offer. In particular, the formatting shows how different callouts are used for exercises, discussion questions, solutions to activities, etc., which I find appealing.

sstevens2 commented 5 years ago

@cmilica You are welcome to sit in on one of the parts of the DC ecology workshop and see how we teach it! Let me know which session you are planning to join.

agitter commented 5 years ago

We are going to start experimenting with the Carpentries template on a gh-pages branch. Initially, we'll keep it independent of master. If we like this direction, we'll decide how to merge them.

I added the attribution in d549dd428024afab81e10e7e730c21d48adceb14.

I copied the template using

git remote add carpentries https://github.com/carpentries/workshop-template.git
git fetch carpentries gh-pages
git checkout gh-pages
git push origin gh-pages

@cmilica you should now be able to pull gh-pages from our repository and begin modifying it. Our website is https://gitter-lab.github.io/ml-bio-workshop/

sstevens2 commented 5 years ago

@agitter I think you copied the workshop website template instead of the lesson one. Sorry I didn't notice above. You can find the guide here (https://carpentries.github.io/lesson-example/) and the repo you need to import here (https://github.com/carpentries/styles)

agitter commented 5 years ago

@sstevens2 you're right! Thanks for catching this before we tested any customization. I deleted that gh-pages branch and started over.

New attribution in f92efa51226a5787db45b609a6a08aaacabd4518

Initialized using

git remote add carpentries https://github.com/carpentries/styles.git
git fetch carpentries gh-pages
git checkout gh-pages
python bin/lesson_initialize.py
git add .
git commit -m "Initialize lesson with bin/lesson_initialize.py"
git push origin gh-pages

I need to look at the .travis.yml that was created to see if this will conflict with the .travis.yml file on our master branch. It should be okay to have a different config file for different branches. However, the first build failed. This boilerplate config is also different from the config in the example lesson.

agitter commented 3 years ago

There is also a deep learning intro now in carpentries-incubator: https://github.com/carpentries-incubator/deep-learning-intro