This shows you the differences between two versions of the page.
|
ep:labs:10 [2021/12/04 16:13] vlad.stefanescu [⚠️ [5p] Task 4.B] |
ep:labs:10 [2025/02/11 22:58] (current) cezar.craciunoiu [Lab 9 - Machine Learning Optimization] |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== Lab 10 - Machine Learning ====== | + | ====== Lab 10 - Machine Learning Optimization ====== |
| ===== Objectives ===== | ===== Objectives ===== | ||
| - | * Understand basic concepts of machine learning | + | * TODO |
| - | * Remember examples of real-world problems that can be solved with machine learning | + | |
| - | * Learn the most common performance evaluation metrics for machine learning models | + | |
| - | * Analyse the behaviour of typical machine learning algorithms using the most popular techniques | + | |
| - | * Be able to compare multiple machine learning models | + | |
| - | ===== Exercises ===== | + | ===== Resources ===== |
| - | The exercises will be solved in Python, using various popular libraries that are usually integrated in machine learning projects: | + | TODO |
| - | * [[https://scikit-learn.org/stable/documentation.html|Scikit-Learn]]: fast model development, performance metrics, pipelines, dataset splitting | + | ===== Tasks ===== |
| - | * [[https://pandas.pydata.org/pandas-docs/stable/|Pandas]]: data frames, csv parser, data analysis | + | |
| - | * [[https://numpy.org/doc/|NumPy]]: scientific computation | + | |
| - | * [[https://matplotlib.org/3.1.1/users/index.html|Matplotlib]]: data plotting | + | |
| - | All tasks are tutorial based and every exercise will be associated with at least one "**TODO**" within the code. Those tasks can be found in the //exercises// package, but our recommendation is to follow the entire skeleton code for a better understanding of the concepts presented in this laboratory class. Each functionality is properly documented and for some exercises, there are also hints placed in the code. | + | ==== Google Colab Notebook ==== |
| - | <note important> | + | TODO |
| - | Because the various **tasks** and **exercises** are **spread throughout the laboratory text**, they are marked with a ⚠️ emoji. Make sure you look for this emoji so that you don't miss any of them! | + | |
| - | </note> | + | |
| + | ===== Feedback ===== | ||
| - | <solution -hidden> | + | Please take a minute to fill in the **[[https://forms.gle/NpSRnoEh9NLYowFr5 | feedback form]]** for this lab. |
| - | Solution: {{:ep:labs:lab_12_ml_revisited_solution.zip}} | + | |
| - | </solution> | + | |
| Line 39: | Line 29: | ||
| - | ==== ⚠️ [15p] Exercise 5 ==== | ||
| - | In this exercise, you will learn how to properly evaluate a **clustering model**. We chose a **K-means clustering algorithm** for this example, but feel free to explore other alternatives. You can find out more about K-means clustering algorithms [[https://towardsdatascience.com/understanding-k-means-clustering-in-machine-learning-6a6e67336aa1|here]]. For all the associated tasks, you don't have to use any input file, because the clusters are generated in the skeleton. The model must learn how to group together **points in a 2D space**. | ||
| - | <note important> | ||
| - | The solution for this exercise should be written in the **TODO** sections marked in the //**clustering.py**// file. Please follow the skeleton code and understand what it does. To run the code, uncomment **perform_clustering()** in //**app.py**//. | ||
| - | </note> | ||
| - | |||
| - | ==== ⚠️ [5p] Task 5.A ==== | ||
| - | |||
| - | Compute the **silhouette score** of the model by using a //Scikit-learn// function found in the **metrics** package. | ||
| - | |||
| - | ⚠️⚠️ **NON-DEMO TASK** | ||
| - | |||
| - | Solve the tasks marked with **TODO - TASK A**. | ||
| - | |||
| - | ==== ⚠️ [10p] Task 5.B ==== | ||
| - | |||
| - | Fetch the **centres of the clusters** (the model should already have them ready for you :-)) and **plot** them together with a **colourful 2D representation** of the data groups. Your plot should look similar to the one below: | ||
| - | |||
| - | {{ :ep:labs:22._clustering_plot.png?600 |}} | ||
| - | |||
| - | You can also play around with the **standard deviation** of the generated blobs and observe the different outcomes of the clustering algorithm: | ||
| - | |||
| - | <code> | ||
| - | CLUSTERS_STD = 2 | ||
| - | </code> | ||
| - | |||
| - | You should be able to discuss these observations with the assistant. | ||
| - | |||
| - | <note> | ||
| - | **HINT: **The **plotting code** is very similar to the one found in the skeleton. You can also [[https://lmgtfy.com/?q=plot+k+means+clusters+python|Google]] it out. ;-) | ||
| - | </note> | ||
| - | |||
| - | ⚠️⚠️ **NON-DEMO TASK** | ||
| - | |||
| - | Look at the hint above and solve the tasks marked with **TODO - TASK B**. Make **at least 3** changes to the standard deviation. That means that **3 plots should be generated**. Save each plot **in a separate file**. | ||
| - | |||
| - | ==== ⚠️ [10p] Exercise 6 ==== | ||
| - | |||
| - | ⚠️⚠️ **NON-DEMO TASK** | ||
| - | |||
| - | Please take a minute to fill in the **[[https://forms.gle/KHMVUhNfCPoR71Ew7 | feedback form]]** for this lab. | ||
| - | ===== References ===== | ||
| - | |||
| - | [[https://www.kaggle.com/uciml/pima-indians-diabetes-database/data|Classification Dataset]] | ||
| - | |||
| - | [[https://towardsdatascience.com/a-beginners-guide-to-linear-regression-in-python-with-scikit-learn-83a8f7ae2b4f|Regression dataset]] | ||
| - | |||
| - | {{namespace>:ep:labs:10:contents:tasks&nofooter&noeditbutton}} | ||