Data School
Are you trying to learn data science so that you can get your first data science job? You're probably confused about what you're "supposed" to learn, and then you have the hardest time actually finding lessons you can understand!
Data School focuses you on the topics you need to master first, and offers in-depth tutorials that you can understand regardless of your educational background.
My name is Kevin Markham, and I'm the founder of Data School. I've taught data science using the Python programming language to hundreds of students in the classroom, and hundreds of thousands of students (like you) online.
Finding the right teacher was so important to my data science education, and so I sincerely hope that I can be the right data science teacher for you.
Please click the SUBSCRIBE button to be notified of my new data science tutorials! I look forward to interacting with you in the comments :)

Top AI news: ChatGPT undeletes your chats, Copilot security flaw, Veo 3 TV ad

What is Retrieval Augmented Generation (RAG)?

Jupyter & IPython terminology explained

How to keep up with AI in 2025

Build an AI chatbot with Python

Course outline: "Master Machine Learning with scikit-learn"

Course overview: "Master Machine Learning with scikit-learn"

Introduction to model ensembling

How to save a scikit-learn Pipeline with custom transformers

Should I shuffle samples with cross-validation?

Cost-sensitive learning in scikit-learn

scikit-learn vs Deep Learning

How to read the scikit-learn documentation

My top 50 scikit-learn tips

21 more pandas tricks

Adapt this pattern to solve many Machine Learning problems

Tune multiple models simultaneously with GridSearchCV

Access part of a Pipeline using slicing

Tune the parameters of a VotingClassifer or VotingRegressor

Ensemble multiple models using VotingClassifer or VotingRegressor

Create feature interactions using PolynomialFeatures

Speed up GridSearchCV using parallel processing

Use OrdinalEncoder instead of OneHotEncoder with tree-based models

Passthrough some columns and drop others in a ColumnTransformer

Drop the first category from binary features (only) with OneHotEncoder

Estimators only print parameters that have been changed

Load a toy dataset into a DataFrame

Get the feature names output by a ColumnTransformer

Create an interactive diagram of a Pipeline in Jupyter

Most parameters should be passed as keyword arguments