This repository contains a collection of Jupyter Notebook lab exercises developed for the "Machine Learning for Networking" course at Politecnico di Torino, as part of the Master's degree in Cybersecurity. The exercises aim to provide hands-on experience in applying machine learning techniques to various networking challenges, including cybersecurity-related scenarios.
- Course Overview
- Repository Structure
- Requirements
- Installation and Usage
- Covered Topics
- Contributing
- License
- Acknowledgments
The "Machine Learning for Networking" course focuses on the intersection of machine learning (ML) and networking, providing students with both theoretical knowledge and practical skills. The primary goal is to understand how ML techniques can be leveraged to solve complex networking problems, particularly in the cybersecurity domain.
- Develop proficiency in Python programming for ML applications.
- Understand and implement data preprocessing and feature extraction techniques.
- Apply supervised and unsupervised learning methods to networking datasets.
- Explore anomaly detection and traffic classification for network security.
- Analyze real-world internet measurements and network traffic data.
Machine-Learning-For-Networking/
├── labs/
│ ├── lab1
│ ├── lab2
│ ├── lab3
│ ├── lab4
│ ├── lab5
│ ├── lab6
│ ├── lab7
│ ├── lab9
│ └── lab10
├── requirements.txt # Python package dependencies
├── .gitignore # Git ignore rules
├── LICENSE # License information
└── README.md # Project documentation
To run the lab exercises, you will need:
- Python 3.7+
- Jupyter Notebook or JupyterLab
- The libraries listed in
requirements.txt
, including:numpy
pandas
matplotlib
scikit-learn
seaborn
jupyter
Install dependencies with:
pip install -r requirements.txt
git clone https://github.com/sroman0/Machine-Learning-For-Networking.git
cd Machine-Learning-For-Networking
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
pip install -r requirements.txt
jupyter notebook
Navigate to the labs/
directory and open the desired notebook.
The lab exercises cover a variety of topics, including but not limited to:
- Data Preprocessing: Handling missing values, normalization, and feature selection.
- Supervised Learning: Techniques such as decision trees, support vector machines (SVM), and neural networks.
- Unsupervised Learning: K-means clustering, hierarchical clustering, and PCA.
- Anomaly Detection: Identifying unusual patterns in network data.
- Traffic Classification: Categorizing network traffic for improved security monitoring.
- Visualization: Using tools like
matplotlib
andseaborn
to interpret data and model performance.
Contributions are welcome! If you have suggestions or improvements, please open an issue or submit a pull request. Make sure to follow the existing code style and include clear commit messages.
This project is licensed under the GNU General Public License v3.0.
See the LICENSE file for details.
- Developed for the "Machine Learning for Networking" course at Politecnico di Torino - Master's degree in Cybersecurity.
- Special thanks to the course instructors for their guidance and to fellow classmates for their collaboration.
- Datasets used in these labs are either publicly available or provided by the course instructors.
For any questions, feel free to open an issue or contact the repository maintainer.