**Algorithms for Data Analysis**

This course is inspired by the one written by Charlotte Laclau who kindly granted me her source files. So far, I use the jupyter notebooks cowritten by Charlotte Laclau and Julien Tissier. Note that it will change over the next few years according to feedback from students and teachers.

## Prerequisites

It is necessary to have prior knowledge on both the fundamentals of mathematics (analysis, linear algebra, probability, statistics) and computer science. As such, it is advised to be proficient in

- the manipulation of vectors and matrix multiplication
- probability distributions (common distributions, mean, variance, etc.)
- the basics of the calculus of variations

## Educational Goals

This course is designed to provide a quick introduction to data analysis algorithms for data engineers. As such, it meets different educational objectives:

- Understand the differences between artificial intelligence and machine learning
- Know which model / algorithm to choose depending on the task
- Learn how to train, validate and test machine learning models
- Discover the basics of numerical optimization
- Master data analysis Python librairies
- Apply the most popular supervised learning algorithms (linear regression, SVM , decision trees, etc.)
- Use two unsupervised learning algorithms (K-means, PCA)

## Course Program

The course is given in 8 sessions of 3 hours each

- Tutorial class on the concepts & librairies of data analysis ( Slides)

- Practical exercice ( Jupyter notebook)

- Numpy
- Pandas
- Scikit-learn

- Practical exercice ( Jupyter notebook)

- Practical exercices on two use cases

- Behaviours of a telecom operator's customers ( Jupyter notebook)
- Video games sales ( Jupyter notebook)

- Tutorial class on machine learning ( Slides)

- Tutorial class on simple supervised learning models ( Slides)

- Practical exercices ( Jupyter notebook)

- differences between AI and ML
- distinction between supervised and unsupervised learning
- training, validation and testing of ML models

- Tutorial class on simple supervised learning models ( Slides)

- K neirest neighbors
- Linear Regression
- Ridge Regression

- Practical exercices ( Jupyter notebook)

- Tutorial class on simple supervised classification models ( Slides)

- Tutorial class on numerical optimization ( Slides)

- Practical exercices

- Logistic Regression
- Decision Trees

- Tutorial class on numerical optimization ( Slides)

- Convex vs. nonconvex
- Role and impact of the step-size

- Practical exercices

- Toy examples ( Jupyter notebook)
- Wine quality analysis ( Jupyter notebook)

- Tutorial class on advanced supervised classification algorithms ( Slides)

- Practical exercices ( Jupyter notebook)

- SVM
- Neural Networks

- Practical exercices ( Jupyter notebook)

- Practical exercice on one use case ( Jupyter notebook)

- Practical exercices on two use cases

- Determine if a mushroom is poisonous ( Jupyter notebook)
- Predict cell phone prices ( Jupyter notebook)

## Course Materials

SlidesData Analysis Librairies
Introduction to Machine Learning
Numerical Optimization
Supervised Learning: Part 1
Supervised Learning: Part 2
Supervised Learning: Part 3
Unsupervised Learning