Build a Machine Learning Portfolio

Complete Small Focused Projects and Demonstrate Your Skills

A portfolio is typically used by designers and artists to show examples of prior work to prospective clients and employers.

Design, art and photography are examples where the work product is creative and empirical, where telling someone you can do it is not valued the same as showing them.

In this post, I will convince you that building a machine learning portfolio has value to you, others and the community.

You will discover what exactly a machine learning portfolio is, the types of projects that can be included and how to make your portfolio really work for you.

exhibit your projects

Exhibit Your Machine Learning Projects
Photo by chicagogeek, some rights reserved

Benefits of a Machine Learning Portfolio

If you are just starting out as a beginner in machine learning or you are a hardened veteran, a machine learning portfolio can keep you on track and demonstrate your skills. Creating a machine learning portfolio is a valuable exercise for you and for others.

Benefits for You

Building up a collection of completed machine learning projects can keep you focused, motivated and be leveraged on future projects.

  • Focus: Each project has a well-defined purpose and end point. Small projects constrained in effort and resources can keep velocity high.
  • Knowledge Base: The corpus of completed projects provide a knowledge base for you to reflect on and leverage as you push into projects further from comfort zones.
  • Trajectory: There are so many shiny things to investigate, reminding yourself that you are looking for a consistent collection projects can be used as a lever to keep you on track.

Benefits to Others

A portfolio of completed projects can be used by others as an indicator of specific skills, ability to communicate and a demonstration of drive.

  • Skills: A project can demonstrate your capability with regard to a specific problem domain, tool, library technology stack or algorithm.
  • Communication: A project must be understood at least in terms of its purpose and the findings. The curation of a good portfolio requires excellent communication skills that tautologically demonstrate your ability to communicate technical subjects well.
  • Motivation: Working on and completing side projects, regardless of the size of scope takes a certain level of self-discipline. The fact that you managed to put together a portfolio is a monument to your interest in the subject and ability to manage your time.

Benefits to the Community

Sharing your projects in public extends the benefits to the broader machine learning community.

  • Engagement: A public project can elicit feedback from third-parties which may provide extensions and improvements from which both you and the community itself can learn from.
  • Starting Point: A public portfolio project can provide the jumping off point from which others can learn and build upon, perhaps for their own small project or something serious.
  • Case Study: a public project can provide a point of study perhaps for a unique or interesting algorithm behavior or problem decomposition, the very source of innovation.

Hopefully, I’ve convinced you that building a machine learning portfolio has some benefits that interest you. Next, we will look at what exactly a machine learning portfolio is.

Build a Machine Learning Portfolio

A machine learning portfolio is a collection of completed independent projects, each of which uses machine learning in some way. The folio presents the collection of projects and allows review of individual projects.

Five properties of an effective machine learning portfolio include:

  • Accessible: I advocate making the portfolio public in the form of a publicly accessible webpage or collection of public code repositories. You want people to find, read, comment on, and use your work if possible.
  • Small: Each project should be small in scope in terms of effort, resources, and most importantly, your time (10-20 hours). You’re busy and it’s hard to keep focus. See my Small Projects Methodology.
  • Completed: Small projects help you have finished projects. Set a modest project objective and achieve it. Like mini-experiments, you present the findings of your successes and your failures, they are all useful learnings.
  • Independent: Each project should be independent so that it can be understood in isolation. This does not mean you can’t leverage prior work, it means that the project makes sense on its own as a standalone piece of work.
  • Understandable: Each project must clearly and effectively communicate it’s purpose and findings (at the very least). Spend some time and make sure a fresh set of eyes understand what you did and why it matters.

Four types of small project ideas that may inspire you, include:

  • Investigate a property of a machine learning tool or library.
  • Investigate the behavior of a machine learning algorithm.
  • Investigate and characterize a data set or machine learning problem.
  • Implement a machine learning algorithm in your favorite programming language.

Some ideas for projects that you probably didn’t think were portfolio pieces include:

  • Coursework: Your clear presentation of your notes and homework for a machine learning related course (such as a MOOC).
  • Book Review: Your clear presentation of your notes from reading and reviewing a machine learning book.
  • Software Review: Your clear presentation and worked examples for using a machine learning related software tool or library.
  • Competition Participation: You’re clearly presented notes and results for participating in a machine learning competition, such as Kaggle.
  • Commentary: An essay in response to a machine learning themed blog post or your detailed response to a machine learning related question on a Q&A site like Quora, Reddit Machine Learning or CrossValidated.

Now that you know what a machine learning portfolio is and have some ideas of projects, let’s look at how to turn up the awesome on your portfolio.

Making Your Portfolio Great

To make your portfolio shine, you need to do some light marketing. Don’t worry, it’s none of that slimy stuff, just good old fashioned getting the word out.

show off what you can do

Show off what you can do.
Photo by Thomas Shahan, some rights reserved

Code Repository

Consider using a public source code repository such as GitHub or BitBucket that naturally list your public projects. These sits encourage you to provide a readme file in the root of each project that describes what the project is all about. Use this feature to clearly describe the purpose and findings for each project. Don’t be afraid to include images, graphs, videos and links.

Provide unambiguous instructions for downloading the project and recreating the results (if there is code or experimentation involved). You want people to re-run your work, make it as easy as possible (i.e. type this to download then type this to build and run it).

Curate Projects

You can slap together any old project on GitHub, but only include your best, clearest most interesting work in your machine learning portfolio.

Curate your projects like a gallery. Choose those that best demonstrate your skills, interests and capabilities. Show off what you can do and what you have done. These ideas of self-promotion can feed back into the projects you might want to tackle. Be clear in your vision, where you want to be and what projects you want to tackle that will help you get there. Own the process.

curate like a gallery

Curate Your Projects Like a Gallery
Photo by Marshall Astor, some rights reserved

Present Findings

Spend a lot of time writing up results. Explain how they relate to the aims of the project. Explain the impact they have in the domain or could have. List off opportunities for extensions that you would or could explore if you had another month or year to deep dive on the project.

Create tables, graphs and any other pretty pictures that help you tell your story. Write up your findings as a blog post. For bonus points, create a short screen cast showing how you got the results and a small power point presentation for what that mean, put it up on YouTube. This video can be embedded in your blog post and linked to from your project repository readme file.

Depending on the findings you have and how important they are to you (such as doing well in a Kaggle competition), you can consider creating a technical report and uploading it to scribd and uploading your slides to SlideShare.

Promote Your Work

You can share the details of each project as you finish it. You may be completing one per week depending on the number of free hours you can find around study and/or work. Sharing links on social media is a good start, such as twitter, facebook and Google+.

I would urge you to add each project (or just your best projects) as “projects” on LinkedIn. It supports the idea of projects and you may have to create a job for them to be listed against. Consider the name of your blog, your sole trader company or invent a relevant job and title such as “Machine Learning Mastery” (wink) or “Self Education“.

Now that we have some ideas on how to make our portfolio shine and how to get the word out, can look at some examples of machine learning portfolios.

Trend of Machine Learning Portfolio

The idea of a code portfolio is not new, it was baked into GitHub. What is interesting is that in recent interviews with data scientists and managers, portfolios are being requested even desired along with participation in machine learning competitions and completion of online training.

Like sample code in programming interviews, Machine Learning portfolios are getting to become a serious part of hiring.

Look for examples of good (or at least filled out) machine learning portfolios. Look for people doing well in machine learning competitions, they typically have an amazing collection of projects described on their blogs and in their public code repositories.

Look for contributors to open source machine learning projects, they can have amazing tutorials, applications and extensions to the software on their blogs and public code repositories.

Get started now. Dig up your projects and put them together in a story that explains your knowledge, interest or skills in machine learning.

Over To You

Have you completed a machine learning project or do you have a portfolio of projects?

Leave a comment and show them off.

What do you think is required of an excellent machine learning portfolio?

Update, see the related post:

67 Responses to Build a Machine Learning Portfolio

  1. Avatar
    Ryan Herr June 10, 2014 at 1:16 am #

    Any recommendations of good example portfolios? Particularly, any examples that have helped people break in and get hired?

  2. Avatar
    Laritza August 22, 2016 at 4:03 am #

    Thank you very much for this great post. I am thinking about to create an online data science portfolio and all your suggestions about machine learning projects are an excellent start point.

    • Avatar
      Jason Brownlee August 22, 2016 at 7:23 am #

      I’m glad to hear it Laritza.

    • Avatar
      Sagar October 6, 2016 at 11:22 pm #

      +1 Laritza.
      Another wonderful well written article. Precise at point. It’s really great idea to have a ML portfolio.

      • Avatar
        Ossama Zaiter September 11, 2019 at 6:39 am #

        Jason, I liked and appreciate your work.

  3. Avatar
    Hrishikesh Kherdekar January 25, 2017 at 4:48 pm #

    Hi Jason,
    Thanks for this wonderful article. Could you please show me a sample portfolio? I am new to Machine Learning.

    Regards,
    Hrishikesh

  4. Avatar
    Freelance Paraguay February 17, 2017 at 2:27 pm #

    Very good! awesome post!

  5. Avatar
    Vinod Ralh March 8, 2017 at 11:10 am #

    I hadn’t thought seriously about doing this.. but its a great idea… even for myself to ‘reinforce’ my own learnings.

    • Avatar
      Jason Brownlee March 9, 2017 at 9:52 am #

      I could not agree more Vinod! Let me know how you go.

  6. Avatar
    Karunakaran April 30, 2017 at 4:00 pm #

    This is great.

  7. Avatar
    Porimol Chandro May 15, 2017 at 5:04 pm #

    Hi Jason,

    Thanks for this wonderful article. I’m newcomer in the ML technology. Everyday I’m studying on that field and learning new term, technology, algorithms.
    Though, I’m new for that I start a small project on ML. I worked to build a Gender Predicting superviesed machine learning model. Here is the github repository link:

    https://github.com/porimol/gender-predictor

  8. Avatar
    shravankumar June 3, 2017 at 10:34 pm #

    Hey Jason,

    Thank you so much for such a wonderful blog post. You inspired me a lot with all your blog posts and news letters, you made the machine learning so easy for me.

    Here are my portfolios:

    I used to write blog posts to help people to learn from my experiences here:
    shravankumar147.wordpress.com

    Here is my github page, where a lot of projects are explored and open sourced:
    https://github.com/shravankumar147

  9. Avatar
    Mariano June 23, 2017 at 11:13 pm #

    Could you post an example of such portfolio?

    Can we consider each your post a portfolio itself?

  10. Avatar
    Jadhav datta July 20, 2017 at 1:40 am #

    Son ,I am mechanical student and beginner so ,I have no idea what is machine learning .Can you tell me what kind of application of machine learning.

  11. Avatar
    MohammadEhtasham Billah February 1, 2018 at 4:50 am #

    I am working on a project.I am trying to predict the credit card holders who are going to be default next month.So far, I have not found any satisfactory outcome.The precision measures for different algorithms are as follow

    accuracy :82-84%
    precision : 66-70%
    recall:35-37%
    F1 score:42-47%

    The accuracy is higher because most of the customers are not going to be default in the next month.But when it comes to predicting customers that are going to be default the result is very poor (as you can see in the recall).So far, I have applied: KNN, SVM, kernel SVM, Decision tree.I have already tried to fine tune the hyperparameter for these models.The results did not improve much.So, I am going to apply random forest, naive Bayes and XGBOOST and some ensemble methods as well.Do you think my findings worth publishing at github?

    Thank you

  12. Avatar
    Shueb February 26, 2018 at 8:16 pm #

    Really thanks Jason, the given steps has cleared my understanding towards Ml and how it will used in application.

  13. Avatar
    Mars March 29, 2018 at 7:44 am #

    Thank you Jason! Very interesting post!

    i am working for a company as electrical engineer and starting working on some self- proposed internal ML projects, my question is the following: how can i insert these projects in my ML portofolio since i cannot make them public??

    • Avatar
      Jason Brownlee March 29, 2018 at 3:15 pm #

      Good question. Perhaps you can summarize the methods and findings without giving away private details.

      • Avatar
        mars April 3, 2018 at 11:46 pm #

        Good idea! Thanks!

  14. Avatar
    Jesús Martínez April 12, 2018 at 12:05 am #

    Having a portfolio, even if you’re not into machine learning, is absolutely necessary. The great thing about portfolios is that they showcase most of the skills a potential employee love in an employee: Drive, passion, focus, autonomy, technical knowledge! In my experience, having projects in GitHub is fine, but developing end to end applications that can be used as a small product (maybe a webpage or a simple mobile app) works best!

  15. Avatar
    Daniel April 27, 2018 at 3:20 am #

    Jason, thanks for providing a roadmap for us newbies. Do you have a recommendation in terms of public data repositories for industrials and governments which we can build projects from?

  16. Avatar
    Mamta May 30, 2018 at 5:47 pm #

    Great article feeling more confident now…

  17. Avatar
    Maker July 10, 2018 at 7:08 am #

    Thank you Sir,

  18. Avatar
    Jay Nankani October 31, 2018 at 4:44 pm #

    Check out my portfolio
    http://www.kaggle.com/jaysn1
    http://www.github.com/jaysn1

  19. Avatar
    Momil Ijaz November 19, 2018 at 3:52 pm #

    Should i go for building a portofolio out of the small beginner level projects i am doing while following Andrew’s coursera’s MAchine learning intro.

  20. Avatar
    Martin November 19, 2018 at 7:39 pm #

    Hi Jason,

    Thank you very much for this and all other posts, you have helped me a lot.

    I just finished my first Machine Learning report, if you are intrested you can find it at https://github.com/Aillie/Auto-MPG-MAchine-Learning

    Keep up the good work!

    Sincerely Martin

  21. Avatar
    danz December 12, 2018 at 9:10 pm #

    Hi Jason,

    Excellent advice!
    I especially like the advice of starting, even with a modest project.
    Also, I like the idea of having a portfolio on GitHub that can be shown to an employer.
    A portfolio would help build up the knowledge in a solid way fore sure.
    Before this post I also had in mind something of this kind, but I considered to dog more deeply in documentation before…(this is how I got to Attention networks, a subject that is clearly too much for me at the moment)
    But now I am determined to start building a portfolio, even a modest one in the beginning, and buying your “Machine Learning Mastery With Python” as a first inspiration source.

    Thanks again for all and best regards,
    Dan

  22. Avatar
    Mohd Sakib January 23, 2019 at 3:33 am #

    could u post sample portfolio for ML fresher or experienced plz

  23. Avatar
    Luzuko March 8, 2019 at 6:38 pm #

    Very insightful read…thanks, will implement immediately

  24. Avatar
    Muhammad iqbal April 27, 2019 at 11:29 am #

    Sir, I have 10 projects such like

    1) House price predicting

    2) iris flower classification

    etc

    Can I include these projects in my portfolio?

  25. Avatar
    Mohammad Iqbal June 6, 2019 at 5:02 am #

    Can you please explain what you mean by

    “I would urge you to add each project (or just your best projects) as “projects” on LinkedIn. It supports the idea of projects and you may have to create a job for them to be listed against. Consider the name of your blog, your sole trader company or invent a relevant job and title such as “Machine Learning Mastery” (wink) or “Self Education“.”

    Are you suggesting we complete projects, then give ourselves “Machine Learning Engineer” job title with our own company as the employer, because this seems like a good idea.

    • Avatar
      Jason Brownlee June 6, 2019 at 6:38 am #

      Not really. I am encouraging you to market your real skills.

  26. Avatar
    Abhishek Singh August 4, 2019 at 7:22 am #

    Thanks so much, @Jason B, for all the great posts you have shared with the community. Very pragmatic, crisp and succinct.

  27. Avatar
    Franck Tchouanga October 23, 2019 at 9:52 pm #

    fully working algorithm for conversion from png to mnist dataset check at this repository

    https://github.com/Tchouanga12/png-to-mnist-convertion-algorithm

  28. Avatar
    Franck Tchouanga October 24, 2019 at 6:22 am #

    welcome sir

  29. Avatar
    Atul January 30, 2020 at 5:52 pm #

    Actually sir i’m learning in third year of information technology and I have submit main project to final year so please give any suggestion for project on machine learning ,
    if you have to any project on machine learning in python so I m ready for getting this…..Thaaankssssss…!

  30. Avatar
    Nishant DWIVEDI April 7, 2020 at 3:00 am #

    Hi Jason.. How should i start into ML.. Its almost a year now i have been finding a way to get into ML…

    Regards,
    Nishant Dwivedi

  31. Avatar
    bala September 12, 2020 at 4:04 pm #

    hi jason, i have my repository in github .this is my id https://github.com/wiredata

  32. Avatar
    Sylvanus January 27, 2021 at 11:08 pm #

    Thanks Jason for your comprehensive article. i can’t wait to start building my blog.

  33. Avatar
    JC Chouinard March 4, 2021 at 4:22 pm #

    I found that writing a blog about your learnings is the best way to learn fast. Write for yourself, and don’t forget a single step. That way, if no one uses your blog, at least you will. But also, committing publicly to blog on Machine Learning (or whatever subject, mine is SEO) will force you to produce higher quality content, and dig deeper into your own understanding of a subject. Learning way faster this way.

Leave a Reply