scikit-learn video #1: Intro to machine learning with scikit-learn

Have you tried out a few Kaggle competitions, but you aren't quite sure what you're supposed to be doing? Or perhaps you've heard all the talk in the Kaggle forums about Python's scikit-learn library, but you haven't figured out how to take advantage of this powerful tool for machine learning? If so, this post is for you!

As a data science instructor and the founder of Data School, I spend a lot of my time figuring out how to distill complex topics like "machine learning" into small, hands-on lessons that aspiring data scientists can use to advance their data science skills. I especially enjoying teaching students how to perform effective machine learning using scikit-learn, which is why I'm very excited to announce this new video series!

Getting started with scikit-learn

As a practitioner of machine learning, there's a lot to like about scikit-learn: It provides a robust set of machine learning models with a consistent interface, all of the functionality is thoughtfully designed and organized, and the documentation is thorough and well-written. It sets you up for success! However, I personally believe that getting started with machine learning in scikit-learn is more difficult than in a language such R, as I explain here:

In R, getting started with your first model is easy: read your data into a data frame, use a built-in model (such as linear regression) along with R's easy-to-read formula language, and then review the model's summary output. In Python, it can be much more of a challenging process to get started simply because there are so many choices to make: How should I read in my data? Which data structure should I store it in? Which machine learning package should I use? What type of objects does that package allow as input? What shape should those objects be in? How do I include categorical variables? How do I access the model's output? (Et cetera.) Because Python is a general purpose programming language whereas R specializes in a smaller subset of statistically-oriented tasks, those tasks tend to be easier to do (at least initially) in R.

Despite the challenges, I believe that learning scikit-learn is well-worth the effort because it significantly simplifies your machine learning workflow in the long-term.

My primary goal with this video series, "Introduction to machine learning with scikit-learn", is to help motivated individuals to gain a thorough grasp of both machine learning fundamentals and the scikit-learn workflow. (The series does presume basic familiarity with Python, though next week I'll suggest some resources for learning Python if you're new to the language.) For those who successfully master the basics (or are already intermediate-level scikit-learn users), my secondary goal is to dive into more advanced functionality later in the series.

Video #1: What is machine learning, and how does it work?

What is machine learning?

What are the two main categories of machine learning?

What are some examples of machine learning?

How does machine learning "work"?

Outline of upcoming videos

Because I don't presume any familiarity with machine learning, the first video in the series covers machine learning at a conceptual level: What is it, and how does it "work"?

The second video will introduce scikit-learn, how to set up Python for machine learning, and how to use the IPython notebook.

In the third video, we'll load a dataset into scikit-learn and introduce some additional machine learning terminology.

In the fourth video, we'll build our first machine learning model.

My philosophy is that it's just as important to understand the "why" of machine learning as it is to understand the "how", which is why the first few videos are not focused on writing code. Future videos will also present a mix of code and theory, and will cover these topics and more:

A new video will be released every Wednesday, and posted here on the Kaggle blog. As well, each video will have an associated IPython notebook which will be posted in this GitHub repository. If you want to keep up with the series, you can subscribe to my YouTube channel.

I'd love to hear your comments or questions, as well as suggestions for topics you'd like me to cover. Thanks for watching, and I'll see you next week!

I am glad to see that you are sharing your IPython Notebooks as part of the series, which will be increasingly valuable as you turn your attention to the actual use of scikit-learn in Python.

FWIW, given that your next video will be about learning Python, I've created and shared an IPython Notebook designed to help programmers with experience in other languages learn enough Python to be able to use data analysis and machine learning tools (such as scikit-learn). Here is a link, in case it is of interest or use: Python for Data Science, shortened link: http://bit.ly/python_data_science

Hi Kevin,
Great work..love your videos.
Can you also cover some techniques for feature engineering,dimentionality reduction. I find that knowing the basics of ML and statistical modeling can take you to 300-200 rank on the Kaggle leaderboard , to break that barrier you need to know feature engineering . If you can plan a session or two on these techniques it will be helpful.

Great ideas! I will try to cover both of those topics later in the series. I agree that feature engineering is a critical skill for effective machine learning, though it is also one of the hardest to teach 🙂

Dean Ware

Nice videos. Watched the first few and look forward to watching more. Thanks for this, really helped.

Hi just saw the video..it's nice....although I have a question as you are an R programmer too..Which according to you is a better choice for ML?

Jen Jia

Thank you for the great video! I'm new to ML, after taking specialization courses on Coursera, I am still often thinking about the differences between different ML models and how to choose the correct one. You did a great job generalizing things and summarizing them. Thanks.

Hello , I am new to this can you suggest me some basic books and best way to apply the knowledge gained from here in real life since i am working in a very different domain and would like to move in to world of machine learning