From d2e87aec97e326bed5693fc604f1ec9808a87c60 Mon Sep 17 00:00:00 2001 From: Yadunand Prem Date: Sun, 28 Apr 2024 15:58:30 +0800 Subject: [PATCH] maybe good? --- cs2109s/labs/environment.yml | 4 +- cs2109s/labs/final 2/main.ipynb | 605 ++++++++++++++++ cs2109s/labs/final 2/scratchpad.ipynb | 846 +++++++++++++++++++++++ cs2109s/labs/final-mock/main.ipynb | 110 ++- cs2109s/labs/final-mock/scratchpad.ipynb | 385 +++++++---- cs2109s/labs/final/main.ipynb | 255 ++++--- cs2109s/labs/final/scratchpad.ipynb | 564 +++++++-------- cs2109s/labs/flake.lock | 8 +- cs2109s/labs/flake.nix | 15 +- cs2109s/labs/ps5/ps5.ipynb | 16 +- cs2109s/labs/ps7/ps7.ipynb | 116 +--- cs2109s/labs/ps8/ps8.ipynb | 75 +- cs3230/main.pdf | Bin 268844 -> 271446 bytes cs3230/main.typ | 16 + cs3230/pa3.pdf | Bin 197927 -> 197909 bytes cs3234/labs/midterm_project.v | 303 ++++++-- cs3234/labs/term-project.v | 20 + ma1522/1522 Notes.pdf | Bin 119191 -> 163717 bytes ma1522/1522 Notes.tex | 2 + ma1522/ch_03.tex | 448 +++++++++++- ma1522/preamble.tex | 9 +- 21 files changed, 3097 insertions(+), 700 deletions(-) create mode 100644 cs2109s/labs/final 2/main.ipynb create mode 100644 cs2109s/labs/final 2/scratchpad.ipynb diff --git a/cs2109s/labs/environment.yml b/cs2109s/labs/environment.yml index 6cd6acd..804f2d8 100644 --- a/cs2109s/labs/environment.yml +++ b/cs2109s/labs/environment.yml @@ -11,5 +11,5 @@ dependencies: - scikit-learn=1.0.2 - seaborn=0.12.0 - timeout-decorator=0.5.0 - - pytorch=1.11.0 - - torchvision=0.12.0 \ No newline at end of file + - pytorch=1.12.1 + - torchvision=0.12.0 diff --git a/cs2109s/labs/final 2/main.ipynb b/cs2109s/labs/final 2/main.ipynb new file mode 100644 index 0000000..16e02dc --- /dev/null +++ b/cs2109s/labs/final 2/main.ipynb @@ -0,0 +1,605 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "7d017333", + "metadata": {}, + "source": [ + "# Final Assessment: Making Prediction on a Dataset without Domain Knowledge" + ] + }, + { + "cell_type": "markdown", + "id": "09648cba", + "metadata": {}, + "source": [ + "**Release Date:** Saturday, 27 April 2024, 20:00\n", + "\n", + "**Due Date:** Sunday, 28 April 2024, 23:59" + ] + }, + { + "cell_type": "markdown", + "id": "022cb4cd", + "metadata": {}, + "source": [ + "## Overview\n", + "\n", + "In this assessment, your goal is to put into practice what you have learnt over the semester by building a model that can accurately predict the outcomes for new data samples from the same distribution from a given data set. Because the dataset's origin and domain are unknown, you cannot rely on any prior domain knowledge. Instead, you will need to analyze and comprehend the data based solely on its inherent characteristics and the given training samples. You may employ any techniques to uncover the data's nature, such as visualization, analysis, or experimentation.\n", + "\n", + "In general, the techniques learnt in class should be sufficient, but you may choose to explore new ones. For fairness and for practical reasons, your solution will be implemented with the libraries that we have used in CS2109S. You may find \"[ML for People in Hurry](https://colab.research.google.com/drive/1yHecT3sXevjdko9KmRSIOOJxXdf43xd6?usp=sharing)\" shared in Lecture 12 useful.\n", + "\n", + "Once you have some understanding of the data, you can create a model (or a set of models) that takes into account the data's characteristics. Your model can perform a series of preprocessing steps before training or making predictions. You will need to contemplate how you will train your model, what objective you will use, and how to evaluate its performance properly. Additionally, you may want to conduct a hyperparameter search to enhance your model's performance.\n", + "\n", + "There is no model answer to the problem. There are many possible approaches and many of them might perform equally well. \n", + "\n", + "### Constraints:\n", + "\n", + "* You are only allowed to use **neural networks** as the hypothesis class of your supervised learning models.\n", + "* Your model is allowed to take **no more than 3 minutes** on the Coursemology server and use **at most 1 GB of memory**.\n", + "* **WARNING: The use of any other hypothesis class is strictly prohibited and the failure to comply with this requirement will result in zero marks for this assessment**.\n", + "* You are allowed and you might find it useful to use unsupervised learning methods such as PCA and K-means clustering to preprocess your data, but preprocessing is optional.\n", + "\n", + "### Required Files:\n", + "\n", + "* `main.ipynb` (this Jupyter notebook)\n", + "* `scratchpad.ipynb` (Jupyter notebook for your \"scratch paper\") \n", + "* `environment.yml` (environment file)\n", + "* `data.npy` (dataset)\n", + "\n", + "\n", + "\n", + "### Policy on Citing AI:\n", + "\n", + "As explained in lecture, we have little choice but to allow the use of AI. Here are some guidelines for citing AI-generated content:\n", + "\n", + "**ChatGPT**: When referencing content generated by ChatGPT, Bing, or something similar, please include the link(s) to the conversation(s) in `scratchpad.ipynb` as part of the supporting evidence for your work.\n", + "\n", + "**GitHub Copilot**: For GitHub Copilot or something similar, please include one of the following in `scratchpad.ipynb`: (i) If your code was generated based on a prompt, include the prompt used along with a link to the generated code (if possible). (ii) If the code was produced through autocomplete without a specific prompt, kindly provide a screenshot of the autocomplete suggestion.\n", + "\n", + "We have caught students in the past attempting to explain away instances of plagiarism by falsely claiming that they received input from ChatGPT. It is important to note that these attempts were identified and flagged by our plagiarism checker. **Disciplinary action was taken against these students** for their actions.\n", + "\n", + "We would like to remind all students that academic integrity is of utmost importance, especially during final assessment. Any attempt to plagiarize will result in **severe disciplinary action**. We urge you to complete this final assessment with honesty and integrity, and refrain from resorting to any unethical practices.\n", + "\n", + "Please be aware that **our plagiarism detection tools are highly effective** and any attempt to cheat or plagiarize will likely be detected. It is in your best interest to demonstrate your own knowledge and skills in completing the final assessment.\n", + "\n", + "### Honour Code: \n", + "\n", + "* Note that plagiarism will not be condoned! \n", + "* Also, because this is an individual assessment, you **MUST NOT** discuss your approach or solution with your classmates. If you are caught doing so, you will be subject to disciplinary action because it will considered an act of academic dishonestly. \n", + "* You may check the internet for references, but if you submit code that is copied directly and subsequently modified from an online source, you need to provide us with the reference and URL! For good measure, please cite all references in your final solution write-up and include all your working in `scratchpad.ipynb`.\n", + "\n", + "### Latest Updates, Announcements, and Clarifications:\n", + "\n", + "We recommend regularly checking the [official forum thread for the final exam](https://coursemology.org/courses/2714/forums/homework/topics/official-final-assessment) to stay up-to-date with the latest updates and announcements. Additionally, you can use this thread to request clarifications regarding any aspect of the exam." + ] + }, + { + "cell_type": "markdown", + "id": "ef4d73fd", + "metadata": {}, + "source": [ + "## Jupyter Notebooks\n", + "\n", + "In this final assessment, you will be working with two Jupyter notebooks: `main.ipynb` and `scratchpad.ipynb`.\n", + "\n", + "### `main.ipynb`\n", + "\n", + "This notebook serves as the primary guide to completing the final exam. It includes instructions, guidelines, and a final model code template that you must complete and copy-paste into Coursemology for submission. You can think of this as the question paper. \n", + "\n", + "It is important to note that `main.ipynb` **should not be uploaded**.\n", + "\n", + "### `scratchpad.ipynb`\n", + "\n", + "`scratchpad.ipynb` is your \"scratch paper,\" where you will perform various analyses and transformations on the data we provided you with and experiment with different techniques. You can think of this as your answer booklet. \n", + "\n", + "It is important to document your thoughts in this notebook so that we can understand how you arrived at your final model. Note that your working will not be graded directly. Instead, you will have to summarize your work in a report of not more than 1,000 words. You should follow the format/sections given to help make the grading easier for the profs. Some sections are optional. If they are not applicable, just indicate \"Nil.\"\n", + "\n", + "Mostly, the working submitted will be used as a sanity check that you actually did the work you claim to have done, instead of copying it from some online source, or worse, copied from another student. If we find 2 submissions are suspiciously similar, we will check the working for the 2 students. It is highly implausible that 2 students will come up with the same working if they did not discuss their approach/answers. \n", + "\n", + "Once you have found your best model, you should copy and paste the model and its necessary components from `scratchpad.ipynb` to Coursemology for submission. It is important to **ensure that your model adheres to the model code template provided in `main.ipynb`**. You need to make sure that the code you submit in Coursemology is self-contained. We strongly encourage you to test your model locally using `main.ipynb` by copying the necessary parts from your scratchpad to `main.ipynb` and check that your model runs correctly, to avoid wasting your attempt on Coursemology. You will be giving only a limited number of attempts on Coursemology because it is extreme memory-intensive (aka expensive) to run these models and we don't want students to be spamming our servers. \n", + "\n", + "**Remember to upload `scratchpad.ipynb` when submitting your final exam.** " + ] + }, + { + "cell_type": "markdown", + "id": "c51cc898", + "metadata": {}, + "source": [ + "## Compute Resources\n", + "\n", + "### IMPORTANT: Limitations to Compute Resources\n", + "\n", + "At some level, machine learning can generally do better if we throw more resources into the problem. However for reasons of fairness and practicality, we need to limit the compute resources that you can use for this problem. The way that we decide to quantify this is to limit your model to take **no more than 3 minutes** on the Coursemology server and uses **at most 1 GB of memory**. The Coursemology server also **does not have a GPU,** so you should not use GPU in your model. You should also assume that your model will have access to only 1 CPU and not include multi-processor code in your submission. This means that you should start off with a simple model and then gradually increase the complexity of your model to make sure that you stay within the allocated compute resources.\n", + "\n", + "These limitations exist for 2 reasons: (i) first, we need to contain the costs of running this Final Assessment; and (ii) we need to ensure a fair playing field for all students. We need to make sure no student performs better than other students simply because of access to faster machines or more resources. \n", + "\n", + "### Available Compute Resources\n", + "\n", + "For this assessment, you will need access to some computing resources to run your code and train your machine learning models. Two popular options are Google Colaboratory and the School of Computing Compute Cluster.\n", + "\n", + "* **[Google Collaboratory](https://colab.research.google.com/)**, or \"Colab\" for short, is a free cloud-based platform provided by Google that allows you to write and run Python code using a Jupyter notebook interface. Colab provides access to a virtual machine with a GPU and sometimes even a TPU, which can speed up computation for tasks like training machine learning models. You can use Colab on your own computer without installing any software, and it provides access to a number of libraries and datasets. However, there may be limits on how much time, memory, and storage space you can use, and you may need to reauthorize your session frequently.\n", + "\n", + "* **[The School of Computing Compute Cluster](https://dochub.comp.nus.edu.sg/cf/guides/compute-cluster/start)** is a set of high-performance computing resources that are available to students, faculty, and researchers affiliated with the National University of Singapore's School of Computing. The cluster consists of multiple nodes, each with its own set of CPUs, memory, and storage. You can submit jobs to the cluster using the [Slurm workload manager](https://slurm.schedmd.com/documentation.html), which allocates resources to jobs based on availability and user-specified requirements. The Compute Cluster provides significantly more computing power than Colab, with the ability to scale up to hundreds or even thousands of cores. However, you need to apply for access to the cluster, and there may be limits on the amount of resources that can be used at any given time. Additionally, using the cluster requires some technical expertise and familiarity with the Linux command line interface.\n", + "\n", + "If you prefer not to use Google Colaboratory or the School of Computing Compute Cluster, you can also run your code on your own computer. However, keep in mind that your computer may not have as much processing power or memory as the other options, so your code may run more slowly and you will take more time to complete certain tasks." + ] + }, + { + "cell_type": "markdown", + "id": "7e323c3c", + "metadata": {}, + "source": [ + "## Scratch Pad" + ] + }, + { + "cell_type": "markdown", + "id": "bd2d0eaf", + "metadata": {}, + "source": [ + "The following are brief descriptions of each step in `scratchpad.ipynb`. Please note that the scratch pad only contains generic steps, and depending on the specific data you are working with, not all steps may be necessary. As a result, some sections of the notebook may potentially be left empty/blank (you can indicate \"Nil\").\n", + "\n", + "You should probably also limit the amount of time that you invest into each of the steps to avoid rushing at the end. We expect students to take abour 3-4 hours to complete this assessment and the suggested amount of times for each of the steps is given as a guide. You do not need to adhere strictly to our suggestions. \n", + "\n", + "You should include all your \"workings\" in scratchpad. Although you will only be graded on your 1,000-word executive summary, we might refer to your workings if there are concerns about plagiarism.\n", + "\n" + ] + }, + { + "cell_type": "markdown", + "id": "cbe832b6", + "metadata": {}, + "source": [ + "### Data Exploration & Preparation (60 mins)\n", + "\n", + "Before starting to create a model, it is important to explore and analyze the characteristics of the data. This can help us make informed decisions regarding the choice of approach, techniques, and models that we will use.\n", + "\n", + "When dealing with data, it is essential to understand the format in which it is presented. In machine learning, tabular data is typically provided in the form of a Pandas DataFrame, while tensor data, such as images, is given in the form of a Numpy ndarray.\n", + "\n", + "To help you get started with these data formats, the following guides can be useful:\n", + "\n", + "* [10 Minutes to pandas](https://pandas.pydata.org/docs/user_guide/10min.html): This guide provides a quick introduction to the Pandas library, including its key features and how to work with DataFrames.\n", + "* [Numpy Quickstart](https://numpy.org/doc/stable/user/quickstart.html): This guide covers the basics of the Numpy library and how to work with ndarrays, including creating arrays, indexing and slicing, and mathematical operations.\n", + "\n", + "**It is important to note that you have the option to skip most of these data exploration and preparation steps and mostly use the dataset as is (with a rudimentary preprocessing)**. Given that machine learning is machine learning, such a naive approach work (i.e. give you some answer). However, such an approach is unlikely to yield the best outcomes.\n", + "\n", + "\n", + "#### 1. Descriptive Analysis (5 mins)\n", + "\n", + "Descriptive analysis is used to understand the basic characteristics of the data. This includes analyzing the distribution of the data, measuring its central tendency (i.e., mean, median, mode), and checking the variability of the data (i.e., range, standard deviation, variance, interquartile range). This analysis can give us an overview of the data and help us to identify any potential issues or challenges that may need to be addressed.\n", + "\n", + "You may find the following resources helpful:\n", + "* [Pandas: how to calculate statistics?](https://pandas.pydata.org/docs/getting_started/intro_tutorials/06_calculate_statistics.html)\n", + "* [Numpy statistics](https://numpy.org/doc/stable/reference/routines.statistics.html)\n", + "\n", + "#### 2. Detection and Handling of Missing Values (10 mins)\n", + "\n", + "Missing values in the data can cause problems with our machine learning algorithms and may need to be handled. Detecting and handling missing values involves checking if there are any missing values in the data and figuring out the best way to handle them if necessary. This may involve imputing missing values with a certain value or method, or removing the rows or columns that contain missing values. You can follow the \"[10 Minutes to pandas](https://pandas.pydata.org/docs/user_guide/10min.html)\" guide on how to do this.\n", + "\n", + "#### 3. Detection and Handling of Outliers (10 mins)\n", + "\n", + "Outliers are data points that are significantly different from the majority of the data. They can have a significant impact on the performance of your model, and it is important to detect and handle them appropriately. For example, you may use statistical methods such as the interquartile range (IQR) and z-score to detect outliers. Once you have detected outliers, you need to decide how to handle them. After you found them, you can choose to remove them from the dataset, replace them with a more appropriate value (e.g., the mean or median), or leave them in the dataset and use a model that is robust to outliers. You may find [this guide](https://www.geeksforgeeks.org/detect-and-remove-the-outliers-using-python/) useful.\n", + "\n", + "#### 4. Detection and Handling of Class Imbalance (5 mins)\n", + "\n", + "Class imbalance is a problem that occurs when one class has significantly more instances than another. This can make it difficult to build a model that accurately predicts the minority class. Investigating the possibility of class imbalance and figuring out the best way to handle it if necessary is important. This may involve techniques such as oversampling or undersampling the minority class (as seen in PS5), using cost-sensitive learning (as seen in Tutorial 8), or other methods which you can explore yourself.\n", + "\n", + "#### 5. Understanding Relationship Between Variables (20 mins)\n", + "\n", + "Analyzing the relationship between variables in a dataset can reveal potential dependencies and offer insights for building accurate models. There are different ways to explore these dependencies:\n", + "\n", + "* **Linear dependencies:** It's possible to identify linear dependencies by verifying if certain attributes are multiples of other attributes by a constant factor.\n", + "\n", + "* **Correlations:** Another approach is to measure the correlations between variables, which indicates whether certain variables influence others. For instance, high correlation between the target variable and attributes A, B, and C suggests that A, B, and C are important factors for the target variable. Conversely, low correlation implies that they are not critical. [You can measure correlation using pandas](https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.corr.html).\n", + "\n", + "By performing this analysis, we can determine which variables are most relevant to the problem and should be considered in our model. This can help us build a more effective and accurate machine learning model.\n", + "\n", + "#### 6. Data Visualization (10 mins)\n", + "\n", + "Visualizing the data can help us to see patterns that are visible to human eyes. Data visualization techniques can include scatter plots, histograms, heat maps, and other graphical methods. Visualization can be particularly useful when trying to identify relationships between variables or patterns in the data.\n", + "\n", + "You may use libraries such as [Matplotlib](https://matplotlib.org/stable/tutorials/introductory/pyplot.html) or [Seaborn](https://seaborn.pydata.org/tutorial/introduction.html) to do this.\n", + "\n", + "### Data Preprocessing (70 mins)\n", + "\n", + "Data preprocessing involves cleaning and transforming the data to maximize learning and prediction performance. This can include removing irrelevant variables, normalizing the data, scaling the data, or transforming the data using mathematical techniques.\n", + "\n", + "Scikit-learn website provides a [short guide](https://scikit-learn.org/stable/modules/preprocessing.html) on how to do data preprocessing using their library.\n", + "\n", + "**It is important to note that you can choose to skip more of the steps in feature selection and feature engineering and use all the features in the data set as is**. However, doing so may not yield the best outcomes. \n", + "\n", + "#### 7. General Preprocessing (10 mins)\n", + "\n", + "General preprocessing involves any other preprocessing that is necessary for the data, such as converting the data type of certain attributes or removing duplicates. think of this as implementing what needs to be done based on what you learnt in Step 2 above. \n", + "\n", + "#### 8. Feature Selection (30 mins)\n", + "\n", + "Feature selection is an important step in machine learning that involves identifying a subset of features that are most relevant to the problem. This helps to reduce the dimensionality of the data and improve the accuracy of the models. There are different techniques for feature selection, including:\n", + "\n", + "* **Removing uninformative features:** This involves removing features that are not useful for the task at hand. Two common methods to identify uninformative features are:\n", + " * Linearly dependent: features that are linear combinations of other features can be removed since they add no new information. A linear dependence test can be applied to identify linearly dependent features.\n", + " * Low or no correlation: features that have low or no correlation with the target variable can also be removed as they do not provide valuable information. A correlation analysis can be performed to identify such features \n", + " * See Understanding Relationship Between Variables on the explanation regarding the analysis.\n", + "\n", + "* **Sequentially removing features:** This involves iteratively removing the least significant feature until a desired number of features is reached. The idea is to remove features that have the least impact on the performance of the model. [Learn how to do this using Scikit-learn](https://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SequentialFeatureSelector.html).\n", + "\n", + "* **Principal component analysis:** This is a dimensionality reduction technique that involves transforming the data into a new set of orthogonal variables, called principal components, that capture the most important information in the original data. By selecting a subset of these components, we can reduce the dimensionality of the data while retaining most of the information. [Learn how to do this using Scikit-learn](https://scikit-learn.org/stable/auto_examples/decomposition/plot_pca_iris.html).\n", + "\n", + "By applying feature selection techniques, we can identify the most relevant features for the problem and improve the accuracy and efficiency of our machine learning models.\n", + "\n", + "\n", + "#### 9. Feature Engineering (30 mins)\n", + "\n", + "Feature engineering is the process of creating new features from existing ones to improve the performance of machine learning models. It involves identifying and extracting useful information from the data by applying various techniques such as:\n", + "\n", + "* **Combining features:** This involves combining two or more existing features to create a new feature that captures more information than either of the original features alone. For example, if we have two features representing length and width, we can create a new feature that represents area by multiplying the two. \n", + "\n", + "* **Creating new features:** This involves creating new features from the existing ones using domain knowledge or other insights gained from the data analysis. For example, if we have a dataset of customer transactions, we can create new features such as total spending per customer or the number of items purchased in a single transaction. \n", + "\n", + "* **Mapping functions to features:** This involves applying mathematical functions to the features to create new features with higher-order terms or interactions between features. For example, we can create polynomial features by mapping a feature x to x^2 or x^3.\n", + "\n", + "By applying feature engineering techniques, we can create more informative features that capture the underlying patterns and relationships in the data, leading to better performance in the machine learning models, since compute resources are limited. \n", + "\n", + "\n", + "### Modeling & Evaluation (110 mins)\n", + "\n", + "After completing the above steps, it is time to build and evaluate models. This can involve creating a set of models that best fit the nature of the data, performing model evaluation, and doing hyperparameters search.\n", + "\n", + "The models should be evaluated thoroughly, and the best one should be chosen for submission.\n", + "\n", + "#### 10. Creating Models (30 mins)\n", + "\n", + "In this stage, we create models that are appropriate for the data. Since you are only allowed to use neural networks as the hypothesis class, then the choice of models boils down to the choice of the architectures of the neural networks. For example, you can use feedforward neural networks, convolutional neural networks, recurrent neural networks, and so on. You can even combine multiple architecture together to form a new architecture. Depending on the nature of the data, we can choose one or more of these models to build. We should be careful in selecting the models to ensure that they are suitable for the task we want to accomplish.\n", + "\n", + "Utilizing pre-built models from [PyTorch](https://pytorch.org/docs/stable/nn.html) can be beneficial. This library offers an extensive range of models that can be easily implemented and integrated. \n", + "\n", + "However, if needed, you can also create your own models and algorithms from scratch.\n", + "\n", + "#### 11. Model Evaluation (30 mins)\n", + "\n", + "Once we have created our models, we need to evaluate them to determine their performance. We should use a variety of metrics to evaluate the performance of each model, such as accuracy, precision, recall, F1 score, ROC curve, AUC, and so on. We should also use appropriate techniques to validate the models, such as cross-validation, train-test split, or hold-out validation. By doing this, we can determine which model is the best fit for our data. \n", + "\n", + "It's important to consider multiple models in the evaluation process to ensure that we are choosing the best one for our data. We may create and evaluate several models before selecting the best one. We should also consider the trade-offs between model complexity and accuracy to make sure that it can run in Coursemology.\n", + "\n", + "#### 12. Hyperparameters Search (50 mins)\n", + "\n", + "After choosing a model, we should optimize its hyperparameters to achieve the best performance. Hyperparameters are parameters that are not learned during training, such as the learning rate, the number of hidden layers (if applicable), or the regularization coefficient (if applicable). We can use various methods to search for the optimal hyperparameters, such as grid search, random search, or Bayesian optimization. The choice of the method depends on the complexity of the model and the size of the dataset. By tuning the hyperparameters, we can improve the performance of the model and make it more robust.\n", + "\n", + "There are many libraries to do hyperparameter search. You browse for them on [GitHub](https://github.com/topics/hyperparameter-optimization).\n", + "\n", + "In addition to using optimization libraries and functions, you can also manually perform simple hyperparameter tuning. This involves adjusting the hyperparameters of your model and evaluating its performance repeatedly until the best combination is achieved. However, keep in mind that manual tuning can be time-consuming and may not be as effective as more advanced techniques." + ] + }, + { + "cell_type": "markdown", + "id": "9045d90d", + "metadata": {}, + "source": [ + "## Tasks & Submission" + ] + }, + { + "cell_type": "markdown", + "id": "c950686e", + "metadata": {}, + "source": [ + "### Task 1: Model Implementation (80% Marks)\n", + "\n", + "Implement your model that you want to submit by completing the following functions:\n", + "* `__init__`: The constructor for Model class.\n", + "* `fit`: Fit/train the model using the input data. You may perform data handling and preprocessing here before training your model.\n", + "* `predict`: Predict using the model. If you perform data handling and preprocessing in the `fit` function, then you may want to do the same here.\n", + "\n", + "#### Dependencies\n", + "\n", + "It is crucial to note that your model may rely on specific versions of Python packages, including:\n", + "\n", + "* Python 3.10\n", + "* Numpy version 1.23\n", + "* Pandas version 1.4\n", + "* Scikit-Learn version 1.1\n", + "* PyTorch version 1.12\n", + "* Torchvision version 0.13\n", + "\n", + "To prevent any compatibility issues or unexpected errors during the execution of your code, ensure that you are using the correct versions of these packages. You can refer to `environment.yml` for a comprehensive list of packages that are pre-installed in Coursemology and can be used by your model. Note that if you do end up using libraries that are not installed on Coursemology, you might see an error like:\n", + "\n", + "\"Your code failed to evaluate correctly. There might be a syntax error, or perhaps execution failed to complete within the allocated time and memory limits.\"\n", + "\n", + "#### Model Template\n", + "\n", + "Note that you should copy and paste the code below *directly* into Coursemology for submission. You should probably test the code in this notebook on your local machine before uploading to Coursemology and using up an attempt.\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "a44b7aa4", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-28T04:16:20.742674Z", + "start_time": "2024-04-28T04:16:20.719852Z" + } + }, + "outputs": [], + "source": [ + "import torch\n", + "from torch import nn\n", + "class CNN(nn.Module):\n", + " def __init__(self, num_classes):\n", + " super(CNN, self).__init__()\n", + "\n", + " self.conv1 = nn.Conv2d(1,32,3,stride=1,padding=0)\n", + " self.conv2 = nn.Conv2d(32,64,3,stride=1,padding=0)\n", + " self.relu = nn.ReLU()\n", + " self.maxpool = nn.MaxPool2d(2)\n", + " self.fc1 = nn.Linear(256, 128) # Calculate input size based on output from conv2 and pooling\n", + " self.fc2 = nn.Linear(128, num_classes)\n", + " self.flatten = nn.Flatten()\n", + "\n", + " def forward(self, x):\n", + " x = self.conv1(x)\n", + " x = self.relu(x)\n", + " x = self.maxpool(x)\n", + " x = self.conv2(x)\n", + " x = self.relu(x)\n", + " x = self.maxpool(x)\n", + " x = self.flatten(x)\n", + " x = self.fc1(x)\n", + " x = self.relu(x)\n", + " x = self.fc2(x)\n", + " return x\n", + "\n", + "# video is a numpy array of shape (L, H, W)\n", + "def clean_batch(batch):\n", + " batch = np.array(batch)\n", + " print(batch.shape)\n", + " temp_x = batch.reshape(-1, 256)\n", + " np.nan_to_num(temp_x, copy=False)\n", + " col_mean = np.nanmean(temp_x, axis=0)\n", + " inds = np.where(np.isnan(temp_x))\n", + " temp_x[inds] = np.take(col_mean, inds[1])\n", + " temp_x = np.clip(temp_x, 1, 255)\n", + " batch = temp_x.reshape(-1, 1, 16,16)\n", + " return torch.tensor(batch, dtype=torch.float32)\n", + "def flatten_data(X, y):\n", + " not_nan_indices = np.argwhere(~np.isnan(np.array(y))).squeeze()\n", + " y = [y[i] for i in not_nan_indices]\n", + " X = [X[i] for i in not_nan_indices]\n", + " flattened_x = []\n", + " flattened_y = []\n", + " for idx, video in enumerate(X):\n", + " for frame in video:\n", + " flattened_x.append(frame)\n", + " flattened_y.append(y[idx])\n", + " flattened_x = clean_batch(flattened_x)\n", + " return flattened_x, torch.Tensor(np.array(flattened_y, dtype=np.int64)).long()\n", + "\n", + "class Model():\n", + " def __init__(self):\n", + " self.cnn = CNN(6)\n", + " def fit(self, X, y):\n", + " self.cnn.train()\n", + " X, y = flatten_data(X, y)\n", + " train_dataset = torch.utils.data.TensorDataset(X, y)\n", + " train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=320, shuffle=True)\n", + " criterion = nn.CrossEntropyLoss()\n", + " optimizer = torch.optim.Adam(self.cnn.parameters(), lr=0.001)\n", + " for epoch in range(70):\n", + " for idx, (inputs, labels) in enumerate(train_loader):\n", + " optimizer.zero_grad()\n", + " outputs = self.cnn(inputs)\n", + " loss = criterion(outputs, labels)\n", + " loss.backward()\n", + " optimizer.step()\n", + " print(f'Epoch {epoch}, Loss: {loss.item()}')\n", + " return self\n", + " def predict(self, X):\n", + " self.cnn.eval()\n", + " results = []\n", + " for idx, batch in enumerate(X):\n", + " batch = clean_batch(batch)\n", + " pred = self.cnn(batch)\n", + " result = torch.argmax(pred, axis=1)\n", + " results.append(torch.max(result))\n", + " return results\n" + ] + }, + { + "cell_type": "markdown", + "id": "e02178d7", + "metadata": {}, + "source": [ + "#### Local Evaluation\n", + "\n", + "You may test your solution locally by running the following code. Do note that the results may not reflect your performance in Coursemology. You should not be submitting the code below in Coursemology. The code here is meant only for you to do local testing." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "4f4dd489", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-28T04:09:59.741093Z", + "start_time": "2024-04-28T04:09:59.732247Z" + } + }, + "outputs": [], + "source": [ + "# Import packages\n", + "import pandas as pd\n", + "import numpy as np\n", + "import os\n", + "from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, mean_squared_error, mean_absolute_error, r2_score\n", + "from sklearn.model_selection import train_test_split" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "3064e0ff", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-28T04:10:00.718747Z", + "start_time": "2024-04-28T04:10:00.689200Z" + } + }, + "outputs": [], + "source": [ + "# Load data\n", + "with open('data.npy', 'rb') as f:\n", + " data = np.load(f, allow_pickle=True).item()\n", + " X = data['data']\n", + " y = data['label']" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "27c9fd10", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-28T04:18:50.184449Z", + "start_time": "2024-04-28T04:18:43.527661Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(16189, 16, 16)\n", + "Epoch 0, Loss: 1.0775409936904907\n", + "Epoch 1, Loss: 1.279036283493042\n", + "Epoch 2, Loss: 1.0776251554489136\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[21], line 15\u001B[0m\n\u001B[1;32m 13\u001B[0m \u001B[38;5;66;03m# Train and predict\u001B[39;00m\n\u001B[1;32m 14\u001B[0m model \u001B[38;5;241m=\u001B[39m Model()\n\u001B[0;32m---> 15\u001B[0m \u001B[43mmodel\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mfit\u001B[49m\u001B[43m(\u001B[49m\u001B[43mX_train\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43my_train\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 16\u001B[0m y_pred \u001B[38;5;241m=\u001B[39m model\u001B[38;5;241m.\u001B[39mpredict(X_test)\n\u001B[1;32m 18\u001B[0m \u001B[38;5;66;03m# Evaluate model predition\u001B[39;00m\n\u001B[1;32m 19\u001B[0m \u001B[38;5;66;03m# Learn more: https://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics\u001B[39;00m\n", + "Cell \u001B[0;32mIn[18], line 68\u001B[0m, in \u001B[0;36mModel.fit\u001B[0;34m(self, X, y)\u001B[0m\n\u001B[1;32m 66\u001B[0m outputs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcnn(inputs)\n\u001B[1;32m 67\u001B[0m loss \u001B[38;5;241m=\u001B[39m criterion(outputs, labels)\n\u001B[0;32m---> 68\u001B[0m \u001B[43mloss\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbackward\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 69\u001B[0m optimizer\u001B[38;5;241m.\u001B[39mstep()\n\u001B[1;32m 70\u001B[0m \u001B[38;5;28mprint\u001B[39m(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mEpoch \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mepoch\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m, Loss: \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mloss\u001B[38;5;241m.\u001B[39mitem()\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m'\u001B[39m)\n", + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/_tensor.py:522\u001B[0m, in \u001B[0;36mTensor.backward\u001B[0;34m(self, gradient, retain_graph, create_graph, inputs)\u001B[0m\n\u001B[1;32m 512\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m has_torch_function_unary(\u001B[38;5;28mself\u001B[39m):\n\u001B[1;32m 513\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m handle_torch_function(\n\u001B[1;32m 514\u001B[0m Tensor\u001B[38;5;241m.\u001B[39mbackward,\n\u001B[1;32m 515\u001B[0m (\u001B[38;5;28mself\u001B[39m,),\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 520\u001B[0m inputs\u001B[38;5;241m=\u001B[39minputs,\n\u001B[1;32m 521\u001B[0m )\n\u001B[0;32m--> 522\u001B[0m \u001B[43mtorch\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mautograd\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbackward\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 523\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mgradient\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mretain_graph\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcreate_graph\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43minputs\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43minputs\u001B[49m\n\u001B[1;32m 524\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/autograd/__init__.py:266\u001B[0m, in \u001B[0;36mbackward\u001B[0;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001B[0m\n\u001B[1;32m 261\u001B[0m retain_graph \u001B[38;5;241m=\u001B[39m create_graph\n\u001B[1;32m 263\u001B[0m \u001B[38;5;66;03m# The reason we repeat the same comment below is that\u001B[39;00m\n\u001B[1;32m 264\u001B[0m \u001B[38;5;66;03m# some Python versions print out the first line of a multi-line function\u001B[39;00m\n\u001B[1;32m 265\u001B[0m \u001B[38;5;66;03m# calls in the traceback and some print out the last line\u001B[39;00m\n\u001B[0;32m--> 266\u001B[0m \u001B[43mVariable\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_execution_engine\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrun_backward\u001B[49m\u001B[43m(\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;66;43;03m# Calls into the C++ engine to run the backward pass\u001B[39;49;00m\n\u001B[1;32m 267\u001B[0m \u001B[43m \u001B[49m\u001B[43mtensors\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 268\u001B[0m \u001B[43m \u001B[49m\u001B[43mgrad_tensors_\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 269\u001B[0m \u001B[43m \u001B[49m\u001B[43mretain_graph\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 270\u001B[0m \u001B[43m \u001B[49m\u001B[43mcreate_graph\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 271\u001B[0m \u001B[43m \u001B[49m\u001B[43minputs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 272\u001B[0m \u001B[43m \u001B[49m\u001B[43mallow_unreachable\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mTrue\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[1;32m 273\u001B[0m \u001B[43m \u001B[49m\u001B[43maccumulate_grad\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mTrue\u001B[39;49;00m\u001B[43m,\u001B[49m\n\u001B[1;32m 274\u001B[0m \u001B[43m\u001B[49m\u001B[43m)\u001B[49m\n", + "\u001B[0;31mKeyboardInterrupt\u001B[0m: " + ] + } + ], + "source": [ + "# Split train and test\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)\n", + "\n", + "# Filter test data that contains no labels\n", + "# In Coursemology, the test data is guaranteed to have labels\n", + "not_nan_indices = np.argwhere(~np.isnan(np.array(y_test))).squeeze()\n", + "y_test = [y_test[i] for i in not_nan_indices]\n", + "X_test = [X_test[i] for i in not_nan_indices]\n", + "not_nan_indices = np.argwhere(~np.isnan(np.array(y_train))).squeeze()\n", + "y_train = [y_train[i] for i in not_nan_indices]\n", + "X_train = [X_train[i] for i in not_nan_indices]\n", + "\n", + "# Train and predict\n", + "model = Model()\n", + "model.fit(X_train, y_train)\n", + "y_pred = model.predict(X_test)\n", + "\n", + "# Evaluate model predition\n", + "# Learn more: https://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics\n", + "print(\"F1 Score (macro): {0:.2f}\".format(f1_score(y_test, y_pred, average='macro'))) # You may encounter errors, you are expected to figure out what's the issue." + ] + }, + { + "cell_type": "markdown", + "id": "16861aef", + "metadata": {}, + "source": [ + "#### Grading Scheme\n", + "\n", + "Your code implementation will be graded based on its performance ([**Macro F1 Score**](http://iamirmasoud.com/2022/06/19/understanding-micro-macro-and-weighted-averages-for-scikit-learn-metrics-in-multi-class-classification-with-example/)*) in the contest. Your model will be trained with the data that we provided you with this assesment. We will use score cutoffs that we will decide after the contest to determine your marks.\n", + "\n", + "The performance of your model will be determined by a separate test data set, drawn from the same population as the training set, but not provided to you earlier. The marks you will receive will depend on the **Macro F1 Score** of the predictions:\n", + "\n", + "* If your score is above the mean or median, you can expect to receive decent marks. \n", + "* If your score is higher than the 75th percentile, you are likely to receive good marks. \n", + "* If you achieve a score above the 90th percentile (top 10%), you will likely receive full marks.\n", + "\n", + "Throughout the contest, we will provide periodic updates on the distribution of the score of student submissions in the official forum thread (see Overview) based on the **public test case**, which test the performance of the model on **a small subset of data from the hidden test data**. You can use these updates to estimate your relative standing, compared to your peers. \n", + "\n", + "*) Macro F1 Score: F1 score for multi-class classification computed by taking the average of all the per-class F1 score" + ] + }, + { + "cell_type": "markdown", + "id": "44c79c17", + "metadata": {}, + "source": [ + "### Task 2: Scratch Pad (20% Marks)\n", + "\n", + "Fill up the `scratchpad.ipynb` with your working. \n", + "\n", + "In the **\"Report\" section**, write a report that explain the thought process behind your solution, and convince us that you have understood the concepts taught in class and can apply them. The report should cover data exploration and preparation, data preprocessing, modeling, and evaluation. The final solution and any alternative approaches that were tried but did not work may also be documented. The length of the report should be approximately equivalent to **1-2 pages of A4 paper (up to 1,000 words)**.\n", + "\n", + "#### Grading Scheme\n", + "\n", + "The report will be graded based on the reasonability and soundness of the approach you take, your understanding of the data, and your final solution. If you do not make any errors in your approach, reasoning/understanding, and conclusion, you can expect to receive full marks. This part is meant to be \"standard\", and is only for us to do a quick sanity check that you actually did the work required to come up with the model you submitted." + ] + }, + { + "cell_type": "markdown", + "id": "28b658b4", + "metadata": {}, + "source": [ + "### Submission\n", + "\n", + "Once you are done, please submit your work to Coursemology, by copying the right snippets of code into the corresponding box that says 'Model Implementation', and click 'Save Draft'. You can still make changes after you save your submission.\n", + "\n", + "When submitting your model, the `fit` function will be called to train your model with the **data that we have provided you**. Due to the inherent stochasticity of the training process, **your model's performance may vary across different runs**. To ensure deterministic results, you can set a fixed random seed in your code. After the training is completed, the `predict` function will be used to evaluate your model. The evaluation of your model will be based on two test cases: \n", + "1. **Public test cases, containing a small portion of the test data**, that allows you to **estimate** your score. \n", + "2. **Evaluation test cases containing the remaining test data** (which you will not be able to see) by which we will evaluate your model. \n", + "\n", + "Your score in the public test case may not reflect your actual score. **Note that running all test cases can take up to 3 minutes to complete, and you have a maximum of 20 attempts.** We only provide you with a limited number of tries because we do not want you to spam our autograder. \n", + "\n", + "Finally, when you are satisfied with your submission, you can finalize it by clicking \"Finalize submission.\". **Note that once you have finalized your submission, it is considered to be submitted for grading, and no further changes can be made**.\n", + "\n", + "When nearing the submission deadline for our final assessment, the Coursemology server may experience overloads due to high request volumes. Here are some guidelines for you if you encounter issues close to the deadline:\n", + "\n", + "1. If you notice that no result is returned after running your code, please refrain from rerunning it. Instead, simply refresh the page and await the result.\n", + "\n", + "2. If your code continues running and you cannot finalize your submission, \n", + "* You should be able to finalize it by refreshing the submission page. Please be aware that any input made after running your code will be lost upon refreshing the page. \n", + "* If you didn't make any changes after running your code, your running code will be considered the final submission.\n", + "* If you make changes to your code after refreshing and then press finalize, your final code will be the one you typed just before finalizing.\n", + "\n", + "We highly recommend **not waiting until the last moment to submit your final assessment**." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/cs2109s/labs/final 2/scratchpad.ipynb b/cs2109s/labs/final 2/scratchpad.ipynb new file mode 100644 index 0000000..c75738f --- /dev/null +++ b/cs2109s/labs/final 2/scratchpad.ipynb @@ -0,0 +1,846 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "7d017333", + "metadata": {}, + "source": [ + "# Final Assessment Scratch Pad" + ] + }, + { + "cell_type": "markdown", + "id": "d3d00386", + "metadata": {}, + "source": [ + "## Instructions" + ] + }, + { + "cell_type": "markdown", + "id": "ea516aa7", + "metadata": {}, + "source": [ + "1. Please use only this Jupyter notebook to work on your model, and **do not use any extra files**. If you need to define helper classes or functions, feel free to do so in this notebook.\n", + "2. This template is intended to be general, but it may not cover every use case. The sections are given so that it will be easier for us to grade your submission. If your specific use case isn't addressed, **you may add new Markdown or code blocks to this notebook**. However, please **don't delete any existing blocks**.\n", + "3. If you don't think a particular section of this template is necessary for your work, **you may skip it**. Be sure to explain clearly why you decided to do so." + ] + }, + { + "cell_type": "markdown", + "id": "022cb4cd", + "metadata": {}, + "source": [ + "## Report" + ] + }, + { + "cell_type": "markdown", + "id": "9c14a2d8", + "metadata": {}, + "source": [ + "**[TODO]**\n", + "\n", + "Please provide a summary of the ideas and steps that led you to your final model. Someone reading this summary should understand why you chose to approach the problem in a particular way and able to replicate your final model at a high level. Please ensure that your summary is detailed enough to provide an overview of your thought process and approach but also concise enough to be easily understandable. Also, please follow the guidelines given in the `main.ipynb`.\n", + "\n", + "This report should not be longer than **1-2 pages of A4 paper (up to around 1,000 words)**. Marks will be deducted if you do not follow instructions and you include too many words here. \n", + "\n", + "**[DELETE EVERYTHING FROM THE PREVIOUS TODO TO HERE BEFORE SUBMISSION]**\n", + "\n", + "##### Overview\n", + "**[TODO]**\n", + "\n", + "##### 1. Descriptive Analysis\n", + "**[TODO]**\n", + "\n", + "##### 2. Detection and Handling of Missing Values\n", + "**[TODO]**\n", + "\n", + "##### 3. Detection and Handling of Outliers\n", + "**[TODO]**\n", + "\n", + "##### 4. Detection and Handling of Class Imbalance \n", + "**[TODO]**\n", + "\n", + "##### 5. Understanding Relationship Between Variables\n", + "**[TODO]**\n", + "\n", + "##### 6. Data Visualization\n", + "**[TODO]** \n", + "##### 7. General Preprocessing\n", + "**[TODO]**\n", + " \n", + "##### 8. Feature Selection \n", + "**[TODO]**\n", + "\n", + "##### 9. Feature Engineering\n", + "**[TODO]**\n", + "\n", + "##### 10. Creating Models\n", + "**[TODO]**\n", + "\n", + "##### 11. Model Evaluation\n", + "**[TODO]**\n", + "\n", + "##### 12. Hyperparameters Search\n", + "**[TODO]**\n", + "\n", + "##### Conclusion\n", + "**[TODO]**" + ] + }, + { + "cell_type": "markdown", + "id": "49dcaf29", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "27103374", + "metadata": {}, + "source": [ + "# Workings (Not Graded)\n", + "\n", + "You will do your working below. Note that anything below this section will not be graded, but we might counter-check what you wrote in the report above with your workings to make sure that you actually did what you claimed to have done. " + ] + }, + { + "cell_type": "markdown", + "id": "0f4c6cd4", + "metadata": {}, + "source": [ + "## Import Packages\n", + "\n", + "Here, we import some packages necessary to run this notebook. In addition, you may import other packages as well. Do note that when submitting your model, you may only use packages that are available in Coursemology (see `main.ipynb`)." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "cded1ed6", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-28T02:23:08.720475Z", + "start_time": "2024-04-28T02:23:08.235724Z" + } + }, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import os\n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "id": "748c35d7", + "metadata": {}, + "source": [ + "## Load Dataset\n", + "\n", + "The dataset `data.npy` consists of $N$ grayscale videos and their corresponding labels. Each video has a shape of (L, H, W). L represents the length of the video, which may vary between videos. H and W represent the height and width, which are consistent across all videos. \n", + "\n", + "A code snippet that loads the data is provided below." + ] + }, + { + "cell_type": "markdown", + "id": "c09da291", + "metadata": {}, + "source": [ + "### Load Data" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "6297e25a", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-28T02:23:10.018019Z", + "start_time": "2024-04-28T02:23:09.989783Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Number of data sample: 2500\n", + "Shape of the first data sample: (10, 16, 16)\n", + "Shape of the third data sample: (8, 16, 16)\n" + ] + } + ], + "source": [ + "with open('data.npy', 'rb') as f:\n", + " data = np.load(f, allow_pickle=True).item()\n", + " X = data['data']\n", + " y = data['label']\n", + " \n", + "print('Number of data sample:', len(X))\n", + "print('Shape of the first data sample:', X[0].shape)\n", + "print('Shape of the third data sample:', X[2].shape)" + ] + }, + { + "cell_type": "markdown", + "id": "cbe832b6", + "metadata": {}, + "source": [ + "## Data Exploration & Preparation" + ] + }, + { + "cell_type": "markdown", + "id": "2f6a464c", + "metadata": {}, + "source": [ + "### 1. Descriptive Analysis" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3b1f62dd", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "adb61967", + "metadata": {}, + "source": [ + "### 2. Detection and Handling of Missing Values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4bb9cdfb", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "8adcb9cd", + "metadata": {}, + "source": [ + "### 3. Detection and Handling of Outliers" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ed1c17a1", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "d4916043", + "metadata": {}, + "source": [ + "### 4. Detection and Handling of Class Imbalance" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ad3ab20e", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "2552a795", + "metadata": {}, + "source": [ + "### 5. Understanding Relationship Between Variables" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "29ddbbcf", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "757fb315", + "metadata": {}, + "source": [ + "### 6. Data Visualization" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "93f82e42", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "2a7eebcf", + "metadata": {}, + "source": [ + "## Data Preprocessing" + ] + }, + { + "cell_type": "markdown", + "id": "ae3e3383", + "metadata": {}, + "source": [ + "### 7. General Preprocessing" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "19174365", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "fb3aa527", + "metadata": {}, + "source": [ + "### 8. Feature Selection" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a85808bf", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "4921e8ca", + "metadata": {}, + "source": [ + "### 9. Feature Engineering" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dbcde626", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "markdown", + "id": "fa676c3f", + "metadata": {}, + "source": [ + "## Modeling & Evaluation" + ] + }, + { + "cell_type": "markdown", + "id": "589b37e4", + "metadata": {}, + "source": [ + "### 10. Creating models" + ] + }, + { + "cell_type": "code", + "outputs": [], + "source": [ + "import torch\n", + "from torch import nn\n", + "class CNN(nn.Module):\n", + " def __init__(self, num_classes):\n", + " super(CNN, self).__init__()\n", + "\n", + " self.conv1 = nn.Conv2d(1,32,3,stride=1,padding=0)\n", + " self.conv2 = nn.Conv2d(32,64,3,stride=1,padding=0)\n", + " self.relu = nn.ReLU()\n", + " self.maxpool = nn.MaxPool2d(2)\n", + " self.fc1 = nn.Linear(256, 128) # Calculate input size based on output from conv2 and pooling\n", + " self.fc2 = nn.Linear(128, num_classes)\n", + " self.flatten = nn.Flatten()\n", + "\n", + " def forward(self, x):\n", + " x = self.conv1(x)\n", + " x = self.relu(x)\n", + " x = self.maxpool(x)\n", + " x = self.conv2(x)\n", + " x = self.relu(x)\n", + " x = self.maxpool(x)\n", + " x = self.flatten(x)\n", + " x = self.fc1(x)\n", + " x = self.relu(x)\n", + " x = self.fc2(x)\n", + " return x\n", + "\n", + "# video is a numpy array of shape (L, H, W)\n", + "def clean_batch(batch):\n", + " batch = np.array(batch)\n", + " print(batch.shape)\n", + " temp_x = batch.reshape(-1, 256)\n", + " np.nan_to_num(temp_x, copy=False)\n", + " col_mean = np.nanmean(temp_x, axis=0)\n", + " inds = np.where(np.isnan(temp_x))\n", + " temp_x[inds] = np.take(col_mean, inds[1])\n", + " temp_x = np.clip(temp_x, 1, 255)\n", + " batch = temp_x.reshape(-1, 1, 16,16)\n", + " return torch.tensor(batch, dtype=torch.float32)\n", + "def flatten_data(X, y):\n", + " not_nan_indices = np.argwhere(~np.isnan(np.array(y))).squeeze()\n", + " y = [y[i] for i in not_nan_indices]\n", + " X = [X[i] for i in not_nan_indices]\n", + " flattened_x = []\n", + " flattened_y = []\n", + " for idx, video in enumerate(X):\n", + " for frame in video:\n", + " flattened_x.append(frame)\n", + " flattened_y.append(y[idx])\n", + " flattened_x = clean_batch(flattened_x)\n", + " return flattened_x, torch.Tensor(np.array(flattened_y, dtype=np.int64)).long()\n", + "\n", + "class Model():\n", + " def __init__(self):\n", + " self.cnn = CNN(6)\n", + " def fit(self, X, y):\n", + " self.cnn.train()\n", + " X, y = flatten_data(X, y)\n", + " train_dataset = torch.utils.data.TensorDataset(X, y)\n", + " train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=320, shuffle=True)\n", + " criterion = nn.CrossEntropyLoss()\n", + " optimizer = torch.optim.Adam(self.cnn.parameters(), lr=0.001)\n", + " for epoch in range(70):\n", + " for idx, (inputs, labels) in enumerate(train_loader):\n", + " optimizer.zero_grad()\n", + " outputs = self.cnn(inputs)\n", + " loss = criterion(outputs, labels)\n", + " loss.backward()\n", + " optimizer.step()\n", + " print(f'Epoch {epoch}, Loss: {loss.item()}')\n", + " return self\n", + " def predict(self, X):\n", + " self.cnn.eval()\n", + " results = []\n", + " for idx, batch in enumerate(X):\n", + " batch = clean_batch(batch)\n", + " pred = self.cnn(batch)\n", + " result = torch.argmax(pred, axis=1)\n", + " results.append(torch.max(result))\n", + " return results" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-04-28T04:15:35.410374Z", + "start_time": "2024-04-28T04:15:35.390070Z" + } + }, + "id": "d8dffd7d", + "execution_count": 190 + }, + { + "cell_type": "markdown", + "id": "495bf3c0", + "metadata": {}, + "source": [ + "### 11. Model Evaluation" + ] + }, + { + "cell_type": "code", + "execution_count": 191, + "id": "9245ab47", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-28T04:15:44.130692Z", + "start_time": "2024-04-28T04:15:37.604561Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(16186, 16, 16)\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/numpy/core/fromnumeric.py:88: RuntimeWarning: overflow encountered in reduce\n", + " return ufunc.reduce(obj, axis, dtype, out, **passkwargs)\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Epoch 0, Loss: 1.2299271821975708\n", + "Epoch 1, Loss: 1.1530401706695557\n", + "Epoch 2, Loss: 1.0396554470062256\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[191], line 9\u001B[0m\n\u001B[1;32m 6\u001B[0m X_test \u001B[38;5;241m=\u001B[39m [X_test[i] \u001B[38;5;28;01mfor\u001B[39;00m i \u001B[38;5;129;01min\u001B[39;00m not_nan_indices]\n\u001B[1;32m 8\u001B[0m model \u001B[38;5;241m=\u001B[39m Model()\n\u001B[0;32m----> 9\u001B[0m \u001B[43mmodel\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mfit\u001B[49m\u001B[43m(\u001B[49m\u001B[43mX_train\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43my_train\u001B[49m\u001B[43m)\u001B[49m\n", + "Cell \u001B[0;32mIn[190], line 66\u001B[0m, in \u001B[0;36mModel.fit\u001B[0;34m(self, X, y)\u001B[0m\n\u001B[1;32m 64\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m idx, (inputs, labels) \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28menumerate\u001B[39m(train_loader):\n\u001B[1;32m 65\u001B[0m optimizer\u001B[38;5;241m.\u001B[39mzero_grad()\n\u001B[0;32m---> 66\u001B[0m outputs \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcnn\u001B[49m\u001B[43m(\u001B[49m\u001B[43minputs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 67\u001B[0m loss \u001B[38;5;241m=\u001B[39m criterion(outputs, labels)\n\u001B[1;32m 68\u001B[0m loss\u001B[38;5;241m.\u001B[39mbackward()\n", + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/module.py:1511\u001B[0m, in \u001B[0;36mModule._wrapped_call_impl\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 1509\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_compiled_call_impl(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;66;03m# type: ignore[misc]\u001B[39;00m\n\u001B[1;32m 1510\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m-> 1511\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_impl\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/module.py:1520\u001B[0m, in \u001B[0;36mModule._call_impl\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 1515\u001B[0m \u001B[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001B[39;00m\n\u001B[1;32m 1516\u001B[0m \u001B[38;5;66;03m# this function, and just call forward.\u001B[39;00m\n\u001B[1;32m 1517\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m (\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_pre_hooks\n\u001B[1;32m 1518\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_backward_hooks\n\u001B[1;32m 1519\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_forward_pre_hooks):\n\u001B[0;32m-> 1520\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mforward_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1522\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m 1523\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n", + "Cell \u001B[0;32mIn[190], line 21\u001B[0m, in \u001B[0;36mCNN.forward\u001B[0;34m(self, x)\u001B[0m\n\u001B[1;32m 19\u001B[0m x \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mconv2(x)\n\u001B[1;32m 20\u001B[0m x \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mrelu(x)\n\u001B[0;32m---> 21\u001B[0m x \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mmaxpool\u001B[49m\u001B[43m(\u001B[49m\u001B[43mx\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 22\u001B[0m x \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mflatten(x)\n\u001B[1;32m 23\u001B[0m x \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mfc1(x)\n", + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/module.py:1511\u001B[0m, in \u001B[0;36mModule._wrapped_call_impl\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 1509\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_compiled_call_impl(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;66;03m# type: ignore[misc]\u001B[39;00m\n\u001B[1;32m 1510\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m-> 1511\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_impl\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/module.py:1520\u001B[0m, in \u001B[0;36mModule._call_impl\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 1515\u001B[0m \u001B[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001B[39;00m\n\u001B[1;32m 1516\u001B[0m \u001B[38;5;66;03m# this function, and just call forward.\u001B[39;00m\n\u001B[1;32m 1517\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m (\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_pre_hooks\n\u001B[1;32m 1518\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_backward_hooks\n\u001B[1;32m 1519\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_forward_pre_hooks):\n\u001B[0;32m-> 1520\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mforward_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1522\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m 1523\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n", + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/pooling.py:164\u001B[0m, in \u001B[0;36mMaxPool2d.forward\u001B[0;34m(self, input)\u001B[0m\n\u001B[1;32m 163\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mforward\u001B[39m(\u001B[38;5;28mself\u001B[39m, \u001B[38;5;28minput\u001B[39m: Tensor):\n\u001B[0;32m--> 164\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mF\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mmax_pool2d\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43minput\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mkernel_size\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mstride\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 165\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mpadding\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdilation\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mceil_mode\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mceil_mode\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 166\u001B[0m \u001B[43m \u001B[49m\u001B[43mreturn_indices\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mreturn_indices\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/_jit_internal.py:499\u001B[0m, in \u001B[0;36mboolean_dispatch..fn\u001B[0;34m(*args, **kwargs)\u001B[0m\n\u001B[1;32m 497\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m if_true(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs)\n\u001B[1;32m 498\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m--> 499\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mif_false\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/functional.py:796\u001B[0m, in \u001B[0;36m_max_pool2d\u001B[0;34m(input, kernel_size, stride, padding, dilation, ceil_mode, return_indices)\u001B[0m\n\u001B[1;32m 794\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m stride \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m 795\u001B[0m stride \u001B[38;5;241m=\u001B[39m torch\u001B[38;5;241m.\u001B[39mjit\u001B[38;5;241m.\u001B[39mannotate(List[\u001B[38;5;28mint\u001B[39m], [])\n\u001B[0;32m--> 796\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mtorch\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mmax_pool2d\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43minput\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mkernel_size\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mstride\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mpadding\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mdilation\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mceil_mode\u001B[49m\u001B[43m)\u001B[49m\n", + "\u001B[0;31mKeyboardInterrupt\u001B[0m: " + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)\n", + "\n", + "not_nan_indices = np.argwhere(~np.isnan(np.array(y_test))).squeeze()\n", + "y_test = [y_test[i] for i in not_nan_indices]\n", + "X_test = [X_test[i] for i in not_nan_indices]\n", + "\n", + "model = Model()\n", + "model.fit(X_train, y_train)\n", + "# predictions = model.predict(X_train)\n", + "# print(predictions[0])\n", + "# print(y_train[0])" + ] + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(9, 16, 16)\n", + "(9, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(7, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(8, 16, 16)\n", + "(9, 16, 16)\n", + "(6, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(6, 16, 16)\n", + "(8, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(6, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(6, 16, 16)\n", + "(10, 16, 16)\n", + "(6, 16, 16)\n", + "(9, 16, 16)\n", + "(9, 16, 16)\n", + "(9, 16, 16)\n", + "(7, 16, 16)\n", + "(10, 16, 16)\n", + "(7, 16, 16)\n", + "(10, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(8, 16, 16)\n", + "(7, 16, 16)\n", + "(8, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(7, 16, 16)\n", + "(10, 16, 16)\n", + "(9, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(9, 16, 16)\n", + "(7, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(9, 16, 16)\n", + "(6, 16, 16)\n", + "(7, 16, 16)\n", + "(9, 16, 16)\n", + "(6, 16, 16)\n", + "(7, 16, 16)\n", + "(6, 16, 16)\n", + "(9, 16, 16)\n", + "(6, 16, 16)\n", + "(9, 16, 16)\n", + "(8, 16, 16)\n", + "(7, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(7, 16, 16)\n", + "(6, 16, 16)\n", + "(9, 16, 16)\n", + "(6, 16, 16)\n", + "(6, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(6, 16, 16)\n", + "(9, 16, 16)\n", + "(7, 16, 16)\n", + "(8, 16, 16)\n", + "(7, 16, 16)\n", + "(9, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(7, 16, 16)\n", + "(6, 16, 16)\n", + "(9, 16, 16)\n", + "(9, 16, 16)\n", + "(9, 16, 16)\n", + "(6, 16, 16)\n", + "(10, 16, 16)\n", + "(6, 16, 16)\n", + "(9, 16, 16)\n", + "(7, 16, 16)\n", + "(6, 16, 16)\n", + "(10, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(7, 16, 16)\n", + "(9, 16, 16)\n", + "(6, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(6, 16, 16)\n", + "(7, 16, 16)\n", + "(6, 16, 16)\n", + "(6, 16, 16)\n", + "(6, 16, 16)\n", + "(8, 16, 16)\n", + "(6, 16, 16)\n", + "(10, 16, 16)\n", + "(9, 16, 16)\n", + "(10, 16, 16)\n", + "(9, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(8, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(6, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(9, 16, 16)\n", + "(7, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(6, 16, 16)\n", + "(6, 16, 16)\n", + "(8, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(9, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(9, 16, 16)\n", + "(8, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(9, 16, 16)\n", + "(10, 16, 16)\n", + "(7, 16, 16)\n", + "(9, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(8, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(9, 16, 16)\n", + "(9, 16, 16)\n", + "(6, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(7, 16, 16)\n", + "(9, 16, 16)\n", + "(6, 16, 16)\n", + "(7, 16, 16)\n", + "(8, 16, 16)\n", + "(9, 16, 16)\n", + "(9, 16, 16)\n", + "(8, 16, 16)\n", + "(7, 16, 16)\n", + "(10, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(9, 16, 16)\n", + "(8, 16, 16)\n", + "(6, 16, 16)\n", + "(7, 16, 16)\n", + "(7, 16, 16)\n", + "(6, 16, 16)\n", + "(8, 16, 16)\n", + "(9, 16, 16)\n", + "(7, 16, 16)\n", + "(6, 16, 16)\n", + "(6, 16, 16)\n", + "(10, 16, 16)\n", + "(9, 16, 16)\n", + "(7, 16, 16)\n", + "(8, 16, 16)\n", + "(8, 16, 16)\n", + "(8, 16, 16)\n", + "(9, 16, 16)\n", + "(8, 16, 16)\n", + "(9, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(9, 16, 16)\n", + "(10, 16, 16)\n", + "(8, 16, 16)\n", + "(10, 16, 16)\n", + "(7, 16, 16)\n", + "(8, 16, 16)\n", + "(7, 16, 16)\n", + "(6, 16, 16)\n", + "(9, 16, 16)\n", + "(6, 16, 16)\n", + "tensor([[-0.7872, 0.9621, -1.1426, -1.4650, -0.4242, -0.4840],\n", + " [-0.4881, 1.5047, -1.0677, -0.8765, -1.2379, -1.1973],\n", + " [-0.7944, 0.7633, -0.8908, -1.2021, -0.1398, -0.1900],\n", + " [-0.2103, 2.2481, -2.2957, -2.3898, 0.0291, -0.8567],\n", + " [ 0.4143, 2.8888, -1.1756, -0.8911, -1.5052, -1.1943],\n", + " [ 0.5421, 2.6672, -1.5965, -1.4607, -2.0967, -1.3973]],\n", + " grad_fn=)\n", + "tensor([1, 1, 1, 1, 1, 1])\n", + "F1 Score (macro): 0.36\n" + ] + } + ], + "source": [ + "from sklearn.metrics import f1_score\n", + "\n", + "y_pred = model.predict(X_test)\n", + "result = model.cnn(clean_batch(X_train[0]))\n", + "print(result)\n", + "print(torch.argmax(result, axis=1))\n", + "# print(y_train[0])\n", + "print(\"F1 Score (macro): {0:.2f}\".format(f1_score(y_test, y_pred, average='macro'))) # You may encounter errors, you are expected to figure out what's the issue.\n" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-04-28T04:08:22.419351Z", + "start_time": "2024-04-28T04:08:22.241362Z" + } + }, + "id": "dd595539230499dd", + "execution_count": 189 + }, + { + "cell_type": "markdown", + "id": "8aa31404", + "metadata": {}, + "source": [ + "### 12. Hyperparameters Search" + ] + }, + { + "cell_type": "code", + "outputs": [], + "source": [], + "metadata": { + "collapsed": false + }, + "id": "7728c49ea8a0bacf" + }, + { + "cell_type": "code", + "execution_count": null, + "id": "81addd51", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.9.18" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/cs2109s/labs/final-mock/main.ipynb b/cs2109s/labs/final-mock/main.ipynb index 5b157c6..636652c 100644 --- a/cs2109s/labs/final-mock/main.ipynb +++ b/cs2109s/labs/final-mock/main.ipynb @@ -299,16 +299,25 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 70, "id": "a44b7aa4", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-27T07:45:57.664982Z", + "start_time": "2024-04-27T07:45:57.652624Z" + } + }, "outputs": [], "source": [ + "from sklearn.preprocessing import OrdinalEncoder\n", + "from sklearn.linear_model import LinearRegression\n", + "import sklearn.ensemble\n", + "\n", + "\n", "class Model: \n", " \"\"\"\n", " This class represents an AI model.\n", " \"\"\"\n", - " \n", " def __init__(self):\n", " \"\"\"\n", " Constructor for Model class.\n", @@ -318,9 +327,26 @@ " self : object\n", " The instance of the object passed by Python.\n", " \"\"\"\n", - " # TODO: Replace the following code with your own initialization code.\n", - " pass\n", - " \n", + " self.model = LinearRegression()\n", + "\n", + " def process_input(self, X):\n", + " images = X['images'].reshape(X['images'].shape[0], -1)\n", + " X = X['tabular']\n", + " X = \n", + " def object_columns(X):\n", + " return X.dtypes[X.dtypes == 'object'].index\n", + "\n", + " def convert_to_ordinal(X, columns):\n", + " encoder = OrdinalEncoder()\n", + " return encoder.fit_transform(X[columns])\n", + "\n", + " obj_cols = object_columns(X)\n", + " ordinal_columns = convert_to_ordinal(X, obj_cols)\n", + " X[obj_cols] = ordinal_columns\n", + " columns_to_drop = ['V40', 'V20', 'V39', 'V15', 'V10', 'V35', 'V2', 'V52', 'V45', 'V7', 'V48', 'V49', 'V43', 'V44', 'V26', 'V41', 'V11', 'V53', 'V42', 'V38']\n", + " X = X.drop(columns_to_drop, axis=1)\n", + " X = X.fillna(X.mean())\n", + " return X\n", " def fit(self, X_dict, y):\n", " \"\"\"\n", " Train the model using the input data.\n", @@ -339,9 +365,11 @@ " self : object\n", " Returns an instance of the trained model.\n", " \"\"\"\n", - " # TODO: Add your training code.\n", + " X = X_dict['tabular']\n", + " X = self.process_input(X)\n", + " self.model.fit(X, y)\n", " return self\n", - " \n", + " \n", " def predict(self, X_dict):\n", " \"\"\"\n", " Use the trained model to make predictions.\n", @@ -359,8 +387,9 @@ " Predicted target values per element in X_dict.\n", " \n", " \"\"\"\n", - " # TODO: Replace the following code with your own prediction code.\n", - " return [0 for _ in range(len(X_dict['tabular']))]" + " X = self.process_input(X_dict['tabular'])\n", + " return self.model.predict(X)\n", + " # return [0 for _ in range(len(X_dict['tabular']))]" ] }, { @@ -375,9 +404,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 51, "id": "4f4dd489", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-27T07:23:39.732051Z", + "start_time": "2024-04-27T07:23:39.725818Z" + } + }, "outputs": [], "source": [ "# Import packages\n", @@ -390,9 +424,14 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 52, "id": "3064e0ff", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-27T07:23:42.216498Z", + "start_time": "2024-04-27T07:23:40.676178Z" + } + }, "outputs": [], "source": [ "# Load data\n", @@ -413,10 +452,47 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 71, "id": "27c9fd10", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-27T07:46:01.374238Z", + "start_time": "2024-04-27T07:45:59.640013Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/zd/9vyg32393qncxwt_3r_873mh0000gn/T/ipykernel_29080/3308836053.py:43: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " X[obj_cols] = ordinal_columns\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MSE: 5352.19\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/zd/9vyg32393qncxwt_3r_873mh0000gn/T/ipykernel_29080/3308836053.py:43: SettingWithCopyWarning: \n", + "A value is trying to be set on a copy of a slice from a DataFrame.\n", + "Try using .loc[row_indexer,col_indexer] = value instead\n", + "\n", + "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", + " X[obj_cols] = ordinal_columns\n" + ] + } + ], "source": [ "# Split train and test\n", "X_dict_train, y_train, X_dict_test, y_test = dict_train_test_split(X_dict, y, ratio=0.9)\n", diff --git a/cs2109s/labs/final-mock/scratchpad.ipynb b/cs2109s/labs/final-mock/scratchpad.ipynb index c5028b2..6826e60 100644 --- a/cs2109s/labs/final-mock/scratchpad.ipynb +++ b/cs2109s/labs/final-mock/scratchpad.ipynb @@ -119,12 +119,12 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 95, "id": "cded1ed6", "metadata": { "ExecuteTime": { - "end_time": "2024-04-20T14:33:43.165330Z", - "start_time": "2024-04-20T14:33:41.764757Z" + "end_time": "2024-04-27T06:36:12.309324Z", + "start_time": "2024-04-27T06:36:12.305262Z" } }, "outputs": [], @@ -132,7 +132,9 @@ "import pandas as pd\n", "import os\n", "import numpy as np\n", - "from util import show_images, dict_train_test_split" + "from util import show_images, dict_train_test_split\n", + "from sklearn.preprocessing import OrdinalEncoder\n", + "import matplotlib.pyplot as plt\n" ] }, { @@ -151,12 +153,12 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 96, "id": "a88be725", "metadata": { "ExecuteTime": { - "end_time": "2024-04-20T14:33:46.117171Z", - "start_time": "2024-04-20T14:33:44.688985Z" + "end_time": "2024-04-27T06:36:13.752562Z", + "start_time": "2024-04-27T06:36:12.324501Z" } }, "outputs": [ @@ -164,23 +166,21 @@ "name": "stdout", "output_type": "stream", "text": [ - "(357699, 61)\n" + "(357699, 61)\n", + "Object columns 18\n" ] - }, - { - "data": { - "text/plain": " V0 V1 V2 V3 V4 V5 V6 V7 \\\n0 8315.0 1784.0 21994.0 37115.0 317.0 105.016815 296559.0 321602.0 \n1 8315.0 1272.0 11114.0 18683.0 230.0 NaN 340059.0 368602.0 \n2 8315.0 3832.0 65514.0 147707.0 607.0 105.018240 279159.0 302802.0 \n3 8315.0 2296.0 32874.0 55547.0 404.0 NaN 313959.0 340402.0 \n4 11021.0 1784.0 21994.0 37115.0 375.0 105.024985 232701.0 252606.0 \n\n V8 V9 ... V51 V52 V53 V54 V55 V56 V57 V58 \\\n0 2470.0 C1 ... C4 C4 834148.0 C2 C6 1089 293 C2 \n1 2820.0 C0 ... C7 C7 401668.0 C5 C6 9801 1085 C7 \n2 2330.0 C1 ... C7 C7 820948.0 C5 C4 1485 304 C6 \n3 2610.0 C1 ... C7 C7 1664548.0 C5 C5 -495 711 C4 \n4 1490.0 C0 ... C7 C7 735748.0 C2 C9 1683 117 C0 \n\n V59 target \n0 7428.249334 300.0 \n1 9693.829502 200.0 \n2 7609.258214 50.0 \n3 4258.532609 140.0 \n4 9492.484802 20.0 \n\n[5 rows x 61 columns]", - "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
V0V1V2V3V4V5V6V7V8V9...V51V52V53V54V55V56V57V58V59target
08315.01784.021994.037115.0317.0105.016815296559.0321602.02470.0C1...C4C4834148.0C2C61089293C27428.249334300.0
18315.01272.011114.018683.0230.0NaN340059.0368602.02820.0C0...C7C7401668.0C5C698011085C79693.829502200.0
28315.03832.065514.0147707.0607.0105.018240279159.0302802.02330.0C1...C7C7820948.0C5C41485304C67609.25821450.0
38315.02296.032874.055547.0404.0NaN313959.0340402.02610.0C1...C7C71664548.0C5C5-495711C44258.532609140.0
411021.01784.021994.037115.0375.0105.024985232701.0252606.01490.0C0...C7C7735748.0C2C91683117C09492.48480220.0
\n

5 rows × 61 columns

\n
" - }, - "execution_count": 3, - "metadata": {}, - "output_type": "execute_result" } ], "source": [ "df = pd.read_csv(os.path.join('data', 'tabular.csv'))\n", "print(df.shape)\n", - "df.head()" + "df.head()\n", + "\n", + "import math\n", + "\n", + "# Object columns\n", + "object_columns = df.dtypes[df.dtypes == 'object']\n", + "print('Object columns', object_columns.shape[0])" ] }, { @@ -193,12 +193,12 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 114, "id": "6297e25a", "metadata": { "ExecuteTime": { - "end_time": "2024-04-20T14:34:00.060850Z", - "start_time": "2024-04-20T14:33:59.642045Z" + "end_time": "2024-04-27T07:48:25.899880Z", + "start_time": "2024-04-27T07:48:25.398594Z" } }, "outputs": [ @@ -212,10 +212,18 @@ { "data": { "text/plain": "
", - "image/png": "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uW984xum3N69e005ScrLy3M6vrGx0bwWDjv11FOVlZXllHF9nILw4IMPmnLz58835YYPH96p60nSJ5984nT8gQMHzGvhsEgkokgk4pSx1v95551nyknSj3/8Y1Pu7rvvNuUqKytNubVr15pyklRYWOicaWpqMq+Hw7KyspyvAdbnnn79+plyknTTTTeZco8++qgpV1tba8pt377dlJOkc8891+n4hoYG81o4bP/+/Tp06JBTZs+ePR20m/Y9/vjjptz3v/99U+4Pf/iDKXfDDTeYcpJ7/Tc1NWnz5s1RHcsrmQAAAACAwDBkAgAAAAACw5AJAAAAAAiM05BZXl6uIUOGKCcnR71799bVV18d9ftygWRH/cN39AB8Rv3Dd/QAXDgNma+//rqmTZumdevWqbKyUocOHVJpaan279/fUfsDEgb1D9/RA/AZ9Q/f0QNw4fTpsq+88kqbPy9ZskS9e/dWVVWVLr/88kA3BiQa6h++owfgM+ofvqMH4CKmrzCpq6uTJJ188sntHhMOhxUOh4/8ub6+PpYlgYRB/cN3X9YD1D9SGdcA+I5rAI7H/ME/kUhEZWVluuyyy1RUVNTuceXl5crLyztyy8/Pty4JJAzqH76Lpgeof6QqrgHwHdcAfBnzkHnrrbfq3Xff1bPPPnvc42bOnKm6urojt+rqauuSQMKg/uG7aHqA+keq4hoA33ENwJcxvV12+vTpWrFihdasWaMBAwYc99hQKKRQKGTaHJCIqH/4LtoeoP6RirgGwHdcAxANpyEzEolo+vTpWrZsmVavXq2CgoKO2heQcKh/+I4egM+of/iOHoALpyFz2rRpeuaZZ7R8+XLl5OSopqZGkpSXl6euXbt2yAaBREH9w3f0AHxG/cN39ABcOP2bzIqKCtXV1WnkyJHq16/fkdvSpUs7an9AwqD+4Tt6AD6j/uE7egAunN8uC/iK+ofv6AH4jPqH7+gBuIjpezJj8Z3vfEe5ublOmR07dpjWmj9/viknSbfccospd+KJJ5pyffr0MeUuvfRSU06SPvjgA6fj09LSzGvhsIcffti5/qdPn25aq7S01JSTpCuuuMKUKykpMeVmz55tysVSk7///e+djm9qajKvhcP+8z//07n+v/rVr5rWGj58uCknSe+++64pZ/0uuNraWlPu29/+tikn2a4d+/bt04MPPmheE9KkSZOc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5vVw2M0336ysrCynTF1dnWmthoYGU06SnnrqKVPuK1/5iik3YcIEU+7ll1825SQpNzfX6fjm5mbzWjhs//79zufx008/Na31l7/8xZSTpCuuuMKUe//99025v/3tb6bchg0bTDlJGjBggNPx4XA46mN5JRMAAAAAEBiGTAAAAABAYBgyAQAAAACBiWnILC8vV1pammbMmBHQdoDkQf3Dd/QAfEb9w2fUP76Mechcv369Fi1apPPPPz/I/QBJgfqH7+gB+Iz6h8+of0TDNGTu27dP48eP1+LFi82fhgokK+ofvqMH4DPqHz6j/hEt05A5bdo0XXXVVbryyiu/9NhwOKz6+vo2NyCZUf/wXbQ9QP0jFXENgM+of0TL+QuynnvuOb311ltav359VMeXl5frgQcecN4YkIiof/jOpQeof6QargHwGfUPF06vZFZXV+v222/XU089pezs7KgyM2fOVF1d3ZFbdXW1aaNAvFH/8J1rD1D/SCVcA+Az6h+unF7JrKqq0u7du1VcXHzkvubmZq1Zs0aPPvqowuGw0tPT22RCoZBCoVAwuwXiiPqH71x7gPpHKuEaAJ9R/3DlNGSOHj1aGzdubHPfTTfdpHPOOUf33HPPUcUFpBLqH76jB+Az6h8+o/7hymnIzMnJUVFRUZv7unfvrh49ehx1P5BqqH/4jh6Az6h/+Iz6hyvz92QCAAAAAPD3nD9d9u+tXr3alPvd736njAy35a+66irTWj169DDlJOm1114z5Xr27GnKTZ061ZR7+OGHTTlJ+uKLL5yOb2pqMq+Vaqz1//bbb6tbt25OmW9+85umtWLx05/+1JS77LLLTLlvfetbptyPfvQjU06S3nnnHafjDx48aF4rFVl64He/+50yMzOdMuPHj3deR5J69eplyknSkiVLTLnCwkJTbvDgwabcSy+9ZMpJ0meffeac4Rrw/1mvARdddJG6du3qlLn55ptNa8XikUceMeUmTJhgyv3P//yPKffP//zPppwk1dTUOB1/4MAB81qpxlr/VVVVztcA6/Nj3759TTlJOvnkk025/Px8U2758uWm3LXXXmvKSdK2bducjm9sbIz6WF7JBAAAAAAEhiETAAAAABAYhkwAAAAAQGAYMgEAAAAAgWHIBAAAAAAEhiETAAAAABAYhkwAAAAAQGAYMgEAAAAAgWHIBAAAAAAEhiET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" + "image/png": "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uW984xum3N69e005ScrLy3M6vrGx0bwWDjv11FOVlZXllHF9nILw4IMPmnLz58835YYPH96p60nSJ5984nT8gQMHzGvhsEgkokgk4pSx1v95551nyknSj3/8Y1Pu7rvvNuUqKytNubVr15pyklRYWOicaWpqMq+Hw7KyspyvAdbnnn79+plyknTTTTeZco8++qgpV1tba8pt377dlJOkc8891+n4hoYG81o4bP/+/Tp06JBTZs+ePR20m/Y9/vjjptz3v/99U+4Pf/iDKXfDDTeYcpJ7/Tc1NWnz5s1RHcsrmQAAAACAwDBkAgAAAAACw5AJAAAAAAiM05BZXl6uIUOGKCcnR71799bVV18d9ftygWRH/cN39AB8Rv3Dd/QAXDgNma+//rqmTZumdevWqbKyUocOHVJpaan279/fUfsDEgb1D9/RA/AZ9Q/f0QNw4fTpsq+88kqbPy9ZskS9e/dWVVWVLr/88kA3BiQa6h++owfgM+ofvqMH4CKmrzCpq6uTJJ188sntHhMOhxUOh4/8ub6+PpYlgYRB/cN3X9YD1D9SGdcA+I5rAI7H/ME/kUhEZWVluuyyy1RUVNTuceXl5crLyztyy8/Pty4JJAzqH76Lpgeof6QqrgHwHdcAfBnzkHnrrbfq3Xff1bPPPnvc42bOnKm6urojt+rqauuSQMKg/uG7aHqA+keq4hoA33ENwJcxvV12+vTpWrFihdasWaMBAwYc99hQKKRQKGTaHJCIqH/4LtoeoP6RirgGwHdcAxANpyEzEolo+vTpWrZsmVavXq2CgoKO2heQcKh/+I4egM+of/iOHoALpyFz2rRpeuaZZ7R8+XLl5OSopqZGkpSXl6euXbt2yAaBREH9w3f0AHxG/cN39ABcOP2bzIqKCtXV1WnkyJHq16/fkdvSpUs7an9AwqD+4Tt6AD6j/uE7egAunN8uC/iK+ofv6AH4jPqH7+gBuIjpezJj8Z3vfEe5ublOmR07dpjWmj9/viknSbfccospd+KJJ5pyffr0MeUuvfRSU06SPvjgA6fj09LSzGvhsIcffti5/qdPn25aq7S01JSTpCuuuMKUKykpMeVmz55tysVSk7///e+djm9qajKvhcP+8z//07n+v/rVr5rWGj58uCknSe+++64pZ/0uuNraWlPu29/+tikn2a4d+/bt04MPPmheE9KkSZOc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5vVw2M0336ysrCynTF1dnWmthoYGU06SnnrqKVPuK1/5iik3YcIEU+7ll1825SQpNzfX6fjm5mbzWjhs//79zufx008/Na31l7/8xZSTpCuuuMKUe//99025v/3tb6bchg0bTDlJGjBggNPx4XA46mN5JRMAAAAAEBiGTAAAAABAYBgyAQAAAACBiWnILC8vV1pammbMmBHQdoDkQf3Dd/QAfEb9w2fUP76Mechcv369Fi1apPPPPz/I/QBJgfqH7+gB+Iz6h8+of0TDNGTu27dP48eP1+LFi82fhgokK+ofvqMH4DPqHz6j/hEt05A5bdo0XXXVVbryyiu/9NhwOKz6+vo2NyCZUf/wXbQ9QP0jFXENgM+of0TL+QuynnvuOb311ltav359VMeXl5frgQcecN4YkIiof/jOpQeof6QargHwGfUPF06vZFZXV+v222/XU089pezs7KgyM2fOVF1d3ZFbdXW1aaNAvFH/8J1rD1D/SCVcA+Az6h+unF7JrKqq0u7du1VcXHzkvubmZq1Zs0aPPvqowuGw0tPT22RCoZBCoVAwuwXiiPqH71x7gPpHKuEaAJ9R/3DlNGSOHj1aGzdubHPfTTfdpHPOOUf33HPPUcUFpBLqH76jB+Az6h8+o/7hymnIzMnJUVFRUZv7unfvrh49ehx1P5BqqH/4jh6Az6h/+Iz6hyvz92QCAAAAAPD3nD9d9u+tXr3alPvd736njAy35a+66irTWj169DDlJOm1114z5Xr27GnKTZ061ZR7+OGHTTlJ+uKLL5yOb2pqMq+Vaqz1//bbb6tbt25OmW9+85umtWLx05/+1JS77LLLTLlvfetbptyPfvQjU06S3nnnHafjDx48aF4rFVl64He/+50yMzOdMuPHj3deR5J69eplyknSkiVLTLnCwkJTbvDgwabcSy+9ZMpJ0meffeac4Rrw/1mvARdddJG6du3qlLn55ptNa8XikUceMeUmTJhgyv3P//yPKffP//zPppwk1dTUOB1/4MAB81qpxlr/VVVVztcA6/Nj3759TTlJOvnkk025/Px8U2758uWm3LXXXmvKSdK2bducjm9sbIz6WF7JBAAAAAAEhiETAAAAABAYhkwAAAAAQGAYMgEAAAAAgWHIBAAAAAAEhiETAAAAABAYhkwAAAAAQGAYMgEAAAAAgWHIBAAAAAAEhiET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" }, "metadata": {}, "output_type": "display_data" + }, + { + "data": { + "text/plain": "(357699, 64)" + }, + "execution_count": 114, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ @@ -223,7 +231,8 @@ " images = np.load(f)\n", " \n", "print('Shape:', images.shape)\n", - "show_images(images[:18], n_row=3, n_col=5, figsize=[12,5])" + "show_images(images[:18], n_row=3, n_col=5, figsize=[12,5])\n", + "images.reshape(images.shape[0], -1).shape" ] }, { @@ -244,120 +253,141 @@ }, { "cell_type": "code", - "execution_count": 5, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Columns with high NaNs: Index(['V15', 'V38', 'V39', '0', '19', '24'], dtype='object')\n", + "Columns with high zeros Index(['55', '61', '62', '63'], dtype='object')\n", + "['42', '60', '35', 'V20', 'V35', '5', '0', '57', '63', '2', '9', '12', '40', 'V41', '53', '33', '20', '29', '50', '58', 'V40', '28', 'V39', '52', '37', '54', 'V52', '61', '56', '39', '21', 'V45', 'V7', '47', '51', '55', 'V26', '16', '41', 'V15', '19', '62', '14', '25', '49', '22', '7', '4', '18', '36', '13', 'V48', 'V49', '23', '1', '48', 'V44', '6', 'V11', 'V53', '32', 'V38', '43', '11', '44', 'V10', '3', 'V2', '15', '38', '30', '45', '26', '24', 'V43', '34', '46', 'V42']\n" + ] + } + ], + "source": [ + "Y = df['target']\n", + "X = df.drop('target', axis=1)\n", + "\n", + "def nan_columns(X, threshold=0.5):\n", + " count = X.shape[0] * threshold\n", + " nan_columns = X.isna().sum()\n", + " return nan_columns[nan_columns >= count].index\n", + "def zero_columns(X, threshold=0.5):\n", + " count = X.shape[0] * threshold\n", + " zero_cols = (X == 0).sum()\n", + " return zero_cols[zero_cols >= count].index\n", + "\n", + "def object_columns(X):\n", + " return X.dtypes[X.dtypes == 'object'].index\n", + "\n", + "def convert_to_ordinal(X, columns):\n", + " encoder = OrdinalEncoder()\n", + " return encoder.fit_transform(X[columns])\n", + "\n", + "def correlated_columns(X, threshold=0.99):\n", + " corr = X.corr()\n", + " upper = corr.where(np.triu(np.ones(corr.shape), k=1).astype(bool))\n", + " return [column for column in upper.columns if any(upper[column] > threshold)]\n", + "\n", + "# Identify columns with High Nans\n", + "nan_columns = nan_columns(X, 0.5)\n", + "print('Columns with high NaNs:', nan_columns)\n", + "zero_cols = zero_columns(X, 0.9)\n", + "print('Columns with high zeros', zero_cols)\n", + "object_columns = object_columns(X)\n", + "ordinal_columns = convert_to_ordinal(X, object_columns)\n", + "X[object_columns] = ordinal_columns\n", + "\n", + "correlated_cols = correlated_columns(X, 0.95)\n", + "\n", + "columns_to_drop = list(set(nan_columns) | set(zero_cols) | set(correlated_cols))\n", + "print(columns_to_drop)\n" + ], + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-27T07:50:40.607409Z", + "start_time": "2024-04-27T07:50:30.338617Z" + } + }, "id": "3b1f62dd", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-20T14:34:03.954499Z", - "start_time": "2024-04-20T14:34:03.584502Z" - } - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(357699, 61)\n", - "V5 172305\n", - "V15 191109\n", - "V38 302903\n", - "V39 347413\n", - "shape (357699, 64)\n", - "nan 0 191109\n", - "nan 12 172305\n", - "nan 19 347413\n", - "nan 24 302903\n", - "0 55 357699\n", - "0 61 357699\n", - "0 62 357699\n", - "0 63 357699\n" - ] - } - ], - "source": [ - "targets = df['target']\n", - "print(df.shape)\n", - "for column in df:\n", - " if df[column].isna().sum() > 100000:\n", - " print(column, df[column].isna().sum())\n", - "# Remove V38, V39, and we can interpolate / remove V5 and V15\n", - "# Flatten the images\n", - "flattened_images = images.reshape(images.shape[0], -1)\n", - "print('shape', flattened_images.shape)\n", - "# ID useless columns\n", - "for i, col in enumerate(flattened_images.T):\n", - " if (np.isnan(col).sum() > 100000):\n", - " print('nan', i, np.isnan(col).sum())\n", - " if (col == 0).sum() > 100000:\n", - " print('0', i, (col == 0).sum())\n", - "# Col 19, 24, 55, 61, 62, 63 are useless\n", - "# Interpolate 0 and 12\n" - ] - }, - { - "cell_type": "markdown", - "id": "adb61967", - "metadata": {}, - "source": [ - "### 2. Detection and Handling of Missing Values" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "id": "4bb9cdfb", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-16T09:06:12.435405Z", - "start_time": "2024-04-16T09:06:12.381979Z" - } - }, - "outputs": [ - { - "ename": "KeyError", - "evalue": "\"['V38', 'V39', 'target'] not found in axis\"", - "output_type": "error", - "traceback": [ - "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mKeyError\u001B[0m Traceback (most recent call last)", - "Cell \u001B[0;32mIn[85], line 2\u001B[0m\n\u001B[1;32m 1\u001B[0m dropped_columns \u001B[38;5;241m=\u001B[39m [\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mV38\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mV39\u001B[39m\u001B[38;5;124m'\u001B[39m, \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mtarget\u001B[39m\u001B[38;5;124m'\u001B[39m]\n\u001B[0;32m----> 2\u001B[0m df \u001B[38;5;241m=\u001B[39m \u001B[43mdf\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdrop\u001B[49m\u001B[43m(\u001B[49m\u001B[43mdropped_columns\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;241;43m1\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[1;32m 3\u001B[0m flattened_images \u001B[38;5;241m=\u001B[39m np\u001B[38;5;241m.\u001B[39mdelete(flattened_images, [\u001B[38;5;241m19\u001B[39m, \u001B[38;5;241m24\u001B[39m,\u001B[38;5;241m55\u001B[39m,\u001B[38;5;241m61\u001B[39m,\u001B[38;5;241m62\u001B[39m,\u001B[38;5;241m63\u001B[39m], axis\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m1\u001B[39m)\n\u001B[1;32m 4\u001B[0m flattened_images\u001B[38;5;241m.\u001B[39mshape\n", - "File \u001B[0;32m/nix/store/nip0khhq6vhx1cimwz0ap9bzdvqawyg5-python3-3.11.8-env/lib/python3.11/site-packages/pandas/core/frame.py:5347\u001B[0m, in \u001B[0;36mDataFrame.drop\u001B[0;34m(self, labels, axis, index, columns, level, inplace, errors)\u001B[0m\n\u001B[1;32m 5199\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mdrop\u001B[39m(\n\u001B[1;32m 5200\u001B[0m \u001B[38;5;28mself\u001B[39m,\n\u001B[1;32m 5201\u001B[0m labels: IndexLabel \u001B[38;5;241m|\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m,\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 5208\u001B[0m errors: IgnoreRaise \u001B[38;5;241m=\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mraise\u001B[39m\u001B[38;5;124m\"\u001B[39m,\n\u001B[1;32m 5209\u001B[0m ) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m DataFrame \u001B[38;5;241m|\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m 5210\u001B[0m \u001B[38;5;250m \u001B[39m\u001B[38;5;124;03m\"\"\"\u001B[39;00m\n\u001B[1;32m 5211\u001B[0m \u001B[38;5;124;03m Drop specified labels from rows or columns.\u001B[39;00m\n\u001B[1;32m 5212\u001B[0m \n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 5345\u001B[0m \u001B[38;5;124;03m weight 1.0 0.8\u001B[39;00m\n\u001B[1;32m 5346\u001B[0m \u001B[38;5;124;03m \"\"\"\u001B[39;00m\n\u001B[0;32m-> 5347\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43msuper\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdrop\u001B[49m\u001B[43m(\u001B[49m\n\u001B[1;32m 5348\u001B[0m \u001B[43m \u001B[49m\u001B[43mlabels\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mlabels\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 5349\u001B[0m \u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43maxis\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 5350\u001B[0m \u001B[43m \u001B[49m\u001B[43mindex\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mindex\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 5351\u001B[0m \u001B[43m \u001B[49m\u001B[43mcolumns\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mcolumns\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 5352\u001B[0m \u001B[43m \u001B[49m\u001B[43mlevel\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mlevel\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 5353\u001B[0m \u001B[43m \u001B[49m\u001B[43minplace\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43minplace\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 5354\u001B[0m \u001B[43m \u001B[49m\u001B[43merrors\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43merrors\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 5355\u001B[0m \u001B[43m \u001B[49m\u001B[43m)\u001B[49m\n", - "File \u001B[0;32m/nix/store/nip0khhq6vhx1cimwz0ap9bzdvqawyg5-python3-3.11.8-env/lib/python3.11/site-packages/pandas/core/generic.py:4711\u001B[0m, in \u001B[0;36mNDFrame.drop\u001B[0;34m(self, labels, axis, index, columns, level, inplace, errors)\u001B[0m\n\u001B[1;32m 4709\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m axis, labels \u001B[38;5;129;01min\u001B[39;00m axes\u001B[38;5;241m.\u001B[39mitems():\n\u001B[1;32m 4710\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m labels \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[0;32m-> 4711\u001B[0m obj \u001B[38;5;241m=\u001B[39m \u001B[43mobj\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_drop_axis\u001B[49m\u001B[43m(\u001B[49m\u001B[43mlabels\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maxis\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mlevel\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43mlevel\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43merrors\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43merrors\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 4713\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m inplace:\n\u001B[1;32m 4714\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_update_inplace(obj)\n", - "File \u001B[0;32m/nix/store/nip0khhq6vhx1cimwz0ap9bzdvqawyg5-python3-3.11.8-env/lib/python3.11/site-packages/pandas/core/generic.py:4753\u001B[0m, in \u001B[0;36mNDFrame._drop_axis\u001B[0;34m(self, labels, axis, level, errors, only_slice)\u001B[0m\n\u001B[1;32m 4751\u001B[0m new_axis \u001B[38;5;241m=\u001B[39m axis\u001B[38;5;241m.\u001B[39mdrop(labels, level\u001B[38;5;241m=\u001B[39mlevel, errors\u001B[38;5;241m=\u001B[39merrors)\n\u001B[1;32m 4752\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m-> 4753\u001B[0m new_axis \u001B[38;5;241m=\u001B[39m \u001B[43maxis\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdrop\u001B[49m\u001B[43m(\u001B[49m\u001B[43mlabels\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43merrors\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43merrors\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 4754\u001B[0m indexer \u001B[38;5;241m=\u001B[39m axis\u001B[38;5;241m.\u001B[39mget_indexer(new_axis)\n\u001B[1;32m 4756\u001B[0m \u001B[38;5;66;03m# Case for non-unique axis\u001B[39;00m\n\u001B[1;32m 4757\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n", - "File \u001B[0;32m/nix/store/nip0khhq6vhx1cimwz0ap9bzdvqawyg5-python3-3.11.8-env/lib/python3.11/site-packages/pandas/core/indexes/base.py:6992\u001B[0m, in \u001B[0;36mIndex.drop\u001B[0;34m(self, labels, errors)\u001B[0m\n\u001B[1;32m 6990\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m mask\u001B[38;5;241m.\u001B[39many():\n\u001B[1;32m 6991\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m errors \u001B[38;5;241m!=\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mignore\u001B[39m\u001B[38;5;124m\"\u001B[39m:\n\u001B[0;32m-> 6992\u001B[0m \u001B[38;5;28;01mraise\u001B[39;00m \u001B[38;5;167;01mKeyError\u001B[39;00m(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;132;01m{\u001B[39;00mlabels[mask]\u001B[38;5;241m.\u001B[39mtolist()\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m not found in axis\u001B[39m\u001B[38;5;124m\"\u001B[39m)\n\u001B[1;32m 6993\u001B[0m indexer \u001B[38;5;241m=\u001B[39m indexer[\u001B[38;5;241m~\u001B[39mmask]\n\u001B[1;32m 6994\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdelete(indexer)\n", - "\u001B[0;31mKeyError\u001B[0m: \"['V38', 'V39', 'target'] not found in axis\"" - ] - } - ], - "source": [ - "dropped_columns = ['V38', 'V39', 'target']\n", - "df = df.drop(dropped_columns, axis=1)\n", - "flattened_images = np.delete(flattened_images, [19, 24,55,61,62,63], axis=1)" - ] + "execution_count": 121 }, { "cell_type": "code", "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "(357699, 58)\n" - ] + "data": { + "text/plain": " V0 V1 V3 V4 V5 V6 V8 V9 \\\n0 8315.0 1784.0 37115.0 317.0 105.016815 296559.0 2470.0 1.0 \n1 8315.0 1272.0 18683.0 230.0 NaN 340059.0 2820.0 0.0 \n2 8315.0 3832.0 147707.0 607.0 105.018240 279159.0 2330.0 1.0 \n3 8315.0 2296.0 55547.0 404.0 NaN 313959.0 2610.0 1.0 \n4 11021.0 1784.0 37115.0 375.0 105.024985 232701.0 1490.0 0.0 \n... ... ... ... ... ... ... ... ... \n357694 8315.0 1272.0 18683.0 230.0 105.012445 270459.0 2260.0 0.0 \n357695 8315.0 2296.0 55547.0 404.0 NaN 244359.0 2050.0 0.0 \n357696 8315.0 1784.0 37115.0 375.0 NaN 348759.0 2890.0 0.0 \n357697 8315.0 1784.0 37115.0 375.0 105.016815 348759.0 2890.0 0.0 \n357698 8315.0 1784.0 37115.0 317.0 NaN 244359.0 2050.0 0.0 \n\n V12 V13 ... V56 V57 V58 V59 8 10 \\\n0 85.0 737.0 ... 1089 293 2.0 7428.249334 0.249110 0.283362 \n1 42.0 585.0 ... 9801 1085 7.0 9693.829502 -1.144696 -1.343454 \n2 335.0 1041.0 ... 1485 304 6.0 7609.258214 0.129641 -0.258910 \n3 113.0 889.0 ... -495 711 4.0 4258.532609 0.726987 0.283362 \n4 186.0 737.0 ... 1683 117 0.0 9492.484802 0.249110 0.283362 \n... ... ... ... ... ... ... ... ... ... \n357694 4.0 585.0 ... 6336 1855 2.0 4634.276235 -4.290717 -2.427998 \n357695 110.0 889.0 ... 2970 854 8.0 8379.073980 0.129641 -0.258910 \n357696 163.0 737.0 ... -4257 942 8.0 5359.986193 0.408403 0.283362 \n357697 147.0 737.0 ... 2376 1195 7.0 9095.239127 0.726987 0.283362 \n357698 46.0 737.0 ... 9108 502 3.0 9379.720939 0.129641 -0.258910 \n\n 17 27 31 59 \n0 -1.523953 -0.689523 -0.637881 1.465378 \n1 -0.425715 -1.246596 -1.090949 -0.852887 \n2 0.306444 1.538767 1.627457 -0.080132 \n3 0.672524 -0.132450 -0.184813 -0.080132 \n4 -0.425715 -0.410987 -0.637881 1.465378 \n... ... ... ... ... \n357694 -4.086510 -1.246596 -1.090949 2.238133 \n357695 0.306444 -0.132450 -0.184813 -0.080132 \n357696 0.672524 -0.410987 -0.637881 -0.080132 \n357697 0.672524 -0.410987 -0.637881 -0.080132 \n357698 0.306444 -0.689523 -0.637881 -0.080132 \n\n[357699 rows x 46 columns]", + "text/html": "
\n\n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
V0V1V3V4V5V6V8V9V12V13...V56V57V58V5981017273159
08315.01784.037115.0317.0105.016815296559.02470.01.085.0737.0...10892932.07428.2493340.2491100.283362-1.523953-0.689523-0.6378811.465378
18315.01272.018683.0230.0NaN340059.02820.00.042.0585.0...980110857.09693.829502-1.144696-1.343454-0.425715-1.246596-1.090949-0.852887
28315.03832.0147707.0607.0105.018240279159.02330.01.0335.01041.0...14853046.07609.2582140.129641-0.2589100.3064441.5387671.627457-0.080132
38315.02296.055547.0404.0NaN313959.02610.01.0113.0889.0...-4957114.04258.5326090.7269870.2833620.672524-0.132450-0.184813-0.080132
411021.01784.037115.0375.0105.024985232701.01490.00.0186.0737.0...16831170.09492.4848020.2491100.283362-0.425715-0.410987-0.6378811.465378
..................................................................
3576948315.01272.018683.0230.0105.012445270459.02260.00.04.0585.0...633618552.04634.276235-4.290717-2.427998-4.086510-1.246596-1.0909492.238133
3576958315.02296.055547.0404.0NaN244359.02050.00.0110.0889.0...29708548.08379.0739800.129641-0.2589100.306444-0.132450-0.184813-0.080132
3576968315.01784.037115.0375.0NaN348759.02890.00.0163.0737.0...-42579428.05359.9861930.4084030.2833620.672524-0.410987-0.637881-0.080132
3576978315.01784.037115.0375.0105.016815348759.02890.00.0147.0737.0...237611957.09095.2391270.7269870.2833620.672524-0.410987-0.637881-0.080132
3576988315.01784.037115.0317.0NaN244359.02050.00.046.0737.0...91085023.09379.7209390.129641-0.2589100.306444-0.689523-0.637881-0.080132
\n

357699 rows × 46 columns

\n
" + }, + "execution_count": 122, + "metadata": {}, + "output_type": "execute_result" } ], "source": [ - "print(flattened_images.shape)" + "X_dropped = X.drop(columns_to_drop, axis=1)\n", + "X_dropped" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-04-16T09:10:48.089387Z", - "start_time": "2024-04-16T09:10:48.083321Z" + "end_time": "2024-04-27T07:50:42.584344Z", + "start_time": "2024-04-27T07:50:42.498150Z" } }, - "id": "d996a04b28b2d1be", - "execution_count": 101 + "id": "b8383cb1d724181c", + "execution_count": 122 + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(357699, 46)\n" + ] + } + ], + "source": [ + "print(X_dropped.shape)" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-04-27T07:54:05.509713Z", + "start_time": "2024-04-27T07:54:05.505067Z" + } + }, + "id": "c64798f73ec3412f", + "execution_count": 134 + }, + { + "cell_type": "markdown", + "source": [ + "### 2. Detection and Handling of Missing Values" + ], + "metadata": {}, + "id": "adb61967" + }, + { + "cell_type": "code", + "execution_count": 135, + "id": "4bb9cdfb", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-27T07:54:06.587195Z", + "start_time": "2024-04-27T07:54:06.478662Z" + } + }, + "outputs": [], + "source": [ + "# For the columns with nan's that are not the object columns, fill them with mean\n", + "# For the object columns, fill them with the mode\n", + "X_missing = X_dropped.fillna(X_dropped.mean())\n", + "# TODO: Replace with mode for object columns" + ] }, { "cell_type": "markdown", @@ -369,16 +399,57 @@ }, { "cell_type": "code", - "execution_count": 100, - "id": "ed1c17a1", + "outputs": [], + "source": [ + "# Time to do PCA\n", + "from sklearn.decomposition import PCA\n", + "pca = PCA(n_components=30)\n", + "X_pca = pca.fit_transform(X_missing)\n", + "# plt.scatter(X_pca[:, 0], X_pca[:, 1], c=Y)\n", + "# plt.colorbar()\n", + "# plt.show()" + ], "metadata": { + "collapsed": false, "ExecuteTime": { - "end_time": "2024-04-16T09:10:46.281705Z", - "start_time": "2024-04-16T09:10:46.278864Z" + "end_time": "2024-04-27T07:59:38.839920Z", + "start_time": "2024-04-27T07:59:34.454737Z" } }, - "outputs": [], - "source": [] + "id": "878c95195942e270", + "execution_count": 151 + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.9999008890228839\n", + "2\n" + ] + } + ], + "source": [ + "res = 0\n", + "variance = pca.explained_variance_ratio_\n", + "for i in range(len(variance)):\n", + " if np.sum(variance[0:i]) >= 0.99:\n", + " res = i\n", + " break\n", + "print(np.sum(variance[:res]))\n", + "print(res)\n" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-04-27T07:59:42.918071Z", + "start_time": "2024-04-27T07:59:42.915297Z" + } + }, + "id": "724586267e51a3c5", + "execution_count": 155 }, { "cell_type": "markdown", @@ -502,11 +573,63 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 158, "id": "d8dffd7d", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-27T08:00:10.769193Z", + "start_time": "2024-04-27T08:00:10.657136Z" + } + }, "outputs": [], - "source": [] + "source": [ + "# Split the data into train and test\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import mean_squared_error\n", + "X_train, X_test, y_train, y_test = train_test_split(X_missing, Y, test_size=0.2, random_state=42)" + ] + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "MSE: 5311.417393315556\n" + ] + } + ], + "source": [ + "# Linear Regression\n", + "# # Train the model\n", + "model = LinearRegression()\n", + "model.fit(X_train, y_train)\n", + "# # Predict\n", + "y_pred = model.predict(X_test)\n", + "# # Evaluate\n", + "mse = mean_squared_error(y_test, y_pred)\n", + "print('MSE:', mse)\n" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-04-27T08:00:12.375826Z", + "start_time": "2024-04-27T08:00:11.942486Z" + } + }, + "id": "9864de4426d22d9b", + "execution_count": 159 + }, + { + "cell_type": "code", + "outputs": [], + "source": [], + "metadata": { + "collapsed": false + }, + "id": "5381f534af74f626" }, { "cell_type": "markdown", diff --git a/cs2109s/labs/final/main.ipynb b/cs2109s/labs/final/main.ipynb index 45b15d1..5bf0a76 100644 --- a/cs2109s/labs/final/main.ipynb +++ b/cs2109s/labs/final/main.ipynb @@ -314,94 +314,163 @@ }, { "cell_type": "code", - "execution_count": 224, + "execution_count": 65, "id": "a44b7aa4", "metadata": { "ExecuteTime": { - "end_time": "2024-04-27T15:21:54.599035Z", - "start_time": "2024-04-27T15:21:54.587252Z" + "end_time": "2024-04-28T07:13:16.866724Z", + "start_time": "2024-04-28T07:13:16.841471Z" } }, "outputs": [], "source": [ - "from torch.utils.data import TensorDataset, DataLoader\n", "import torch\n", "from torch import nn\n", + "class tinyCNN(nn.Module):\n", + " def __init__(self, num_classes):\n", + " super(tinyCNN, self).__init__()\n", "\n", - "class Model: \n", - " \"\"\"\n", - " This class represents an AI model.\n", - " \"\"\"\n", + " self.conv1 = nn.Conv2d(1,32,3,stride=1,padding=0)\n", + " self.conv2 = nn.Conv2d(32,32,3,stride=1,padding=0)\n", + " self.conv3 = nn.Conv2d(32,64,3,stride=1,padding=0)\n", + " self.conv4 = nn.Conv2d(64,64,3,stride=1,padding=0)\n", + " \n", + " self.relu = nn.ReLU()\n", + " self.maxpool = nn.MaxPool2d(2)\n", + " self.batchnorm1 = nn.BatchNorm2d(32)\n", + " self.batchnorm2 = nn.BatchNorm2d(64)\n", + " self.fc = nn.Linear(64, num_classes)\n", + " self.flatten = nn.Flatten()\n", + "\n", + " def forward(self, x):\n", + " x = self.conv1(x)\n", + " x = self.relu(x)\n", + " \n", + " x = self.batchnorm1(x)\n", + " x = self.maxpool(x)\n", + " \n", + " x = self.conv2(x)\n", + " x = self.relu(x)\n", + "\n", + " x = self.conv3(x)\n", + " x = self.relu(x)\n", + "\n", + " x = self.batchnorm2(x)\n", + " x = self.maxpool(x)\n", + " x = self.flatten(x)\n", + " x = self.fc(x)\n", + " return x\n", " \n", - " def __init__(self):\n", + "class CIFARCNN(nn.Module):\n", + " def __init__(self, classes):\n", + " super().__init__()\n", " \"\"\"\n", - " Constructor for Model class.\n", - " \n", - " Parameters\n", - " ----------\n", - " self : object\n", - " The instance of the object passed by Python.\n", + " classes: integer that corresponds to the number of classes for CIFAR-10\n", " \"\"\"\n", - " # TODO: Replace the following code with your own initialization code.\n", - " self.model = nn.Sequential(\n", - " nn.LSTM(256, 128, 2, batch_first=True),\n", - " nn.Linear(128, 6),\n", + " self.flatten = nn.Flatten()\n", + " self.conv = nn.Sequential(\n", + " nn.Conv2d(1, 32, 3),\n", + " nn.MaxPool2d(2),\n", + " nn.LeakyReLU(0.1),\n", + " nn.Conv2d(32, 64, (3, 3)),\n", + " nn.MaxPool2d(2),\n", + " nn.LeakyReLU(0.1),\n", + " )\n", + "\n", + " self.fc = nn.Sequential(\n", + " nn.Linear(256, 256),\n", + " nn.LeakyReLU(0.1),\n", + " nn.Linear(256, 128),\n", + " nn.LeakyReLU(0.1),\n", + " nn.Linear(128, classes)\n", " )\n", " \n", - " def process(self, X):\n", - " X_array = np.zeros((10, 16, 16))\n", - " for i, video in enumerate(X):\n", - " X_array[i, :, :] = video\n", - " X_array = X_array.reshape((10, 1, 256))\n", - " print(X_array.shape)\n", - " \n", - " return torch.from_numpy(X_array).float()\n", + " def forward(self, x):\n", + " # YOUR CODE HERE\n", + " x = self.conv(x)\n", + " x = self.flatten(x)\n", + " x = self.fc(x)\n", + " return x\n", "\n", + "# video is a numpy array of shape (L, H, W)\n", + "def clean_batch(batch):\n", + " batch = np.array(batch)\n", + " temp_x = batch.reshape(-1, 256)\n", + " np.nan_to_num(temp_x, copy=False)\n", + " col_mean = np.nanmean(temp_x, axis=0)\n", + " inds = np.where(np.isnan(temp_x))\n", + " temp_x[inds] = np.take(col_mean, inds[1])\n", + " temp_x = np.clip(temp_x, 1, 255)\n", + " batch = temp_x.reshape(-1, 1, 16,16)\n", + " return torch.tensor(batch, dtype=torch.float32)\n", + "def flatten_data(X, y):\n", + " not_nan_indices = np.argwhere(~np.isnan(np.array(y))).squeeze()\n", + " # Remove non y columns\n", + " y = [y[i] for i in not_nan_indices]\n", + " X = [X[i] for i in not_nan_indices]\n", + " flattened_x = [video[i] for video in X for i in range(video.shape[0])]\n", + " flattened_y = np.repeat(y, [video.shape[0] for video in X])\n", + " flattened_x = clean_batch(flattened_x)\n", + " return flattened_x, torch.Tensor(np.array(flattened_y, dtype=np.int64)).long()\n", + "\n", + "def train(model, criterion, optimizer, loader, epochs = 10):\n", + " for epoch in range(epochs):\n", + " for idx, (inputs, labels) in enumerate(loader):\n", + " optimizer.zero_grad()\n", + " outputs = model(inputs)\n", + " loss = criterion(outputs, labels)\n", + " loss.backward()\n", + " optimizer.step()\n", + " print(f'Epoch {epoch}, Loss: {loss.item()}')\n", + " return model\n", + "def process_data(X, y):\n", + " y = np.array(y)\n", + " X = np.array([video[:6] for video in X])\n", + " tensor_videos = torch.tensor(X, dtype=torch.float32)\n", + " # Clip values to 0 and 255\n", + " tensor_videos = np.clip(tensor_videos, 0, 255)\n", + " # Replace NaNs in each frame, with the average of the frame. This was generated with GPT\n", + " for i in range(tensor_videos.shape[0]):\n", + " for j in range(tensor_videos.shape[1]):\n", + " tensor_videos[i][j][torch.isnan(tensor_videos[i][j])] = torch.mean(tensor_videos[i][j][~torch.isnan(tensor_videos[i][j])])\n", + " \n", + " # Undersample the data for each of the 6 classes. Select max of 300 samples for each class\n", + " # Very much generated with the assitance of chatGPT with some modifications\n", + " # Get the indices of each class\n", + " indices = [np.argwhere(y == i).squeeze(1) for i in range(6)]\n", + " # Get the number of samples to take for each class\n", + " num_samples_to_take = 300\n", + " # Get the indices of the samples to take\n", + " indices_to_take = [np.random.choice(indices[i], num_samples_to_take, replace=True) for i in range(6)]\n", + " # Concatenate the indices\n", + " indices_to_take = np.concatenate(indices_to_take)\n", + " # Select the samples\n", + " tensor_videos = tensor_videos[indices_to_take]\n", + " y = y[indices_to_take]\n", + " return torch.Tensor(tensor_videos), torch.Tensor(y)\n", + "\n", + "class Model():\n", + " def __init__(self):\n", + " self.cnn = CIFARCNN(6)\n", " def fit(self, X, y):\n", - " \"\"\"\n", - " Train the model using the input data.\n", - " \n", - " Parameters\n", - " ----------\n", - " X : list of size (n_samples)\n", - " Each item in the list is a grayscale video of shape (L, H, W).\n", - " L represents the length of the video, which may vary between videos. \n", - " H and W represent the height and width, which are consistent across all videos. \n", - " y : list of size (n_samples)\n", - " Class labels for videos\n", - " \n", - " Returns\n", - " -------\n", - " self : object\n", - " Returns an instance of the trained model.\n", - " \"\"\"\n", - " X = self.process(X)\n", - " train_dataset = TensorDataset(X, torch.tensor(y))\n", - " train_loader = DataLoader(train_dataset, batch_size=32, shuffle=True)\n", - "\n", + " self.cnn.train()\n", + " X, y = process_data(X, y)\n", + " print(X.shape, y.shape)\n", + " train_dataset = torch.utils.data.TensorDataset(X, y)\n", + " train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=32, shuffle=True)\n", + " criterion = nn.CrossEntropyLoss()\n", + " optimizer = torch.optim.Adam(self.cnn.parameters(), lr=0.001)\n", + " self.model = train(self.cnn, criterion, optimizer, train_loader)\n", " return self\n", - " \n", " def predict(self, X):\n", - " \"\"\"\n", - " Use the trained model to make predictions.\n", - " \n", - " Parameters\n", - " ----------\n", - " X : list of size (n_samples)\n", - " Each item in the list is a grayscale video of shape (L, H, W).\n", - " L represents the length of the video, which may vary between videos. \n", - " H and W represent the height and width, which are consistent across all videos. \n", - " \n", - " Returns\n", - " -------\n", - " ndarray of shape (n_samples,)\n", - " Predicted target values per element in X.\n", - " \n", - " \"\"\"\n", - " result = []\n", - " for video in X:\n", - " result.append(self.model(self.process(video)).argmax(dim=1).detach().numpy())\n", - " return result" + " self.cnn.eval()\n", + " results = []\n", + " for idx, batch in enumerate(X):\n", + " batch = clean_batch(batch)\n", + " pred = self.cnn(batch)\n", + " result = torch.argmax(pred, axis=1)\n", + " results.append(torch.max(result))\n", + " return results\n" ] }, { @@ -416,12 +485,12 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 49, "id": "4f4dd489", "metadata": { "ExecuteTime": { - "end_time": "2024-04-27T13:36:15.463930Z", - "start_time": "2024-04-27T13:36:15.298430Z" + "end_time": "2024-04-28T07:10:17.037378Z", + "start_time": "2024-04-28T07:10:17.031404Z" } }, "outputs": [], @@ -436,12 +505,12 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 50, "id": "3064e0ff", "metadata": { "ExecuteTime": { - "end_time": "2024-04-27T13:36:18.535709Z", - "start_time": "2024-04-27T13:36:18.509684Z" + "end_time": "2024-04-28T07:10:18.316631Z", + "start_time": "2024-04-28T07:10:18.289375Z" } }, "outputs": [], @@ -455,12 +524,12 @@ }, { "cell_type": "code", - "execution_count": 225, + "execution_count": 67, "id": "27c9fd10", "metadata": { "ExecuteTime": { - "end_time": "2024-04-27T15:21:56.847320Z", - "start_time": "2024-04-27T15:21:56.787331Z" + "end_time": "2024-04-28T07:14:48.901477Z", + "start_time": "2024-04-28T07:14:48.343775Z" } }, "outputs": [ @@ -468,31 +537,37 @@ "name": "stdout", "output_type": "stream", "text": [ - "(10, 1, 256)\n" + "torch.Size([1800, 6, 16, 16]) torch.Size([1800])\n" ] }, { - "ename": "TypeError", - "evalue": "linear(): argument 'input' (position 1) must be Tensor, not tuple", + "ename": "RuntimeError", + "evalue": "Given groups=1, weight of size [32, 1, 3, 3], expected input[32, 6, 16, 16] to have 1 channels, but got 6 channels instead", "output_type": "error", "traceback": [ "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[0;31mTypeError\u001B[0m Traceback (most recent call last)", - "Cell \u001B[0;32mIn[225], line 13\u001B[0m\n\u001B[1;32m 11\u001B[0m model \u001B[38;5;241m=\u001B[39m Model()\n\u001B[1;32m 12\u001B[0m \u001B[38;5;66;03m# model.fit(X_train, y_train)\u001B[39;00m\n\u001B[0;32m---> 13\u001B[0m y_pred \u001B[38;5;241m=\u001B[39m \u001B[43mmodel\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mpredict\u001B[49m\u001B[43m(\u001B[49m\u001B[43mX_test\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 14\u001B[0m \u001B[38;5;28mprint\u001B[39m(y_pred[\u001B[38;5;241m0\u001B[39m])\n\u001B[1;32m 15\u001B[0m \u001B[38;5;28mprint\u001B[39m(y[\u001B[38;5;241m0\u001B[39m])\n", - "Cell \u001B[0;32mIn[224], line 77\u001B[0m, in \u001B[0;36mModel.predict\u001B[0;34m(self, X)\u001B[0m\n\u001B[1;32m 75\u001B[0m result \u001B[38;5;241m=\u001B[39m []\n\u001B[1;32m 76\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m video \u001B[38;5;129;01min\u001B[39;00m X:\n\u001B[0;32m---> 77\u001B[0m result\u001B[38;5;241m.\u001B[39mappend(\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mmodel\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mprocess\u001B[49m\u001B[43m(\u001B[49m\u001B[43mvideo\u001B[49m\u001B[43m)\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241m.\u001B[39margmax(dim\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m1\u001B[39m)\u001B[38;5;241m.\u001B[39mdetach()\u001B[38;5;241m.\u001B[39mnumpy())\n\u001B[1;32m 78\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m result\n", + "\u001B[0;31mRuntimeError\u001B[0m Traceback (most recent call last)", + "File \u001B[0;32m:12\u001B[0m\n", + "Cell \u001B[0;32mIn[65], line 137\u001B[0m, in \u001B[0;36mModel.fit\u001B[0;34m(self, X, y)\u001B[0m\n\u001B[1;32m 135\u001B[0m criterion \u001B[38;5;241m=\u001B[39m nn\u001B[38;5;241m.\u001B[39mCrossEntropyLoss()\n\u001B[1;32m 136\u001B[0m optimizer \u001B[38;5;241m=\u001B[39m torch\u001B[38;5;241m.\u001B[39moptim\u001B[38;5;241m.\u001B[39mAdam(\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mcnn\u001B[38;5;241m.\u001B[39mparameters(), lr\u001B[38;5;241m=\u001B[39m\u001B[38;5;241m0.001\u001B[39m)\n\u001B[0;32m--> 137\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mmodel \u001B[38;5;241m=\u001B[39m \u001B[43mtrain\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mcnn\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcriterion\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43moptimizer\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mtrain_loader\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 138\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\n", + "Cell \u001B[0;32mIn[65], line 94\u001B[0m, in \u001B[0;36mtrain\u001B[0;34m(model, criterion, optimizer, loader, epochs)\u001B[0m\n\u001B[1;32m 92\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m idx, (inputs, labels) \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28menumerate\u001B[39m(loader):\n\u001B[1;32m 93\u001B[0m optimizer\u001B[38;5;241m.\u001B[39mzero_grad()\n\u001B[0;32m---> 94\u001B[0m outputs \u001B[38;5;241m=\u001B[39m \u001B[43mmodel\u001B[49m\u001B[43m(\u001B[49m\u001B[43minputs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 95\u001B[0m loss \u001B[38;5;241m=\u001B[39m criterion(outputs, labels)\n\u001B[1;32m 96\u001B[0m loss\u001B[38;5;241m.\u001B[39mbackward()\n", + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/module.py:1511\u001B[0m, in \u001B[0;36mModule._wrapped_call_impl\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 1509\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_compiled_call_impl(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;66;03m# type: ignore[misc]\u001B[39;00m\n\u001B[1;32m 1510\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m-> 1511\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_impl\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/module.py:1520\u001B[0m, in \u001B[0;36mModule._call_impl\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 1515\u001B[0m \u001B[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001B[39;00m\n\u001B[1;32m 1516\u001B[0m \u001B[38;5;66;03m# this function, and just call forward.\u001B[39;00m\n\u001B[1;32m 1517\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m (\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_pre_hooks\n\u001B[1;32m 1518\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_backward_hooks\n\u001B[1;32m 1519\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_forward_pre_hooks):\n\u001B[0;32m-> 1520\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mforward_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1522\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m 1523\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n", + "Cell \u001B[0;32mIn[65], line 64\u001B[0m, in \u001B[0;36mCIFARCNN.forward\u001B[0;34m(self, x)\u001B[0m\n\u001B[1;32m 62\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mforward\u001B[39m(\u001B[38;5;28mself\u001B[39m, x):\n\u001B[1;32m 63\u001B[0m \u001B[38;5;66;03m# YOUR CODE HERE\u001B[39;00m\n\u001B[0;32m---> 64\u001B[0m x \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconv\u001B[49m\u001B[43m(\u001B[49m\u001B[43mx\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 65\u001B[0m x \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mflatten(x)\n\u001B[1;32m 66\u001B[0m x \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mfc(x)\n", "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/module.py:1511\u001B[0m, in \u001B[0;36mModule._wrapped_call_impl\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 1509\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_compiled_call_impl(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;66;03m# type: ignore[misc]\u001B[39;00m\n\u001B[1;32m 1510\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m-> 1511\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_impl\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/module.py:1520\u001B[0m, in \u001B[0;36mModule._call_impl\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 1515\u001B[0m \u001B[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001B[39;00m\n\u001B[1;32m 1516\u001B[0m \u001B[38;5;66;03m# this function, and just call forward.\u001B[39;00m\n\u001B[1;32m 1517\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m (\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_pre_hooks\n\u001B[1;32m 1518\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_backward_hooks\n\u001B[1;32m 1519\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_forward_pre_hooks):\n\u001B[0;32m-> 1520\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mforward_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1522\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m 1523\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n", "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/container.py:217\u001B[0m, in \u001B[0;36mSequential.forward\u001B[0;34m(self, input)\u001B[0m\n\u001B[1;32m 215\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mforward\u001B[39m(\u001B[38;5;28mself\u001B[39m, \u001B[38;5;28minput\u001B[39m):\n\u001B[1;32m 216\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m module \u001B[38;5;129;01min\u001B[39;00m \u001B[38;5;28mself\u001B[39m:\n\u001B[0;32m--> 217\u001B[0m \u001B[38;5;28minput\u001B[39m \u001B[38;5;241m=\u001B[39m \u001B[43mmodule\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43minput\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[1;32m 218\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28minput\u001B[39m\n", "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/module.py:1511\u001B[0m, in \u001B[0;36mModule._wrapped_call_impl\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 1509\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_compiled_call_impl(\u001B[38;5;241m*\u001B[39margs, \u001B[38;5;241m*\u001B[39m\u001B[38;5;241m*\u001B[39mkwargs) \u001B[38;5;66;03m# type: ignore[misc]\u001B[39;00m\n\u001B[1;32m 1510\u001B[0m \u001B[38;5;28;01melse\u001B[39;00m:\n\u001B[0;32m-> 1511\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_call_impl\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n", "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/module.py:1520\u001B[0m, in \u001B[0;36mModule._call_impl\u001B[0;34m(self, *args, **kwargs)\u001B[0m\n\u001B[1;32m 1515\u001B[0m \u001B[38;5;66;03m# If we don't have any hooks, we want to skip the rest of the logic in\u001B[39;00m\n\u001B[1;32m 1516\u001B[0m \u001B[38;5;66;03m# this function, and just call forward.\u001B[39;00m\n\u001B[1;32m 1517\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m (\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_forward_pre_hooks\n\u001B[1;32m 1518\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_backward_pre_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_backward_hooks\n\u001B[1;32m 1519\u001B[0m \u001B[38;5;129;01mor\u001B[39;00m _global_forward_hooks \u001B[38;5;129;01mor\u001B[39;00m _global_forward_pre_hooks):\n\u001B[0;32m-> 1520\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mforward_call\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43margs\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[38;5;241;43m*\u001B[39;49m\u001B[43mkwargs\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 1522\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m 1523\u001B[0m result \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n", - "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/linear.py:116\u001B[0m, in \u001B[0;36mLinear.forward\u001B[0;34m(self, input)\u001B[0m\n\u001B[1;32m 115\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mforward\u001B[39m(\u001B[38;5;28mself\u001B[39m, \u001B[38;5;28minput\u001B[39m: Tensor) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m Tensor:\n\u001B[0;32m--> 116\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mF\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mlinear\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43minput\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mweight\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbias\u001B[49m\u001B[43m)\u001B[49m\n", - "\u001B[0;31mTypeError\u001B[0m: linear(): argument 'input' (position 1) must be Tensor, not tuple" + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/conv.py:460\u001B[0m, in \u001B[0;36mConv2d.forward\u001B[0;34m(self, input)\u001B[0m\n\u001B[1;32m 459\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mforward\u001B[39m(\u001B[38;5;28mself\u001B[39m, \u001B[38;5;28minput\u001B[39m: Tensor) \u001B[38;5;241m-\u001B[39m\u001B[38;5;241m>\u001B[39m Tensor:\n\u001B[0;32m--> 460\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_conv_forward\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43minput\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mweight\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbias\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m/nix/store/4mv9lb8b1vjx88y2i7px1r2s8p3xlr7d-python3-3.11.9-env/lib/python3.11/site-packages/torch/nn/modules/conv.py:456\u001B[0m, in \u001B[0;36mConv2d._conv_forward\u001B[0;34m(self, input, weight, bias)\u001B[0m\n\u001B[1;32m 452\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mpadding_mode \u001B[38;5;241m!=\u001B[39m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mzeros\u001B[39m\u001B[38;5;124m'\u001B[39m:\n\u001B[1;32m 453\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m F\u001B[38;5;241m.\u001B[39mconv2d(F\u001B[38;5;241m.\u001B[39mpad(\u001B[38;5;28minput\u001B[39m, \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_reversed_padding_repeated_twice, mode\u001B[38;5;241m=\u001B[39m\u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mpadding_mode),\n\u001B[1;32m 454\u001B[0m weight, bias, \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mstride,\n\u001B[1;32m 455\u001B[0m _pair(\u001B[38;5;241m0\u001B[39m), \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mdilation, \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mgroups)\n\u001B[0;32m--> 456\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mF\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mconv2d\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43minput\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mweight\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mbias\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mstride\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 457\u001B[0m \u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mpadding\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdilation\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mgroups\u001B[49m\u001B[43m)\u001B[49m\n", + "\u001B[0;31mRuntimeError\u001B[0m: Given groups=1, weight of size [32, 1, 3, 3], expected input[32, 6, 16, 16] to have 1 channels, but got 6 channels instead" ] } ], "source": [ + "%%time\n", "# Split train and test\n", - "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=2)\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)\n", "\n", "# Filter test data that contains no labels\n", "# In Coursemology, the test data is guaranteed to have labels\n", @@ -502,14 +577,12 @@ "\n", "# Train and predict\n", "model = Model()\n", - "# model.fit(X_train, y_train)\n", + "model.fit(X_train, y_train)\n", "y_pred = model.predict(X_test)\n", - "print(y_pred[0])\n", - "print(y[0])\n", "\n", "# Evaluate model predition\n", "# Learn more: https://scikit-learn.org/stable/modules/classes.html#module-sklearn.metrics\n", - "# print(\"F1 Score (macro): {0:.2f}\".format(f1_score(y_test, y_pred, average='macro'))) # You may encounter errors, you are expected to figure out what's the issue." + "print(\"F1 Score (macro): {0:.2f}\".format(f1_score(y_test, y_pred, average='macro'))) # You may encounter errors, you are expected to figure out what's the issue." ] }, { diff --git a/cs2109s/labs/final/scratchpad.ipynb b/cs2109s/labs/final/scratchpad.ipynb index dab5ba2..6ccaaf5 100644 --- a/cs2109s/labs/final/scratchpad.ipynb +++ b/cs2109s/labs/final/scratchpad.ipynb @@ -51,11 +51,7 @@ "**[TODO]**\n", "\n", "##### 1. Descriptive Analysis\n", - "First step: Look at the target values. The target values are floats and NAs, which is interesting. NAs in the target data is a bit suspicious. However, despite being floats, the target values are actually ordinal. I'll convert them to ordinal values by just `Y.fillna(-1).astype(int).`. Now, I can do value counts and see that there are only 7 distinct values, including NaN. I will regard this as a classification problem with 7 classes.\n", - "\n", - "Looking at the `X`, I realise each entry in the list is an `n` by 16 by 16 matrix. 16 by 16 matrix, my first idea is to look at them like images. Plotting the images showed no relevant info. `6 <= n <= 10`.\n", - "\n", - "I just realised this is a video dataset. I'll pad all the frames to be of size 10. so that i'll have a 2500 x 10 x 16 x 16 video datset. \n", + "**[TODO]**\n", "\n", "##### 2. Detection and Handling of Missing Values\n", "**[TODO]**\n", @@ -123,21 +119,19 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 42, "id": "cded1ed6", "metadata": { "ExecuteTime": { - "end_time": "2024-04-27T16:15:03.602644Z", - "start_time": "2024-04-27T16:15:03.179277Z" + "end_time": "2024-04-28T06:46:52.407375Z", + "start_time": "2024-04-28T06:46:52.405317Z" } }, "outputs": [], "source": [ - "import pandas\n", "import pandas as pd\n", "import os\n", - "import numpy as np\n", - "import matplotlib.pyplot as plt" + "import numpy as np" ] }, { @@ -162,12 +156,12 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 43, "id": "6297e25a", "metadata": { "ExecuteTime": { - "end_time": "2024-04-27T16:15:06.411332Z", - "start_time": "2024-04-27T16:15:06.392391Z" + "end_time": "2024-04-28T06:46:52.453152Z", + "start_time": "2024-04-28T06:46:52.428539Z" } }, "outputs": [ @@ -186,7 +180,8 @@ " data = np.load(f, allow_pickle=True).item()\n", " X = data['data']\n", " y = data['label']\n", - " \n", + "\n", + "\n", "print('Number of data sample:', len(X))\n", "print('Shape of the first data sample:', X[0].shape)\n", "print('Shape of the third data sample:', X[2].shape)" @@ -200,49 +195,6 @@ "## Data Exploration & Preparation" ] }, - { - "cell_type": "code", - "outputs": [], - "source": [ - "from sklearn.preprocessing import OrdinalEncoder\n", - "# Some Helper Functions\n", - "def show_images(images, n_row=5, n_col=5, figsize=[12,12]):\n", - " _, axs = plt.subplots(n_row, n_col, figsize=figsize)\n", - " axs = axs.flatten()\n", - " for img, ax in zip(images, axs):\n", - " ax.imshow(img, cmap='gray')\n", - " plt.show()\n", - "def nan_columns(X, threshold=0.5):\n", - " count = X.shape[0] * threshold\n", - " nan_columns = X.isna().sum()\n", - " return nan_columns[nan_columns >= count].index\n", - "def zero_columns(X, threshold=0.5):\n", - " count = X.shape[0] * threshold\n", - " zero_cols = (X == 0).sum()\n", - " return zero_cols[zero_cols >= count].index\n", - "\n", - "def object_columns(X):\n", - " return X.dtypes[X.dtypes == 'object'].index\n", - "\n", - "def convert_to_ordinal(X, columns):\n", - " encoder = OrdinalEncoder()\n", - " return encoder.fit_transform(X[columns])\n", - "\n", - "def correlated_columns(X, threshold=0.99):\n", - " corr = X.corr()\n", - " upper = corr.where(np.triu(np.ones(corr.shape), k=1).astype(bool))\n", - " return [column for column in upper.columns if any(upper[column] > threshold)]" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2024-04-27T16:15:12.963319Z", - "start_time": "2024-04-27T16:15:12.025487Z" - } - }, - "id": "f68b8b1c21eae6d6", - "execution_count": 3 - }, { "cell_type": "markdown", "id": "2f6a464c", @@ -253,79 +205,52 @@ }, { "cell_type": "code", + "execution_count": 44, + "id": "3b1f62dd", + "metadata": { + "ExecuteTime": { + "end_time": "2024-04-28T06:46:52.472306Z", + "start_time": "2024-04-28T06:46:52.454360Z" + } + }, "outputs": [ { - "name": "stdout", - "output_type": "stream", - "text": [ - "2250\n" + "ename": "ValueError", + "evalue": "setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2250,) + inhomogeneous part.", + "output_type": "error", + "traceback": [ + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mValueError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[44], line 10\u001B[0m\n\u001B[1;32m 8\u001B[0m X6 \u001B[38;5;241m=\u001B[39m np\u001B[38;5;241m.\u001B[39marray([video[:\u001B[38;5;241m6\u001B[39m] \u001B[38;5;28;01mfor\u001B[39;00m video \u001B[38;5;129;01min\u001B[39;00m X])\n\u001B[1;32m 9\u001B[0m \u001B[38;5;66;03m# Now that they are consistent, we can convert them to a numpy array\u001B[39;00m\n\u001B[0;32m---> 10\u001B[0m X6 \u001B[38;5;241m=\u001B[39m \u001B[43mnp\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43marray\u001B[49m\u001B[43m(\u001B[49m\u001B[43mX\u001B[49m\u001B[43m)\u001B[49m\n", + "\u001B[0;31mValueError\u001B[0m: setting an array element with a sequence. The requested array has an inhomogeneous shape after 1 dimensions. The detected shape was (2250,) + inhomogeneous part." ] } ], "source": [ + "# Remove nans from the input. This needs to be done in the model for training data as well\n", "not_nan_indices = np.argwhere(~np.isnan(np.array(y))).squeeze()\n", - "print(len(not_nan_indices))\n", - "y_filtered = [y[i] for i in not_nan_indices]\n", - "x_filtered = [X[i] for i in not_nan_indices]\n", - "X = x_filtered\n", - "y = y_filtered\n", - "# show_images(X[0], 2, 5, [16, 16])\n", - "Y = pd.DataFrame(y)\n", - "# show_images(X[0], 1, 10, [10, 1])\n", - "# show_images(X[1], 1, 10, [10, 1])\n", - "# show_images(X[2], 1, 10, [10, 1])\n", - "# show_images(X[3], 1, 10, [10, 1])\n", - "# Y[:10].T\n", - "# print(type(X[0]))" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2024-04-27T16:15:14.719386Z", - "start_time": "2024-04-27T16:15:14.712849Z" - } - }, - "id": "3b1f62dd", - "execution_count": 4 + "y = [y[i] for i in not_nan_indices]\n", + "X = [X[i] for i in not_nan_indices]\n", + "y = np.array(y).astype(int)\n", + "\n", + "# Since each video varies in length, we will take the min length, 6, for each video\n", + "X6 = np.array([video[:6] for video in X])\n", + "# Now that they are consistent, we can convert them to a numpy array\n", + "X6 = np.array(X)\n" + ] }, { "cell_type": "code", - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(2250, 10, 256)\n" - ] - } - ], + "outputs": [], "source": [ - "# We can now try to pad the videos to be of size 10\n", - "\n", - "def process_video(video):\n", - " L = video.shape[0]\n", - " if L < 10:\n", - " return np.concatenate([video, np.zeros((10 - L, 16, 16))]).reshape(10, -1)\n", - " return video.reshape(10, -1).astype(np.float32)\n", - "\n", - "L_max = 10\n", - "X_array = np.zeros((len(X), 10, 256))\n", - "for i, video in enumerate(X):\n", - " X_array[i] = process_video(video)\n", - "np.expand_dims(X_array, axis=2).shape\n", - "print(X_array.shape)\n", - "X_array = np.reshape(X_array, (X_array.shape[0], X_array.shape[1], 256)).shape\n", - "# flattened_data = print(flattened_data)" + "pd.DataFrame(y).value_counts()\n", + "# From this, we know that we need to undersample or upsample the data. We will pick understampling as the data is quite large, and understampling will reduce the training time." ], "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2024-04-27T16:15:17.056545Z", - "start_time": "2024-04-27T16:15:17.014489Z" - } + "collapsed": false }, - "id": "558f2d74562bc7c8", - "execution_count": 5 + "id": "dd66bb1efa4e602c", + "execution_count": null }, { "cell_type": "markdown", @@ -337,16 +262,13 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "4bb9cdfb", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-27T16:12:36.843437Z", - "start_time": "2024-04-27T16:12:36.842009Z" - } - }, + "metadata": {}, "outputs": [], - "source": [] + "source": [ + "np.isnan(X6).sum() # We know that there is quite a few NaNs in the data. However, I will not be figuring out which column / nan has this value. Instead we can just take the average of each image, adn use that as the input to the nan" + ] }, { "cell_type": "markdown", @@ -358,16 +280,16 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "ed1c17a1", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-27T16:12:36.845318Z", - "start_time": "2024-04-27T16:12:36.843930Z" - } - }, + "metadata": {}, "outputs": [], - "source": [] + "source": [ + "# Check if there are outliers\n", + "# We can check if there are outliers by checking the max and min values of each video\n", + "np.max(X6, axis=3)\n", + "# From this we can see that there are values whic exceed 255, and thus, we can clip that." + ] }, { "cell_type": "markdown", @@ -379,16 +301,29 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 83, "id": "ad3ab20e", "metadata": { "ExecuteTime": { - "end_time": "2024-04-27T16:12:36.847266Z", - "start_time": "2024-04-27T16:12:36.845985Z" + "end_time": "2024-04-28T06:59:16.949196Z", + "start_time": "2024-04-28T06:59:16.943398Z" } }, - "outputs": [], - "source": [] + "outputs": [ + { + "data": { + "text/plain": "0\n0 300\n1 300\n2 300\n3 300\n4 300\n5 300\nName: count, dtype: int64" + }, + "execution_count": 83, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# Handling Undersampling\n", + "pd.DataFrame(y).value_counts()\n", + "# There is a class imbalance, and we will need to undersample the data" + ] }, { "cell_type": "markdown", @@ -400,12 +335,12 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 44, "id": "29ddbbcf", "metadata": { "ExecuteTime": { - "end_time": "2024-04-27T16:12:36.849483Z", - "start_time": "2024-04-27T16:12:36.848012Z" + "end_time": "2024-04-28T06:46:52.478781Z", + "start_time": "2024-04-28T06:46:52.477156Z" } }, "outputs": [], @@ -421,12 +356,12 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 44, "id": "93f82e42", "metadata": { "ExecuteTime": { - "end_time": "2024-04-27T16:12:36.852862Z", - "start_time": "2024-04-27T16:12:36.851617Z" + "end_time": "2024-04-28T06:46:52.483551Z", + "start_time": "2024-04-28T06:46:52.482068Z" } }, "outputs": [], @@ -450,16 +385,76 @@ }, { "cell_type": "code", - "execution_count": 5, - "id": "19174365", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "torch.Size([1800, 6, 16, 16])\n", + "(1800,)\n", + "\n" + ] + } + ], + "source": [ + "import torch\n", + "\n", + "# Reduce the data to 6 frames\n", + "X = np.array([video[:6] for video in X])\n", + "tensor_videos = torch.tensor(X, dtype=torch.float32)\n", + "# Clip values to 0 and 255\n", + "tensor_videos = np.clip(tensor_videos, 0, 255)\n", + "# Replace NaNs in each frame, with the average of the frame. This was generated with GPT\n", + "for i in range(tensor_videos.shape[0]):\n", + " for j in range(tensor_videos.shape[1]):\n", + " tensor_videos[i][j][torch.isnan(tensor_videos[i][j])] = torch.mean(tensor_videos[i][j][~torch.isnan(tensor_videos[i][j])])\n", + " \n", + "# Undersample the data for each of the 6 classes. Select max of 300 samples for each class\n", + "# Very much generated with the assitance of chatGPT with some modifications\n", + "# Get the indices of each class\n", + "indices = [np.argwhere(y == i).squeeze(1) for i in range(6)]\n", + "# Get the number of samples to take for each class\n", + "num_samples_to_take = 300\n", + "# Get the indices of the samples to take\n", + "indices_to_take = [np.random.choice(indices[i], num_samples_to_take, replace=True) for i in range(6)]\n", + "# Concatenate the indices\n", + "indices_to_take = np.concatenate(indices_to_take)\n", + "# Select the samples\n", + "tensor_videos = tensor_videos[indices_to_take]\n", + "y = y[indices_to_take]\n" + ], "metadata": { + "collapsed": false + }, + "id": "19174365", + "execution_count": 82 + }, + { + "cell_type": "code", + "outputs": [ + { + "data": { + "text/plain": "torch.Size([1800, 1, 6, 16, 16])" + }, + "execution_count": 85, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "# This is the extra channel dimention to work with the conv3d\n", + "tensor_videos = tensor_videos.unsqueeze(1)\n", + "tensor_videos.shape" + ], + "metadata": { + "collapsed": false, "ExecuteTime": { - "end_time": "2024-04-27T16:12:36.854714Z", - "start_time": "2024-04-27T16:12:36.853430Z" + "end_time": "2024-04-28T07:01:44.496557Z", + "start_time": "2024-04-28T07:01:44.492973Z" } }, - "outputs": [], - "source": [] + "id": "8b6bcf332c355e9d", + "execution_count": 85 }, { "cell_type": "markdown", @@ -471,14 +466,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "a85808bf", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-27T16:12:36.856476Z", - "start_time": "2024-04-27T16:12:36.855157Z" - } - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -492,14 +482,9 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": null, "id": "dbcde626", - "metadata": { - "ExecuteTime": { - "end_time": "2024-04-27T16:12:36.858522Z", - "start_time": "2024-04-27T16:12:36.857080Z" - } - }, + "metadata": {}, "outputs": [], "source": [] }, @@ -521,18 +506,95 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 230, "id": "d8dffd7d", "metadata": { "ExecuteTime": { - "end_time": "2024-04-27T16:15:21.497276Z", - "start_time": "2024-04-27T16:15:20.501754Z" + "end_time": "2024-04-28T07:57:09.790124Z", + "start_time": "2024-04-28T07:57:09.780591Z" } }, "outputs": [], "source": [ - "import torch\n", - "from torch import nn" + "from torch import nn\n", + "class CNN3D(nn.Module):\n", + " def __init__(self):\n", + " super(CNN3D, self).__init__()\n", + " self.conv1 = nn.Conv3d(1, 12, 2, 1,2)\n", + " self.mp = nn.AvgPool3d(2)\n", + " self.relu = nn.LeakyReLU()\n", + " self.fc1 = nn.Linear(3888, 6)\n", + " self.fc2 = nn.Linear(128, 6)\n", + " self.flatten = nn.Flatten()\n", + " def forward(self, x):\n", + " x = self.conv1(x)\n", + " x = self.mp(x)\n", + " x = self.relu(x)\n", + " \n", + " # print(x.shape)\n", + " \n", + " x = x.view(-1, 3888)\n", + " x = self.fc1(x)\n", + " # x = self.fc2(x)\n", + " return x\n", + " \n", + "def train(model, criterion, optimizer, loader, epochs = 10):\n", + " for epoch in range(epochs):\n", + " for idx, (inputs, labels) in enumerate(loader):\n", + " optimizer.zero_grad()\n", + " outputs = model(inputs)\n", + " loss = criterion(outputs, labels)\n", + " loss.backward()\n", + " optimizer.step()\n", + " print(f'Epoch {epoch}, Loss: {loss.item()}')\n", + " return model\n", + "def process_data(X, y):\n", + " y = np.array(y)\n", + " X = np.array([video[:6] for video in X])\n", + " tensor_videos = torch.tensor(X, dtype=torch.float32)\n", + " # Clip values to 0 and 255\n", + " tensor_videos = np.clip(tensor_videos, 0, 255)\n", + " # Replace NaNs in each frame, with the average of the frame. This was generated with GPT\n", + " for i in range(tensor_videos.shape[0]):\n", + " for j in range(tensor_videos.shape[1]):\n", + " tensor_videos[i][j][torch.isnan(tensor_videos[i][j])] = torch.mean(tensor_videos[i][j][~torch.isnan(tensor_videos[i][j])])\n", + " # Undersample the data for each of the 6 classes. Select max of 300 samples for each class\n", + " # Very much generated with the assitance of chatGPT with some modifications\n", + " # Get the indices of each class\n", + " indices = [np.argwhere(y == i).squeeze(1) for i in range(6)]\n", + " # Get the number of samples to take for each class\n", + " num_samples_to_take = 300\n", + " # Get the indices of the samples to take\n", + " indices_to_take = [np.random.choice(indices[i], num_samples_to_take, replace=True) for i in range(6)]\n", + " # Concatenate the indices\n", + " indices_to_take = np.concatenate(indices_to_take)\n", + " # Select the samples\n", + " tensor_videos = tensor_videos[indices_to_take].unsqueeze(1)\n", + " y = y[indices_to_take]\n", + " return torch.Tensor(tensor_videos), torch.Tensor(y).long()\n", + "class Model():\n", + " def __init__(self):\n", + " self.model = CNN3D()\n", + " self.criterion = nn.CrossEntropyLoss()\n", + " self.optimizer = torch.optim.Adam(self.model.parameters(), lr=0.001)\n", + " def fit(self, X, y):\n", + " X, y = process_data(X, y)\n", + " train_dataset = torch.utils.data.TensorDataset(X, y)\n", + " train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=32, shuffle=True)\n", + " train(self.model, self.criterion, self.optimizer, train_loader)\n", + " def predict(self, X):\n", + " self.model.eval()\n", + "\n", + " X = np.array([video[:6] for video in X])\n", + " tensor_videos = torch.tensor(X, dtype=torch.float32)\n", + " # Clip values to 0 and 255\n", + " tensor_videos = np.clip(tensor_videos, 0, 255)\n", + " # Replace NaNs in each frame, with the average of the frame. This was generated with GPT\n", + " for i in range(tensor_videos.shape[0]):\n", + " for j in range(tensor_videos.shape[1]):\n", + " tensor_videos[i][j][torch.isnan(tensor_videos[i][j])] = torch.mean(tensor_videos[i][j][~torch.isnan(tensor_videos[i][j])])\n", + " X = torch.Tensor(tensor_videos.unsqueeze(1))\n", + " return np.argmax(self.model(X).detach().numpy(), axis=1)\n" ] }, { @@ -545,106 +607,32 @@ }, { "cell_type": "code", - "execution_count": 19, + "execution_count": 217, "id": "9245ab47", "metadata": { "ExecuteTime": { - "end_time": "2024-04-27T16:19:38.194596Z", - "start_time": "2024-04-27T16:19:37.776094Z" + "end_time": "2024-04-28T07:55:53.563103Z", + "start_time": "2024-04-28T07:55:53.544134Z" } }, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", - "# Split train and test\n", + "\n", + "with open('data.npy', 'rb') as f:\n", + " data = np.load(f, allow_pickle=True).item()\n", + " X = data['data']\n", + " y = data['label']\n", + "\n", + "\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)\n", - "X_train = [process_video(video) for video in X_train]\n", - "X_test = [process_video(video) for video in X_test]\n", "\n", - "y_train = np.array(y_train).astype(np.int64)\n", - "\n", - "X_tensor = torch.tensor(X_train, dtype=torch.float32)\n", - "y_tensor = torch.tensor(y_train, dtype=torch.long)\n", - "\n", - "train_dataset = torch.utils.data.TensorDataset(X_tensor, y_tensor)\n", - "train_loader = torch.utils.data.DataLoader(train_dataset, batch_size=32, shuffle=True)" + "not_nan_indices = np.argwhere(~np.isnan(np.array(y_test))).squeeze()\n", + "y_test = [y_test[i] for i in not_nan_indices]\n", + "X_test = [X_test[i] for i in not_nan_indices]\n", + "\n" ] }, - { - "cell_type": "code", - "outputs": [], - "source": [ - "class Model(nn.Module):\n", - " def __init__(self):\n", - " super(Model, self).__init__()\n", - " self.input_size = 256\n", - " self.hidden_layers = 64\n", - " self.num_layers = 1\n", - " self.num_classes = 6\n", - " \n", - " self.lstm = nn.LSTM(self.input_size, self.hidden_layers, self.num_layers, batch_first=True)\n", - " self.fc = nn.Linear(self.hidden_layers, self.num_classes)\n", - " def forward(self, x):\n", - " h0 = torch.zeros(self.num_layers, x.size(0), self.hidden_layers).to(x.device)\n", - " c0 = torch.zeros(self.num_layers, x.size(0), self.hidden_layers).to(x.device)\n", - "\n", - " # Forward propagate LSTM\n", - " out, _ = self.lstm(x, (h0, c0))\n", - " \n", - " out = self.fc(out[:, -1, :])\n", - " return out " - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2024-04-27T16:20:46.738811Z", - "start_time": "2024-04-27T16:20:46.734583Z" - } - }, - "id": "7396b295037aa70f", - "execution_count": 25 - }, - { - "cell_type": "code", - "outputs": [], - "source": [], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2024-04-27T16:12:37.998501Z", - "start_time": "2024-04-27T16:12:37.997472Z" - } - }, - "id": "9057629fbaaa8571", - "execution_count": 8 - }, - { - "cell_type": "code", - "outputs": [], - "source": [ - "def train_model(model, loss_fn, optimizer, train_loader, num_epochs=10):\n", - " model.train()\n", - " for epoch in range(num_epochs):\n", - " running_loss = 0.0\n", - " for inputs, labels in train_loader:\n", - " optimizer.zero_grad()\n", - " outputs = model(inputs)\n", - " loss = loss_fn(outputs, labels)\n", - " loss.backward()\n", - " optimizer.step()\n", - " running_loss += loss.item()\n", - " print(f\"Epoch {epoch + 1}, Loss: {running_loss / len(train_loader)}\")\n" - ], - "metadata": { - "collapsed": false, - "ExecuteTime": { - "end_time": "2024-04-27T16:19:57.048696Z", - "start_time": "2024-04-27T16:19:57.045181Z" - } - }, - "id": "c3901cf56e12eade", - "execution_count": 21 - }, { "cell_type": "code", "outputs": [ @@ -652,34 +640,62 @@ "name": "stdout", "output_type": "stream", "text": [ - "Epoch 1, Loss: nan\n", - "Epoch 2, Loss: nan\n", - "Epoch 3, Loss: nan\n", - "Epoch 4, Loss: nan\n", - "Epoch 5, Loss: nan\n", - "Epoch 6, Loss: nan\n", - "Epoch 7, Loss: nan\n", - "Epoch 8, Loss: nan\n", - "Epoch 9, Loss: nan\n", - "Epoch 10, Loss: nan\n" + "Epoch 0, Loss: 4.225716590881348\n", + "Epoch 1, Loss: 0.9198675155639648\n", + "Epoch 2, Loss: 1.7365752458572388\n", + "Epoch 3, Loss: 0.4570190906524658\n", + "Epoch 4, Loss: 0.11014104634523392\n", + "Epoch 5, Loss: 0.24420055747032166\n", + "Epoch 6, Loss: 0.03079795092344284\n", + "Epoch 7, Loss: 0.07790327817201614\n", + "Epoch 8, Loss: 0.07603466510772705\n", + "Epoch 9, Loss: 0.04154537618160248\n", + "F1 Score (macro): 0.51\n" ] } ], "source": [ "model = Model()\n", - "lossFn = nn.CrossEntropyLoss()\n", - "optimizer = torch.optim.Adam(model.parameters(), lr=0.001)\n", - "train_model(model, lossFn, optimizer, train_loader, num_epochs=10)" + "model.fit(X_train, y_train)\n", + "\n", + "from sklearn.metrics import f1_score\n", + "\n", + "y_pred = model.predict(X_test)\n", + "print(\"F1 Score (macro): {0:.2f}\".format(f1_score(y_test, y_pred, average='macro'))) # You may encounter errors, you are expected to figure out what's the issue.\n" ], "metadata": { "collapsed": false, "ExecuteTime": { - "end_time": "2024-04-27T16:20:49.798810Z", - "start_time": "2024-04-27T16:20:48.477326Z" + "end_time": "2024-04-28T07:57:38.644155Z", + "start_time": "2024-04-28T07:57:35.958882Z" } }, - "id": "dbb00fef60449a02", - "execution_count": 26 + "id": "abb2d957f4a15bd2", + "execution_count": 235 + }, + { + "cell_type": "code", + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "F1 Score (macro): 0.60\n" + ] + } + ], + "source": [ + "\n" + ], + "metadata": { + "collapsed": false, + "ExecuteTime": { + "end_time": "2024-04-28T07:57:16.355215Z", + "start_time": "2024-04-28T07:57:16.281540Z" + } + }, + "id": "37ff28a8da9dba6c", + "execution_count": 232 }, { "cell_type": "markdown", diff --git a/cs2109s/labs/flake.lock b/cs2109s/labs/flake.lock index 4f62e1e..ae7ac0c 100644 --- a/cs2109s/labs/flake.lock +++ b/cs2109s/labs/flake.lock @@ -20,16 +20,16 @@ }, "nixpkgs": { "locked": { - "lastModified": 1712310679, - "narHash": "sha256-XgC/a/giEeNkhme/AV1ToipoZ/IVm1MV2ntiK4Tm+pw=", + "lastModified": 1713714899, + "narHash": "sha256-+z/XjO3QJs5rLE5UOf015gdVauVRQd2vZtsFkaXBq2Y=", "owner": "nixos", "repo": "nixpkgs", - "rev": "72da83d9515b43550436891f538ff41d68eecc7f", + "rev": "6143fc5eeb9c4f00163267708e26191d1e918932", "type": "github" }, "original": { "owner": "nixos", - "ref": "nixos-23.11", + "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } diff --git a/cs2109s/labs/flake.nix b/cs2109s/labs/flake.nix index 4c8e816..9c90d26 100644 --- a/cs2109s/labs/flake.nix +++ b/cs2109s/labs/flake.nix @@ -1,5 +1,5 @@ { - description = "A very basic flake"; + description = "Flake to setup CS2109S"; inputs = { nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; @@ -16,23 +16,26 @@ overlays = [(final: prev: { pythonPackagesExtensions = [(py-final: py-prev: { torch = py-final.torch-bin; - torchvision = py-final.torchvision-bin; - torchaudio = py-final.torchaudio-bin; })]; })]; devShell = pkgs.mkShell { buildInputs = with pkgs; [ (python3.withPackages(ps: with ps; - [ + let myoptuna = optuna.override { + torch = python3.pkgs.torch-bin; + torchaudio = python3.pkgs.torchaudio-bin; + torchvision = python3.pkgs.torchvision-bin; + }; + in [ ipython jupyter numpy pandas matplotlib - torch + torch-bin scikit-learn timeout-decorator - torchvision + torchvision-bin seaborn ])) ]; diff --git a/cs2109s/labs/ps5/ps5.ipynb b/cs2109s/labs/ps5/ps5.ipynb index c5cb278..f5eb85c 100644 --- a/cs2109s/labs/ps5/ps5.ipynb +++ b/cs2109s/labs/ps5/ps5.ipynb @@ -30,7 +30,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "## Important\n", "\n", @@ -43,7 +45,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "## Introduction\n", "\n", @@ -54,7 +58,9 @@ }, { "cell_type": "markdown", - "metadata": {}, + "metadata": { + "jp-MarkdownHeadingCollapsed": true + }, "source": [ "## Getting Started\n", "\n", @@ -2382,7 +2388,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.9" + "version": "3.11.8" }, "vscode": { "interpreter": { @@ -2391,5 +2397,5 @@ } }, "nbformat": 4, - "nbformat_minor": 2 + "nbformat_minor": 4 } diff --git a/cs2109s/labs/ps7/ps7.ipynb b/cs2109s/labs/ps7/ps7.ipynb index 56ac081..9a8541a 100644 --- a/cs2109s/labs/ps7/ps7.ipynb +++ b/cs2109s/labs/ps7/ps7.ipynb @@ -23,21 +23,26 @@ "execution_count": 1, "id": "adfd1c67", "metadata": { - "ExecuteTime": { - "end_time": "2024-04-11T04:02:54.316718Z", - "start_time": "2024-04-11T04:02:53.604913Z" - }, "collapsed": false, - "jupyter": { - "outputs_hidden": false + "ExecuteTime": { + "end_time": "2024-04-27T17:03:32.690848Z", + "start_time": "2024-04-27T17:03:30.945851Z" } }, "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_95268/3863716717.py:17: UserWarning: 'has_mps' is deprecated, please use 'torch.backends.mps.is_built()'\n", + " device = torch.device(\"mps\") if torch.has_mps else torch.device(\"cpu\")\n", + "/tmp/ipykernel_95268/3863716717.py:18: UserWarning: 'has_mps' is deprecated, please use 'torch.backends.mps.is_built()'\n", + " torch.has_mps\n" + ] + }, { "data": { - "text/plain": [ - "True" - ] + "text/plain": "False" }, "execution_count": 1, "metadata": {}, @@ -139,22 +144,19 @@ "execution_count": null, "id": "a63a577557da6e87", "metadata": { - "collapsed": false, - "jupyter": { - "outputs_hidden": false - } + "collapsed": false }, "outputs": [], "source": [] }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 2, "id": "7873ce10", "metadata": { "ExecuteTime": { - "end_time": "2024-04-03T08:51:30.782923Z", - "start_time": "2024-04-03T08:51:30.778415Z" + "end_time": "2024-04-27T17:03:40.731264Z", + "start_time": "2024-04-27T17:03:40.726572Z" } }, "outputs": [], @@ -417,12 +419,12 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 4, "id": "c78ee5e1", "metadata": { "ExecuteTime": { - "end_time": "2024-04-11T04:03:03.689966Z", - "start_time": "2024-04-11T04:03:03.667782Z" + "end_time": "2024-04-27T17:04:36.032494Z", + "start_time": "2024-04-27T17:04:35.981931Z" } }, "outputs": [], @@ -477,12 +479,12 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 5, "id": "4e0fdf18", "metadata": { "ExecuteTime": { - "end_time": "2024-04-07T03:15:42.540657Z", - "start_time": "2024-04-07T03:15:42.436629Z" + "end_time": "2024-04-27T17:04:39.560907Z", + "start_time": "2024-04-27T17:04:39.424591Z" } }, "outputs": [ @@ -496,10 +498,8 @@ }, { "data": { - "image/png": "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", - "text/plain": [ - "
" - ] + "text/plain": "
", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYUAAAGFCAYAAAASI+9IAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAJbklEQVR4nO3cMWieVR/G4ZM2CDHYGCrUCCo2GAex0EEq6FLo1kExDkZLzKAg1CVrwaK4BjsKSqBQiJkK3TNkqLabmkUMVixCFEEFNRmC4XUQbj6ww/t/vuRtTK9rzs15oE1/nsEz1Ov1eg0AWmuH7vYHALB/iAIAIQoAhCgAEKIAQIgCACEKAIQoABDD/f7g0NDQXn4HAHusn/9X2U0BgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBi+2x/A7jp8+HB5c/Xq1fJmamqqvHn22WfLm9Za+/PPPzvtgDo3BQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQDCK6kHzPBw/Y/0yJEj5c2TTz5Z3oyMjJQ3rXklFQbJTQGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgPIh3wJw6daq8OXHixB58CfBf5KYAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEB7EO2Dee++98mZsbKy8WVtbK282NzfLG2Cw3BQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAwoN4+9Tp06c77Z5//vld/pI7u3TpUnmztbW1B18C7CY3BQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYDwIN4+NTk52Wl3+PDhXf6SO1tfXx/IOcBguSkAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEF5JpW1sbAxkA+x/bgoAhCgAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIA4UG8fero0aMDO+uHH34YyIZ/vPDCC512s7Ozu/wld/bTTz+VN5988kl54+/Q/uSmAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABAexNunXnvttYGd9d133w3srIPm/Pnz5c3Fixc7nTXIRxKr3nzzzfJmcXGx01nvvvtupx39cVMAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQAiKFer9fr6weHhvb6W/gfX331Vafd008/Xd6cO3euvFleXi5vDqLffvutvHnggQf24Evu7PPPPy9vHnroofJmamqqvNnc3CxvWmttbGys047W+vnn3k0BgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBi+2x9wL+jyguQjjzzS6awuL09+8cUXnc7az0ZHR8ubpaWl8ubBBx8sb7755pvyprXW3nnnnfJmZWWlvJmYmChvurzG+thjj5U3rbU2Pz9f3ly6dKnTWfciNwUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGA8CDeADz66KPlzfj4eKezfv755/Km6wNt+9nc3Fx5c/bs2fJma2urvHn//ffLm9a6PW7XxY8//jiQTZffi9Zae+ONN8obD+L1z00BgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIDyIx4H00ksvDeSchYWF8ubTTz/dgy/ZPTMzM+XNM888swdfcmdLS0sDO+te5KYAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEB7EG4DV1dXy5uuvv+501uOPP17ePPfcc+XNzZs3y5uuHn744fLm+PHje/Al//brr78O5JyuDh2q/3ffK6+8Ut6MjIyUNysrK+VNa619+OGHnXb0x00BgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIDyINwA7OzvlzZdfftnprKeeeqq8uXbtWnkzPT1d3ly/fr28aa210dHR8mZ8fLzTWVXHjh0byDldLSwslDcvvvhiebO+vl7eXLhwobxprbW//vqr047+uCkAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEEO9Xq/X1w8ODe31t7ALfv/99/Lm/vvvL29u3LhR3pw/f768aa21tbW18uatt94qbz766KPyZnt7u7z54IMPypvWuv05zc3NlTcTExPlze3bt8ubkydPljetdfs7zj/6+efeTQGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFAAIUQAgPIh3wLz66qvlzeXLl8ub4eHh8uaXX34pb1pr7YknnihvdnZ2ypsrV66UN9PT0+VNn79yd83GxkZ5c+bMmfJmfX29vOH/40E8AEpEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAIj6q2bsa8vLy+VNl8cOP/744/Lm6NGj5U1rrd2+fbu8mZ2dLW9u3bpV3ux333//fXkzPz9f3njc7uBwUwAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQBCFACIoV6v1+vrBzs8msbBNTMzU94sLi52Ouu+++7rtBuELr8Xff7K/cvq6mp58/bbb5c33377bXnDf0M/f/fcFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACBEAYAQBQDCg3gMzOTkZKfdxYsXy5vXX3+901lVf/zxR3nz8ssvdzrrs88+K2+2t7c7ncXB5EE8AEpEAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgBAFAEIUAAhRACC8kgpwj/BKKgAlogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQIgCACEKAIQoABCiAECIAgAhCgCEKAAQogBAiAIAIQoAhCgAEKIAQAz3+4O9Xm8vvwOAfcBNAYAQBQBCFAAIUQAgRAGAEAUAQhQACFEAIEQBgPgbLvku86SCoJIAAAAASUVORK5CYII=" }, "metadata": {}, "output_type": "display_data" @@ -508,7 +508,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Label: 3\n" + "Label: 6\n" ] } ], @@ -561,12 +561,12 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 6, "id": "6dd33b95", "metadata": { "ExecuteTime": { - "end_time": "2024-04-11T04:03:51.459649Z", - "start_time": "2024-04-11T04:03:51.434499Z" + "end_time": "2024-04-27T17:04:45.792747Z", + "start_time": "2024-04-27T17:04:45.419030Z" } }, "outputs": [ @@ -808,43 +808,6 @@ "__Tip:__ Don't be worried if your model takes a while to train. Your mileage may also vary depending on your CPU. But if you would like to speed things up, you can consider making use of your device's GPU to parallelize the matrix computations." ] }, - { - "cell_type": "code", - "execution_count": 1, - "id": "e95b10e89d6cfe43", - "metadata": { - "collapsed": false, - "jupyter": { - "outputs_hidden": false - } - }, - "outputs": [], - "source": [ - " self.conv = nn.Sequential(\n", - " nn.Conv2d(3, 32, (3, 3)),\n", - " nn.MaxPool2d((2, 2)),\n", - " nn.LeakyReLU(0.1),\n", - " nn.Conv2d(32, 64, (3, 3)),\n", - " nn.MaxPool2d((2, 2)),\n", - " nn.LeakyReLU(0.1),\n", - " )\n", - "\n", - " self.fc = nn.Sequential(\n", - " nn.Linear(64, 256),\n", - " nn.LeakyReLU(0.1),\n", - " nn.Linear(256, 128),\n", - " nn.LeakyReLU(0.1),\n", - " nn.Linear(128, classes)\n", - " )\n", - " \n", - " def forward(self, x):\n", - " # YOUR CODE HERE\n", - " x = self.conv(x)\n", - " x = x.view(x.shape[0], 64, 6*6).mean(2) # GAP – do not remove this line\n", - " x = self.fc(x)\n", - " return x\n" - ] - }, { "cell_type": "code", "execution_count": 8, @@ -882,13 +845,13 @@ "evalue": "", "output_type": "error", "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", - "File \u001b[0;32m:33\u001b[0m\n", - "File \u001b[0;32m:21\u001b[0m, in \u001b[0;36mtrain_model\u001b[0;34m(loader, model, device)\u001b[0m\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/envs/cs2109s-ay2223s1/lib/python3.9/site-packages/torch/_tensor.py:396\u001b[0m, in \u001b[0;36mTensor.backward\u001b[0;34m(self, gradient, retain_graph, create_graph, inputs)\u001b[0m\n\u001b[1;32m 387\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m has_torch_function_unary(\u001b[38;5;28mself\u001b[39m):\n\u001b[1;32m 388\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m handle_torch_function(\n\u001b[1;32m 389\u001b[0m Tensor\u001b[38;5;241m.\u001b[39mbackward,\n\u001b[1;32m 390\u001b[0m (\u001b[38;5;28mself\u001b[39m,),\n\u001b[0;32m (...)\u001b[0m\n\u001b[1;32m 394\u001b[0m create_graph\u001b[38;5;241m=\u001b[39mcreate_graph,\n\u001b[1;32m 395\u001b[0m inputs\u001b[38;5;241m=\u001b[39minputs)\n\u001b[0;32m--> 396\u001b[0m \u001b[43mtorch\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mautograd\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mbackward\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgradient\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretain_graph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcreate_graph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[43minputs\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m/opt/homebrew/anaconda3/envs/cs2109s-ay2223s1/lib/python3.9/site-packages/torch/autograd/__init__.py:173\u001b[0m, in \u001b[0;36mbackward\u001b[0;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001b[0m\n\u001b[1;32m 168\u001b[0m retain_graph \u001b[38;5;241m=\u001b[39m create_graph\n\u001b[1;32m 170\u001b[0m \u001b[38;5;66;03m# The reason we repeat same the comment below is that\u001b[39;00m\n\u001b[1;32m 171\u001b[0m \u001b[38;5;66;03m# some Python versions print out the first line of a multi-line function\u001b[39;00m\n\u001b[1;32m 172\u001b[0m \u001b[38;5;66;03m# calls in the traceback and some print out the last line\u001b[39;00m\n\u001b[0;32m--> 173\u001b[0m \u001b[43mVariable\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_execution_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mrun_backward\u001b[49m\u001b[43m(\u001b[49m\u001b[43m \u001b[49m\u001b[38;5;66;43;03m# Calls into the C++ engine to run the backward pass\u001b[39;49;00m\n\u001b[1;32m 174\u001b[0m \u001b[43m \u001b[49m\u001b[43mtensors\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mgrad_tensors_\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mretain_graph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcreate_graph\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43minputs\u001b[49m\u001b[43m,\u001b[49m\n\u001b[1;32m 175\u001b[0m \u001b[43m \u001b[49m\u001b[43mallow_unreachable\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43maccumulate_grad\u001b[49m\u001b[38;5;241;43m=\u001b[39;49m\u001b[38;5;28;43;01mTrue\u001b[39;49;00m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", + "File \u001B[0;32m:33\u001B[0m\n", + "File \u001B[0;32m:21\u001B[0m, in \u001B[0;36mtrain_model\u001B[0;34m(loader, model, device)\u001B[0m\n", + "File \u001B[0;32m/opt/homebrew/anaconda3/envs/cs2109s-ay2223s1/lib/python3.9/site-packages/torch/_tensor.py:396\u001B[0m, in \u001B[0;36mTensor.backward\u001B[0;34m(self, gradient, retain_graph, create_graph, inputs)\u001B[0m\n\u001B[1;32m 387\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m has_torch_function_unary(\u001B[38;5;28mself\u001B[39m):\n\u001B[1;32m 388\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m handle_torch_function(\n\u001B[1;32m 389\u001B[0m Tensor\u001B[38;5;241m.\u001B[39mbackward,\n\u001B[1;32m 390\u001B[0m (\u001B[38;5;28mself\u001B[39m,),\n\u001B[0;32m (...)\u001B[0m\n\u001B[1;32m 394\u001B[0m create_graph\u001B[38;5;241m=\u001B[39mcreate_graph,\n\u001B[1;32m 395\u001B[0m inputs\u001B[38;5;241m=\u001B[39minputs)\n\u001B[0;32m--> 396\u001B[0m \u001B[43mtorch\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mautograd\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mbackward\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mgradient\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mretain_graph\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcreate_graph\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43minputs\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[43minputs\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m/opt/homebrew/anaconda3/envs/cs2109s-ay2223s1/lib/python3.9/site-packages/torch/autograd/__init__.py:173\u001B[0m, in \u001B[0;36mbackward\u001B[0;34m(tensors, grad_tensors, retain_graph, create_graph, grad_variables, inputs)\u001B[0m\n\u001B[1;32m 168\u001B[0m retain_graph \u001B[38;5;241m=\u001B[39m create_graph\n\u001B[1;32m 170\u001B[0m \u001B[38;5;66;03m# The reason we repeat same the comment below is that\u001B[39;00m\n\u001B[1;32m 171\u001B[0m \u001B[38;5;66;03m# some Python versions print out the first line of a multi-line function\u001B[39;00m\n\u001B[1;32m 172\u001B[0m \u001B[38;5;66;03m# calls in the traceback and some print out the last line\u001B[39;00m\n\u001B[0;32m--> 173\u001B[0m \u001B[43mVariable\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_execution_engine\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mrun_backward\u001B[49m\u001B[43m(\u001B[49m\u001B[43m \u001B[49m\u001B[38;5;66;43;03m# Calls into the C++ engine to run the backward pass\u001B[39;49;00m\n\u001B[1;32m 174\u001B[0m \u001B[43m \u001B[49m\u001B[43mtensors\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mgrad_tensors_\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mretain_graph\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mcreate_graph\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43minputs\u001B[49m\u001B[43m,\u001B[49m\n\u001B[1;32m 175\u001B[0m \u001B[43m \u001B[49m\u001B[43mallow_unreachable\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mTrue\u001B[39;49;00m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43maccumulate_grad\u001B[49m\u001B[38;5;241;43m=\u001B[39;49m\u001B[38;5;28;43;01mTrue\u001B[39;49;00m\u001B[43m)\u001B[49m\n", + "\u001B[0;31mKeyboardInterrupt\u001B[0m: " ] } ], @@ -1444,10 +1407,7 @@ "execution_count": 1, "id": "bd138177d2e4877", "metadata": { - "collapsed": false, - "jupyter": { - "outputs_hidden": false - } + "collapsed": false }, "outputs": [], "source": [] diff --git a/cs2109s/labs/ps8/ps8.ipynb b/cs2109s/labs/ps8/ps8.ipynb index 8781a6b..9eec294 100644 --- a/cs2109s/labs/ps8/ps8.ipynb +++ b/cs2109s/labs/ps8/ps8.ipynb @@ -48,7 +48,7 @@ }, { "cell_type": "code", - "execution_count": 59, + "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:37.914218Z", @@ -75,7 +75,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 2, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.040716Z", @@ -103,7 +103,7 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 3, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.074365Z", @@ -125,7 +125,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 4, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.111720Z", @@ -166,7 +166,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 5, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.178548Z", @@ -190,7 +190,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 6, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.260912Z", @@ -223,7 +223,7 @@ }, { "cell_type": "code", - "execution_count": 65, + "execution_count": 7, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.277405Z", @@ -353,7 +353,7 @@ }, { "cell_type": "code", - "execution_count": 66, + "execution_count": 8, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.317559Z", @@ -415,7 +415,7 @@ }, { "cell_type": "code", - "execution_count": 67, + "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.393751Z", @@ -449,7 +449,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 10, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.493645Z", @@ -500,7 +500,7 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 11, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.497758Z", @@ -543,7 +543,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 12, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.556723Z", @@ -571,7 +571,7 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 13, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.629079Z", @@ -620,7 +620,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 14, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.632823Z", @@ -662,7 +662,7 @@ }, { "cell_type": "code", - "execution_count": 73, + "execution_count": 15, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.660329Z", @@ -714,7 +714,7 @@ }, { "cell_type": "code", - "execution_count": 74, + "execution_count": 16, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.690053Z", @@ -760,7 +760,7 @@ }, { "cell_type": "code", - "execution_count": 75, + "execution_count": 17, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.787262Z", @@ -788,7 +788,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 18, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.877056Z", @@ -848,7 +848,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 19, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.903227Z", @@ -890,7 +890,7 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 20, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.941113Z", @@ -904,7 +904,7 @@ "0.7142857142857144" ] }, - "execution_count": 78, + "execution_count": 20, "metadata": {}, "output_type": "execute_result" } @@ -932,7 +932,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 21, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:38.990600Z", @@ -985,7 +985,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 22, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:39.023625Z", @@ -1055,7 +1055,7 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": 23, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:39.246418Z", @@ -1065,7 +1065,7 @@ "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAhYAAAGdCAYAAABO2DpVAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAs50lEQVR4nO3deXhU5cH+8fvMQDZIhjUsEgJxY5cltGXHailq/QlWRatUXC/fAoL0tUpxoSLmBauiRbHBvkBRCi6gaMWK8IICUhGIokVRFhNEGlSYCRCyzDy/PwIpY9YJT2YyyfdzXXNJzpyZuQ8zcu6c88xzHGOMEQAAgAWuSAcAAAD1B8UCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDWNwv2CgUBABw4cUGJiohzHCffLAwCAGjDGKC8vT+3bt5fLVfFxibAXiwMHDiglJSXcLwsAACzIyclRhw4dKrw/7MUiMTFRUkmwpKSkcL88AACoAZ/Pp5SUlNL9eEXCXixOnf5ISkqiWAAAEGWqGsbA4E0AAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANWGfIKs2HDnkVdbaT1RUWKzz+qUptVt0Thl+zHtM297ZoRPHCpTavYPO63d2pCMBQL1nirOloixJLikmXY67baQj1YjxH5QKP5QUkBr3ltOoY0RyRHWxKDxRqHlTFmrVc2vlL/aXLu85pKvuXjhe7Tq3iWC66vP7/Vp4/zItn/OGCk8UlS4/u3cn/W7hBKX1So1gOgCon4z/WxnvVKlw/WlLXTJxl8hJmiHH1TRi2UJhAkdlfA9IJ96UFPjP8phhcjwZctytwprHMcaYcL6gz+eTx+OR1+s9oym9jTF6YNQs/fPv22QCwZvgcrvUrHWSnt3+qJq3aXaGiWvfk7+Zrzf+/Lb0g3fC5XYprkmsnt4ySx3ObReZcABQD5nAUZnvrpT8OZL8P7jXJTXuJafFC3KcxpGIV23GFMl8f71UtENlt8MtuVPktFxupSRVd/8dtWMsdry3U5tf31qmVEhSwB/QkUM+LX/yzQgkC83+XQf0xrNlS4VUsh0Fxwu0ZOYr4Q8GAPVZ/iuS/yuV3RlLUqDk1EjBO2EOVQMnVp88jVPedvhLtjE/vPuQqC0Wqxetk7tRxfED/oDe+t81YUxUM+8sfleuSrbDXxzQ//1tgwpPFIYxFQDUbyb/pSrWcMkcr/u/1Jn85apqV171ttoVtcXi+4NH5C8OVLqO99s8hflMT8i+P3hEjiq/UlxxkV/HvMfDlAgAGgD/IZV7qLhUQAr8O1xpai7wb50+rqIsc3Jbwydqi0Wrs1pUesRCkpole6q8vGuktTqrRZXlp3FsIzVp1iRMiQCgAXC3lSr9pc4luduHK03NudpJcleygnNyW8MnaovFiHEXVnrEwuV26dJbLwpjopq5eOxQBQIVb4e7kUsXXT9UMbF1ewARAEQTJ/7qKtYIyIn/ZViynAkn4SqVP77itHWq3Fa7orZYdBtwnoZdM7DcIxKuRi61OquFRt95aQSShab92W31y8m/KPc+l9ulhMR4XX9f3f9wA0BUib9SanSeyv9t3yXF/FiK/Wm4U4Uu9iIp5icqf3fuLtnG+CvDGilqi4XjOLp38URd/dvLFRsfc9odUvrPLtCTm2bK06rmX2cNp9sfHaubHr5OCUnxQcu7DzxfT26aqbadkiOUDADqJ8eVIKfF81LszxW8K2wkxV8lp3mmHKfuT/XkOG45zf8sxV+t4KmpXFLsz+W0WCzHlRDeTNE6j8XpjvmO65P3dqqosFjn9OkctTvigvwCffzuThUcL1Bqtw5KOf+sSEcCgHrP+P99ch4IlxTTR46reaQj1YgJHJYKt6tk5s2ectx2J4ms7v67XhQLAABQu+r9BFkAAKDuoVgAAABrKBYAAMAaigUAALCGYgEAAKyhWAAAAGsoFgAAwBqKRRW8J7za79tf7n37ffvlPeENcyIAAOouikUlvCe8GvnCSA1bOEw53pyg+3K8ORq2cJhGvjCScgEAwEkUi0rkFeYp91iu9hzeo+GLhpeWixxvjoYvGq49h/co91iu8grzIpoTAIC6gmJRiQ5JHbTuxnVKa55WWi425WwqLRVpzdO07sZ16pDUIdJRAQCoEygWVUjxpASVi0H/OyioVKR4UiIdEQBQixhrFxqKRTWkeFK0ePTioGWLRy+mVABAPcdYu9BRLKohx5ujsSvGBi0bu2JsmQ8ZAKB+Yaxd6CgWVTj9w5PWPE0bb94YNOaCcgEA9Rdj7ULnGGNMOF+wutdzrwv2+/Zr2MJhZcZU/LBsrB+3ng8VANRjp/+7f0pDG2tX3f03RywqkRiTqOQmyWU+PKcP6ExukqzEmMQIJwUA1CbG2lUfRyyq4D3hVV5hXrlHJPb79isxJlGeOE8EkgEAwoUjFhyxsMYT56nwNEeHpA6UCgCo5xhrFxqKBQAAFdjv219moObAlIFlBnRWNM9FQ0SxAACgAoy1Cx1jLAAAqARj7UpUd//dKIyZAACIOp44T4XFgakGyuJUCAAAsIZiAQAArKk3xcJf7FdhQVGkY5wxv9+vwhOFkY4BANViTKGMKY50jDNWsh3Rvw8xpkjGRHYfEvVjLLat2aEXZ7+qbe98LGOkDue315V3XqpLb79Ybrc70vGq7bMPvtDSWa/q/ZUfKuAPKLljK/2/34zU6DsvUUxcTKTjAUApY4ql/GUyxxZJ/n2SHJmYQXKa3CYndkCk41WbMUY68ZrMsQVS8c6SZY37ymlyq5y4iyOcLjTmxDsyx/4iFW0t+blRVzlNxklxo+Q4TlizhPStkOLiYk2fPl0vvPCCDh48qHbt2mncuHG677775HJV7+CHzW+F/D1ztebckSmX26WAP1Cy8OTf3+DRP9J9y6ZERbnY+OoHeujqxyRHChQHSpc7Lkc9BnXR//zjPsoFgDrBGL/MkYlSwTsq+Qf31C7ELSkgJ2mGnIRrIhewmowxMr4/SPlLVHLw/tS/vSV/dppOltP0N5ELGAJz9BmZo3NU3nYo/ldykh60Ui5qZebNWbNm6dlnn9XcuXO1c+dOzZ49W48++qj+9Kc/nXHgUP37q0N66jfzJek/pUIq+YwbacPyD/T2wnVhzxWqY77jyrjhKQUCgaBSIUkmYPTJxs/04qMrI5QOAH4g/2WpYM3JH07/vdQvycj4HpDxfxOBYCEqWHeyVEj/2Rn/58/m6ByZok/DnSpkpujTk6VCKm87lL+kZFvDKKRi8f777+uKK67QZZddpk6dOumqq67SiBEj9OGHH9ZWvgqtem6NVEkDc1yOXp27KoyJambtC++pIL8g+P/P05iA0cpn3lIgECh/BQAII3N8cTXWeTEMSc6MOf6CSo6yVMQtc3xJJffXDSUZq9qO58MVR1KIxWLw4MFas2aNdu3aJUn66KOPtGHDBl166aUVPqagoEA+ny/oZsOXWXuDj1T8gAkY7duRrTDP/xWy3Vn7qjxdc/jfXvm+ywtTIgAonzFGKv5CFf4mJEkKSMWfhStSzRV/qpKjLBXxS0WfhCtNzRV9oiq3o/hf4UojKcTBm/fcc4+8Xq+6dOkit9stv9+vmTNn6rrrrqvwMRkZGfrDH/5wxkF/KCY+Ro7LkQlU/AFvFNs47INWQtU4rnH11out3noAULsaS6rsWwcuyYmGMWGxVa/ixNV+jDNVrYzhfT9COmKxbNkyPf/881qyZIm2bdumRYsW6Y9//KMWLVpU4WOmTp0qr9dbesvJsXMVuAGXp1daKtyNXBp0RX8rr1WbBvy//vIXV9w2XW6Xeg7pqiZJCWFMBQBlOY4jxV6kyg+9B+TERsE3KuJGqPLtcOTEjQhXmhpz4n6m0m8tlMstxf08XHEkhVgs7r77bt1777269tpr1bNnT40dO1Z33XWXMjIyKnxMbGyskpKSgm42DLt6gJI7tpKrUTmb4EjGSFf99nIrr1Wb+vy0h87p01nu8rZDJQNTr5s6OsypAKB8TtNbVHIqpLydmVtynRX2HVlNOAk3qOSgfXnb4ZKcJCn+yjCnqoH4q0qylrs7dyQ1Ormt4RNSsTh+/HiZr5W63e6IDCyMiYvR7HceUOsOLUtyNHLJ5XLkuBw1jmms+5bepfP6nR32XKFyHEcz/z5Vqd1Krph3ajtcbpdcbpcmzbtd/Uf2iXBKACjhNO4lp9kclZwScVSyGzn5m7+7nZwWi+REwakQp1FHOc3nS06CymyHq1nJdriaRzBh9Tgns6o0q1sl2+JIToKc5plyGnUMb6ZQ5rEYN26c3nnnHf35z39W9+7dtX37dt1+++26+eabNWvWrGo9h+2rmxYXFWvjig/0zze3qaiwWOf1O1s/HzdcSS2j6xK2fr9fH76VpQ3L/6kT+YXq1C1FP7/5QrVq3yLS0QCgDBM4LOUvlyn6RFKMnLjhUuzFcpzoGg9mAkdLJskq3CbJkRMzUIq/VE40jK84jTEnpPw3ZQo3STJyGveR4kfJcTW19hrV3X+HVCzy8vJ0//33a8WKFcrNzVX79u113XXX6YEHHlBMTPUaKpdNBwAg+tRKsbCBYgEAQPSplZk3AQAAKkOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANSEXi6+//lo33HCDWrZsqYSEBPXu3Vtbt26tjWwAACDKNApl5cOHD2vQoEG68MILtWrVKiUnJ2v37t1q1qxZLcUDAADRJKRiMWvWLKWkpGjBggWlyzp16mQ7EwAAiFIhnQpZuXKl0tPTdfXVVys5OVl9+vTR/PnzK31MQUGBfD5f0A0AANRPIRWLPXv2aN68eTr33HP1j3/8Q3fccYfuvPNO/fWvf63wMRkZGfJ4PKW3lJSUMw4NAADqJscYY6q7ckxMjNLT07Vp06bSZXfeeae2bNmi999/v9zHFBQUqKCgoPRnn8+nlJQUeb1eJSUlnUF0AAAQLj6fTx6Pp8r9d0hHLNq1a6du3boFLevatauys7MrfExsbKySkpKCbgAAoH4KqVgMGjRIn3/+edCyXbt2KTU11WooAAAQnUIqFnfddZc2b96sRx55RF9++aWWLFmizMxMjR8/vrbyAQCAKBJSsejfv79WrFihv/3tb+rRo4dmzJihOXPm6Prrr6+tfAAAIIqENHjThuoO/gAAAHVHrQzeBAAAqAzFAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANWdULDIyMuQ4jiZPnmwpDgAAiGY1LhZbtmxRZmamevXqZTMPAACIYjUqFkePHtX111+v+fPnq3nz5rYzAQCAKFWjYjF+/Hhddtlluvjii6tct6CgQD6fL+gGAADqp0ahPmDp0qXatm2btmzZUq31MzIy9Ic//CHkYAAAIPqEdMQiJydHkyZN0vPPP6+4uLhqPWbq1Knyer2lt5ycnBoFBQAAdZ9jjDHVXfnVV1/V6NGj5Xa7S5f5/X45jiOXy6WCgoKg+8rj8/nk8Xjk9XqVlJRU8+QAACBsqrv/DulUyEUXXaQdO3YELbvpppvUpUsX3XPPPVWWCgAAUL+FVCwSExPVo0ePoGVNmjRRy5YtyywHAAANDzNvAgAAa0L+VsgPrVu3zkIMAABQH3DEAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgDcUCAABYQ7EAAADWUCwAAIA1FAsAAGANxQIAAFhDsQAAANZQLAAAgDUUCwAAYA3FAgAAWEOxAAAA1lAsAACANRQLAABgTUjFIiMjQ/3791diYqKSk5M1atQoff7557WVDQAARJmQisX69es1fvx4bd68WatXr1ZxcbFGjBihY8eO1VY+AAAQRRxjjKnpgw8dOqTk5GStX79eQ4cOrdZjfD6fPB6PvF6vkpKSavrSAAAgjKq7/250Ji/i9XolSS1atKhwnYKCAhUUFAQFAwAA9VONB28aYzRlyhQNHjxYPXr0qHC9jIwMeTye0ltKSkpNXxIAANRxNT4VMn78eP3973/Xhg0b1KFDhwrXK++IRUpKCqdCAACIIrV6KmTixIlauXKl3n333UpLhSTFxsYqNja2Ji8DAACiTEjFwhijiRMnasWKFVq3bp06d+5cW7kAAEAUCqlYjB8/XkuWLNFrr72mxMREHTx4UJLk8XgUHx9fKwEBAED0CGmMheM45S5fsGCBxo0bV63n4OumAABEn1oZY3EGU14AAIAGgGuFAAAAaygWAADAGooFAACwhmIBAACsoVgAAABrKBYAAMAaigUAALCGYgEAAKyhWAAAAGsoFgAAwBqKBQAAsIZiAQAArKFYAAAAaygWAADAGooFAACwhmIBAACsoVgAAABrKBYAAMAaigUAALCGYgEAAKyhWAAAAGsoFgAAwBqKBQAAsIZiAQAArKFYAAAAaxpFOsCZyi8q0uu7PtO6fXtVFPCrR3IbjeneU22bJkY6WkgK/X69vfsLvb37Sx0rKtJ5LVvq2u69lNqsWaSjhcQfCGjdvr1644vP5Ss4odRmzTWme0+d37JVpKMBAMLAMcaYcL6gz+eTx+OR1+tVUlLSGT3XF999p7ErXlLu8WNyJBlJLseRI+nRn43UqC7dbESudQfyfLphxcvad+SwXI6jgDFyn/zv74cM1y19+kU6YrUcOZGvca++oo9z/y2348h/cjv8xuj2fv11z8Ahchwn0jEBADVQ3f131J4KyS8q0tgVL+m7/OOSSkqFJAWMkd8Y/fbtVdr+zYHIBaymgDG66bXlyvEeKf1ZkvzGyEia+d46rd79ZcTyhWLiqjf06aFcSSX5T/9v5tYtWvLJxxHLBgAIj6gtFq/v+ky5x4+V7rh+yOU4em77h2FOFbr3vtqnL77/rtLtmLf1gzCnCt3OQ7namJNd4XZI0rwP/1lanAAA9VPUFot1+/aqsoPqfmO0du+esOWpqf/bt0eNXBW/DQFjlHXwG/kKCsKYKnT/t2+v3FWc5jiQl6c9h78PUyIAQCREbbEo9PtV1e++RYGAwjyEJGRFgUD11vP7aznJmSkK+Ks1fqKubwcA4MxEbbHo2aaNXJXsyFyOo+6tk+v8YMGeyW1UXEW5aNOkqZrHx4cpUc30qMZ2xDdqrNRmzcOUCAAQCVFbLMZ071npqZCAMRp3Qd+w5ampy8/roiaNYyrcFkfSjRf0qbRE1QXDUzurXdPECnO6HEdjuvdQQuPGYU4GAAinqC0WbZsmavbFI+VIQef2T+3YRnfppiu6dI1QuuprEhOjuZf8Qo1crqDtcE7eBndM1c1R8HVTt8ulZy69XHGNGpUZa+HIUbfWrTVlwOAIpQMAhEtUz2MhSdu+OaDntn2otfv2qDgQULdWrTWud1+N6tKtzv+Wf7qd3x7SX7Z9qFVf7lKB36+0Zs019oI+urZ7TzV2uyMdr9q+OnJEz23/UK99vlPHCgt1VlKSru95gX7dq4/iOVoBAFGruvvvqC8WpzPG1PkxFdXBdgAA6pp6P0FWeerLToztAABEq3pVLAAAQGRRLAAAgDUUCwAAYA3FohZ5T3i137e/3Pv2+/bLe8Ib5kQAANQuikUt8Z7wauQLIzVs4TDleHOC7svx5mjYwmEa+cJIygUAoF6hWNSSvMI85R7L1Z7DezR80fDScpHjzdHwRcO15/Ae5R7LVV5hXkRzAgBgE8WilnRI6qB1N65TWvO00nKxKWdTaalIa56mdTeuU4ekDpGOCgCANfVqgqy66PQjFKecKhUpnpTIBQMAIAQNcoKsuijFk6LFoxcHLVs8ejGlAgBQL1EsalmON0djV4wNWjZ2xdgyAzoBAKgPKBa16PTTIGnN07Tx5o1BYy4oFwCA+oZiUUv2+/aXGag5MGVgmQGdFc1zAQBANKJY1JLEmEQlN0kuM1AzxZNSWi6SmyQrMSYxwkkBALCHb4XUIu8Jr/IK88r9Sul+334lxiTKE+eJQDIAAEJT3f13ozBmanA8cZ4KiwPzVwCwye/3q6ioKNIxEMUaN24st9t9xs9DsQCAKGaM0cGDB3XkyJFIR0E90KxZM7Vt21aO49T4OSgWABDFTpWK5ORkJSQknNEOAQ2XMUbHjx9Xbm6uJKldu3Y1fi6KBQBEKb/fX1oqWrZsGek4iHLx8fGSpNzcXCUnJ9f4tAjfCgGAKHVqTEVCQkKEk6C+OPVZOpPxOhQLAIhynP6ALTY+SxQLAABgDcUCABBWxhjdfvvtatGihRzHUVZWloYPH67JkydbfZ3p06erd+/eVp8z0jp16qQ5c+ZUuo7jOHr11VfDkqc8DN4EAITVW2+9pYULF2rdunVKS0tTq1attHz5cjVu3DjS0axbuHChJk+ebO3rwFu2bFGTJk2sPFdtoVgAQAMVqdmBd+/erXbt2mngwIGly1q0aGH9daJJYWGhYmJiqlyvdevWYUhzZjgVAgANkPeEVyNfGKlhC4eVudJyjjdHwxYO08gXRsp7wmv1dceNG6eJEycqOztbjuOoU6dOklTmVEinTp30yCOP6Oabb1ZiYqI6duyozMzMoOe65557dN555ykhIUFpaWm6//77Q/42w6effqrLLrtMSUlJSkxM1JAhQ7R79+7S+xcsWKCuXbsqLi5OXbp00TPPPFN63759++Q4jpYvX64LL7xQCQkJuuCCC/T+++9LktatW6ebbrpJXq9XjuPIcRxNnz69dPsefvhhjRs3Th6PR7fddpsk6ZVXXlH37t0VGxurTp066bHHHgvK+8NTIV988YWGDh2quLg4devWTatXrw5av7CwUBMmTFC7du0UFxenTp06KSMjI6S/o1DViyMW3x0/rvf3Z6vIH1CP5DY6N0q/z+0rKNDGnK+UX1Skc1u2Us/kNpGOBKCeyivMU+6x3NIrLZ+6WGKON6f0ysyn1rN51OLJJ5/U2WefrczMTG3ZsqXSuRIee+wxzZgxQ7///e/18ssv67/+6780dOhQdenSRZKUmJiohQsXqn379tqxY4duu+02JSYm6ne/+121snz99dcaOnSohg8frrVr1yopKUkbN25UcXGxJGn+/Pl68MEHNXfuXPXp00fbt2/XbbfdpiZNmujGG28sfZ5p06bpj3/8o84991xNmzZN1113nb788ksNHDhQc+bM0QMPPKDPP/9cktS0adPSxz366KO6//77dd9990mStm7dqmuuuUbTp0/XmDFjtGnTJv3mN79Ry5YtNW7cuDL5A4GArrzySrVq1UqbN2+Wz+crM07lqaee0sqVK/Xiiy+qY8eOysnJUU5OTpnnssrUwNNPP206depkYmNjTd++fc27775b7cd6vV4jyXi93pq8dJATRUVm2trV5tw/PW46P/nH0ts1Ly012UeOnPHzh0ux329mb3zXdJn7RNB2XPbCIvOvQ7mRjgegjsrPzzf/+te/TH5+fo0en30k26Q9mWY0XSbtyTSzMXtj0M/ZR7ItJy7xxBNPmNTU1KBlw4YNM5MmTSr9OTU11dxwww2lPwcCAZOcnGzmzZtX4fPOnj3b9OvXr/TnBx980FxwwQUVrj916lTTuXNnU1hYWO79KSkpZsmSJUHLZsyYYQYMGGCMMWbv3r1GknnuuedK7//000+NJLNz505jjDELFiwwHo+nzHOnpqaaUaNGBS371a9+ZX72s58FLbv77rtNt27dgh73xBNPGGOM+cc//mHcbrfJyckpvX/VqlVGklmxYoUxxpiJEyean/70pyYQCFT493C6yj5T1d1/h3wqZNmyZZo8ebKmTZum7du3a8iQIbrkkkuUnZ1tufJUzhijCate19JPPlZxIBB037ZvvtZVL/1Nh44fC2ummpq+fq3mffiBCvz+oOWff/etxry8VHuPHI5QMgD1WYonRetuXKe05mnac3iPBv3vIO05vEdpzdNKj2BEUq9evUr/7DiO2rZtWzrltCS9/PLLGjx4sNq2baumTZvq/vvvD2lflJWVpSFDhpQ7aPTQoUPKycnRLbfcoqZNm5beHn744aBTJT/MeWoq7NNzViQ9PT3o5507d2rQoEFBywYNGqQvvvhC/h/sH06t37FjR3Xo8J8xMgMGDAhaZ9y4ccrKytL555+vO++8U2+//XaVuc5UyMXi8ccf1y233KJbb71VXbt21Zw5c5SSkqJ58+bVRr4KbTnwtdbs3aNAOVd99xuj7/OPa2HWtrBmqok9h7/XCzs+Kvc+vzHKLyrS0x9sDnMqAA1FiidFi0cvDlq2ePTiiJcKSWV2+I7jKHDyF8nNmzfr2muv1SWXXKI33nhD27dv17Rp01RYWFjt5z81hXV5Tr3O/PnzlZWVVXr75JNPtHlz8L/Jp+c8NcFU4Ae/8Jbnh9/uMMaUmaDKlLOPq+y+Hz6+b9++2rt3r2bMmKH8/Hxdc801uuqqq6rMdiZCKhaFhYXaunWrRowYEbR8xIgR2rRpU7mPKSgokM/nC7rZ8MrOT+WuZIYwvzF68dMdVl6rNr362c4qt+P1XZ+p4OQ5PwCwKcebo7ErxgYtG7tibJkBnXXNxo0blZqaqmnTpik9PV3nnnuuvvrqq5Ceo1evXnrvvffKHfDZpk0bnXXWWdqzZ4/OOeecoFvnzp2r/RoxMTHlHm0oT7du3bRhw4agZZs2bdJ5551X7liUbt26KTs7WwcOHChddmrg6OmSkpI0ZswYzZ8/X8uWLdMrr7yi77//vtrbEKqQisW3334rv9+vNm2CBxW2adNGBw8eLPcxGRkZ8ng8pbeUFDst+NCxY/JX0uQk6fv8/ErbXl1w6PixKqdQLQoE5CssCFMiAA3F6QM105qnaePNG0tPiwxfNLxOl4tzzjlH2dnZWrp0qXbv3q2nnnpKK1asCOk5JkyYIJ/Pp2uvvVYffvihvvjiCy1evLh0oOX06dOVkZGhJ598Urt27dKOHTu0YMECPf7449V+jU6dOuno0aNas2aNvv32Wx0/frzCdX/7299qzZo1mjFjhnbt2qVFixZp7ty5+u///u9y17/44ot1/vnn69e//rU++ugjvffee5o2bVrQOk888YSWLl2qzz77TLt27dJLL72ktm3bqlmzZtXehlDV6Oum5R2qqWjnOHXqVHm93tKbrdGobZs2rfQ3fUlqFQWXEG7TpGmV5SfG7VZSTGyYEgFoCPb79geVinU3rtPAlIFBYy6GLxqu/b79kY5ariuuuEJ33XWXJkyYoN69e2vTpk26//77Q3qOli1bau3atTp69KiGDRumfv36af78+aWnNm699VY999xzWrhwoXr27Klhw4Zp4cKFIR2xGDhwoO644w6NGTNGrVu31uzZsytct2/fvnrxxRe1dOlS9ejRQw888IAeeuihcr8RIkkul0srVqxQQUGBfvSjH+nWW2/VzJkzg9Zp2rSpZs2apfT0dPXv31/79u3Tm2++KZer9mabcEwIv9IXFhYqISFBL730kkaPHl26fNKkScrKytL69eurfA6fzyePxyOv16ukpKSapZa09ZuvdfVLSyu83+U4Gt//x7rrJ4MqXKcu+OrIEf30r39RRW+C23H0y67d9T8X/zysuQDUfSdOnNDevXvVuXNnxcXFhfTYU/NY5B7LLTNQ89SRjOQmyXrr+rdqZZIs1E2Vfaaqu/8OqbLExMSoX79+ZSbgWL16ddAMauHQt217XXbu+SrveITbcdS2aVPdeEGfsGaqidRmzXRzn37l3ud2HDWNidWEH/0kzKkA1HeeOI/euv4trR+3vsxAzRRPitaPW0+pQI2EPEHWlClTNHbsWKWnp2vAgAHKzMxUdna27rjjjtrIVyHHcfT4iEt0VmKi/vpxlk6cHNzoSBrSsZMyLhqhFvEJYc1UU1MHD1OzuHj9eesHOnraiOa+7dor46IR6pDE/9gA7PPEeSosDuVN8w1UR8jFYsyYMfruu+/00EMP6ZtvvlGPHj305ptvKjU1tTbyVaqx2617Bw/T+P4/0ZYDX6so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", + "image/png": "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66+/lt/vV3p68KDC9PR07d+/v9LnZGdny+PxlD8yMuy04ANHjshfTZOTpG+PHau27dUHB44eOeMlVEsDAflKisOUCEBjcfpAzczmmVo7fm35aZHhC4bX63JxzjnnKD8/X4sXL9aOHTv0u9/9TkuXLg3pNSZOnCifz6err75aH330kbZv366FCxeWD7ScNm2asrOz9cwzzygvL0+ffPKJ5s2bp6eeeqrG6+jYsaMOHz6s9957T19//bWOHj1a5bK//vWv9d5772n69OnKy8vTggULNHv2bP3mN7+pdPmLL75Y5513nq6//np9/PHHev/99zV16tSgZZ5++mktXrxYn3/+ufLy8vTyyy+rdevWatasWY23IVS1+rppZYdqqto53nvvvfJ6veUPW6NRWzdtWu0nfUlqGQW3EE5PanrG8hPndislLj5MiQA0Bnt8e4JKRe4NuRqYMTBozMXwBcO1x7cn0lErddlll+mOO+7QxIkT1bt3b61bt073339/SK+RmpqqlStX6vDhwxo2bJj69eunuXPnlp/auPnmm/XCCy9o/vz56tmzp4YNG6b58+eHdMRi4MCBuu222zRmzBi1atVKM2fOrHLZvn376q9//asWL16sHj166IEHHtDDDz9c6TdCJMnlcmnp0qUqLi7WD37wA91888169NFHg5Zp2rSpZsyYoaysLPXv31+7d+/W3//+d7lcdXe1CceE8JG+pKREiYmJevnll3X55ZeXT588ebK2bNmiVatWnfE1fD6fPB6PvF6vUlJSapda0sav9urKlxdXOd/lOJrQ/4e640eDqlymPvjy0CFd+Oc/qqo3we04uqJrd/2/i/8rrLkA1H/Hjx/Xrl271KlTJyUkJIT03FPXsSg8UlhhoOapIxlpSWl6+9q36+QiWaifqvudqun+O6TKEhcXp379+lW4AMeKFSuCrqAWDn1bt9Wlnc9TZccj3I6j1k2b6obz+4Q1U210aNZM4/v0q3Se23HUNC5eE3/wozCnAtDQeRI8evvat7Vq3KoKAzUzPBlaNW4VpQK1EvIFsu68806NHTtWWVlZGjBggHJycpSfn6/bbrutLvJVyXEcPTVilL6XnKw//2uLjp8c3OhIGtK+o7IvGqEWTRLDmqm27h08TM0SmugPGz/U4dNGNPdt01bZF41QuxT+xwZgnyfBU2VxqOwy30BNhFwsxowZo2+++UYPP/ywvvrqK/Xo0UN///vf1aFDh7rIV61Yt1v3DB6mCf1/pA379qo04Ff3VmlRtyM+ddrmpj599eHevTpWVqrOLVKV2bxxXzsfABB9QhpjYYOtMRYA0NidzRgLoDJhH2MBAABQHYoFAES5mlzlEagJG79LDeLupgDQGMXFxcnlcmnfvn1q1aqV4uLi6v21e1A/GWNUUlKiAwcOyOVyKS4urtavRbEAgCjlcrnUqVMnffXVV0GXdQZqKzExUe3btz+rC2hRLAAgisXFxal9+/YqKyur8T0pgMq43W7FxMSc9VEvigUARDnHcRQbG1vp7b+BcGPwJgAAsIZiAQAArKFYAAAAa8I+xuLUhT59Pl+4Vw0AAGrp1H77TBfsDnuxKCoqkiRlZGScYUkAAFDfFBUVyeOp+p5cYb9XSCAQ0L59+5ScnGz1Qi4+n08ZGRkqKCjgHiT1AO9H/cN7Ur/wftQvvB9nZoxRUVGR2rZtW+11LsJ+xMLlcqldu7q7HW9KSgq/FPUI70f9w3tSv/B+1C+8H9Wr7kjFKQzeBAAA1lAsAACANQ2mWMTHx+vBBx9UfHx8pKNAvB/1Ee9J/cL7Ub/wftgT9sGbAACg4WowRywAAEDkUSwAAIA1FAsAAGANxQIAAFjTYIrF888/r06dOikhIUH9+vXT+++/H+lIjVJ2drb69++v5ORkpaWlafTo0dq2bVukY+Gk7OxsOY6jKVOmRDpKo7V3715dd911Sk1NVWJionr37q2NGzdGOlajVVZWpvvuu0+dOnVSkyZNlJmZqYcffliBQCDS0aJWgygWS5Ys0ZQpUzR16lRt3rxZQ4YM0ahRo5Sfnx/paI3OqlWrNGHCBK1fv14rVqxQWVmZRowYoSNHjkQ6WqO3YcMG5eTkqFevXpGO0mgdPHhQgwYNUmxsrJYvX67PPvtMTz75pJo1axbpaI3WjBkz9Pvf/16zZ8/W1q1bNXPmTD3++ON69tlnIx0tajWIr5v+8Ic/VN++fTVnzpzyaV27dtXo0aOVnZ0dwWQ4cOCA0tLStGrVKg0dOjTScRqtw4cPq2/fvnr++ef1yCOPqHfv3po1a1akYzU699xzj9auXcsR1XrkJz/5idLT0/XHP/6xfNoVV1yhxMRELVy4MILJolfUH7EoKSnRxo0bNWLEiKDpI0aM0Lp16yKUCqd4vV5JUosWLSKcpHGbMGGCLr30Ul188cWRjtKoLVu2TFlZWbryyiuVlpamPn36aO7cuZGO1agNHjxY7733nvLy8iRJH3/8sdasWaNLLrkkwsmiV9hvQmbb119/Lb/fr/T09KDp6enp2r9/f4RSQTpxJ7w777xTgwcPVo8ePSIdp9FavHixNm3apA0bNkQ6SqO3c+dOzZkzR3feead++9vf6sMPP9Ttt9+u+Ph4XX/99ZGO1yjdfffd8nq96tKli9xut/x+vx599FFdc801kY4WtaK+WJzy3VuwG2Os3pYdoZs4caL+9a9/ac2aNZGO0mgVFBRo8uTJevfdd5WQkBDpOI1eIBBQVlaWHnvsMUlSnz599Omnn2rOnDkUiwhZsmSJXnzxRS1atEjdu3fXli1bNGXKFLVt21Y33HBDpONFpagvFi1btpTb7a5wdKKwsLDCUQyEz6RJk7Rs2TKtXr1a7dq1i3ScRmvjxo0qLCxUv379yqf5/X6tXr1as2fPVnFxsdxudwQTNi5t2rRRt27dgqZ17dpVr776aoQS4a677tI999yjq6++WpLUs2dPffnll8rOzqZY1FLUj7GIi4tTv379tGLFiqDpK1as0MCBAyOUqvEyxmjixIl67bXXtHLlSnXq1CnSkRq1iy66SJ988om2bNlS/sjKytK1116rLVu2UCrCbNCgQRW+fp2Xl6cOHTpEKBGOHj0qlyt4V+h2u/m66VmI+iMWknTnnXdq7NixysrK0oABA5STk6P8/HzddtttkY7W6EyYMEGLFi3SG2+8oeTk5PIjSR6PR02aNIlwusYnOTm5wviWpKQkpaamMu4lAu644w4NHDhQjz32mK666ip9+OGHysnJUU5OTqSjNVo//elP9eijj6p9+/bq3r27Nm/erKeeekrjx4+PdLToZRqI5557znTo0MHExcWZvn37mlWrVkU6UqMkqdLHvHnzIh0NJw0bNsxMnjw50jEarTfffNP06NHDxMfHmy5dupicnJxIR2rUfD6fmTx5smnfvr1JSEgwmZmZZurUqaa4uDjS0aJWg7iOBQAAqB+ifowFAACoPygWAADAGooFAACwhmIBAACsoVgAAABrKBYAAMAaigUAALCGYgEAAKyhWAAAAGsoFgAAwBqKBQAAsIZiAQAArPn/c574Aeve9KcAAAAASUVORK5CYII=", "text/plain": [ "
" ] @@ -1109,7 +1109,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 24, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:39.253460Z", @@ -1209,7 +1209,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 25, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:39.343663Z", @@ -1273,7 +1273,7 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 26, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:39.347845Z", @@ -1300,7 +1300,7 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 27, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:39.521211Z", @@ -1348,7 +1348,7 @@ }, { "cell_type": "code", - "execution_count": 86, + "execution_count": 28, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:39.525077Z", @@ -1396,7 +1396,7 @@ }, { "cell_type": "code", - "execution_count": 87, + "execution_count": 29, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:40.246659Z", @@ -1428,7 +1428,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 31, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:40.385219Z", @@ -1457,7 +1457,7 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 33, "metadata": { "ExecuteTime": { "end_time": "2024-04-13T11:07:41.739175Z", @@ -1465,6 +1465,14 @@ } }, "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 980 ms, sys: 6.38 ms, total: 987 ms\n", + "Wall time: 1 s\n" + ] + }, { "data": { "image/png": "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", @@ -1477,6 +1485,7 @@ } ], "source": [ + "%%time\n", "display_image(compress_image(load_rgb_image(IMAGE_FILE_PATH), 64, 25.5, random_state=2109))" ] }, diff --git a/cs3230/main.pdf b/cs3230/main.pdf index 4cb13c5b0e20e1ce429e6b51c43edae3c321140b..6e480ac52f2b7880796f123eb7a2dec2930d83ce 100644 GIT binary patch delta 38200 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 delta 35902 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 A-~a#s diff --git a/cs3230/main.typ b/cs3230/main.typ index 8598acb..90ff236 100644 --- a/cs3230/main.typ +++ b/cs3230/main.typ @@ -211,3 +211,19 @@ Proof by contradiction - Therefore $"LCS"(n, m) = "LCS"(n-1, m-1)::a_n$ If $a_n != b_m, "LCS"(n, m) = max("LCS"(n-1,m), "LCS"(n, m-1))$ + + += Tutorial 6 +Greedy vs DP + + += Lecture 7 Greedy +== DP Recap +- Express solutions recursively +- Small number(polynomial) of subproblems +- Huge overlap among subproblems, so recursive may take exponential time +- Compute recursive iteratively in bottom up fashion +== Greedy +Recast the problem so that only 1 subproblem needs to be solved at each step. + += Lecture 8 Amortized Analysis diff --git a/cs3230/pa3.pdf b/cs3230/pa3.pdf index 1ff8602899546b9406d7e6e0aecf1a9a7d1dc11e..bd4460b72976295f712c28ae1ed4e5747df899d8 100644 GIT binary patch delta 5444 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 Y;vIbO0X}F97>1H1)dm(6)G*ZiKQu8m$p8QV delta 5400 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 (fold_unfold_list_reverse_acc_nil V (list_append V acc (v :: nil))). + rewrite -> (fold_unfold_list_reverse_acc_nil V acc). + reflexivity. + - intro acc. + rewrite -> (fold_unfold_list_reverse_acc_cons V v' vs' (list_append V acc (v :: nil))). + rewrite -> (fold_unfold_list_reverse_acc_cons V v' vs' acc). + rewrite <- (IHvs' (v' :: acc)). + rewrite -> (fold_unfold_list_append_cons V v' acc). + reflexivity. +Qed. + Theorem list_reverse_alt_satisfies_the_specification_of_list_reverse : specification_of_list_reverse list_reverse_alt. Proof. unfold specification_of_list_reverse. intros append. unfold specification_of_list_append. - intros [S_append_nil S_append_cons]. + intro S_append. split. - intros V. unfold list_reverse_alt. @@ -970,59 +991,108 @@ Proof. - intros V v vs. unfold list_reverse_alt. rewrite -> (fold_unfold_list_reverse_acc_cons V v vs nil). - induction vs as [ | v' vs' IHvs' ]. - + rewrite -> (fold_unfold_list_reverse_acc_nil V (v :: nil)). - rewrite -> (fold_unfold_list_reverse_acc_nil V nil). - rewrite -> (S_append_nil V (v :: nil)). - reflexivity. - + rewrite -> (fold_unfold_list_reverse_acc_cons V v' vs' (v :: nil)). - rewrite -> (fold_unfold_list_reverse_acc_cons V v' vs' nil). - Search list_append. -Abort. + rewrite <- (fold_unfold_list_append_nil V (v :: nil)). + rewrite -> (about_list_reverse_acc_and_list_append V v vs nil). + (* FIXME: This feels pretty sketchy and I don't fully pass in arguments, so there might be some Coq magic here. *) + Check (there_is_at_most_one_list_append_function V append list_append S_append + list_append_satisfies_the_specification_of_list_append). + rewrite -> (there_is_at_most_one_list_append_function V append list_append S_append + list_append_satisfies_the_specification_of_list_append + (list_reverse_acc V vs nil) (list_append V nil (v :: nil))). + rewrite -> (nil_is_left_neutral_wrt_list_append V). + reflexivity. +Qed. +(* {END} *) -(* Theorem about_list_reverse_acc_and_list_append : *) -(* forall append : forall W : Type, list W -> list W -> list W, *) -(* specification_of_list_append append -> *) -(* forall (V: Type) *) -(* (acc acc' vs : list V), *) -(* list_reverse_acc V vs (append V acc acc') = append V (list_reverse_acc V vs acc) acc'. *) -(* Proof. *) -(* intros append [S_append_nil S_append_cons]. *) -(* intros V acc acc' vs. *) -(* revert acc' vs. *) -(* induction acc as [ | v acc'' IHacc'']. *) -(* - intros acc' vs. *) -(* rewrite -> (S_append_nil V acc'). *) -(* Check (fold_unfold_list_reverse_acc_nil). *) +(* {task_5_h_4} *) +Theorem there_is_at_most_one_list_reverse_function : + forall (V: Type) + (list_reverse_1 list_reverse_2 : forall V : Type, list V -> list V), + specification_of_list_reverse list_reverse_1 -> + specification_of_list_reverse list_reverse_2 -> + forall vs : list V, + list_reverse_1 V vs = list_reverse_2 V vs. +Proof. + intros V list_reverse_1 list_reverse_2. + intros S_list_reverse_1 S_list_reverse_2. + unfold specification_of_list_reverse in S_list_reverse_1. + assert (specification_of_list_append list_append) as S_list_append. + { exact list_append_satisfies_the_specification_of_list_append. } + assert (S_list_reverse_1 := (S_list_reverse_1 list_append S_list_append)). + assert (S_list_reverse_2 := (S_list_reverse_2 list_append S_list_append)). + destruct S_list_reverse_1 as [S_list_reverse_1_nil S_list_reverse_1_cons]. + destruct S_list_reverse_2 as [S_list_reverse_2_nil S_list_reverse_2_cons]. -(* reverse vs (append acc acc') = append (reverse vs acc) acc' *) -(* reverse vs (a :: b :: nil) = [reverse vs (a :: nil)] (b :: nil) *) -(* reverse abc nil -= reverse bc [a, nil] -= reverse c [b, a, nil] -= reverse nil [c, b, a, nil] - *) + intro vs. + induction vs as [ | v' vs' IHvs' ]. + - rewrite -> (S_list_reverse_2_nil V). + exact (S_list_reverse_1_nil V). + - rewrite -> (S_list_reverse_2_cons V v' vs'). + rewrite -> (S_list_reverse_1_cons V v' vs'). + rewrite -> IHvs'. + reflexivity. +Qed. +(* {END} *) +(* TODO The name of this isn't that great *) +(* {task_5_h_5} *) +Proposition list_reverse_and_list_reverse_alt_equiv : + forall (V : Type) + (vs : list V), + list_reverse V vs = list_reverse_alt V vs. +Proof. + intro V. + exact (there_is_at_most_one_list_reverse_function V list_reverse list_reverse_alt + list_reverse_satisfies_the_specification_of_list_reverse + list_reverse_alt_satisfies_the_specification_of_list_reverse). +Qed. +(* {END} *) -(* Lemma about_list_append : *) -(* forall append : forall W : list W -> list W -> list W, *) -(* specification_of_list_append append -> *) -(* (V : Type) *) -(* (v v' : V) *) -(* append V *) +(* TODO The name of this isn't that great *) + +(* {task_5_h_6} *) +Proposition list_reverse_alt_and_list_append_commute_with_each_other : + forall (V : Type) + (v1s v2s : list V), + list_append V (list_reverse_alt V v2s) (list_reverse_alt V v1s) = list_reverse_alt V (list_append V v1s v2s). +Proof. + intros V v1s v2s. + rewrite <- (list_reverse_and_list_reverse_alt_equiv V v2s). + rewrite <- (list_reverse_and_list_reverse_alt_equiv V v1s). + rewrite <- (list_reverse_and_list_reverse_alt_equiv V (list_append V v1s v2s)). + exact (list_reverse_and_list_append_commute_with_each_other V v1s v2s). +Qed. +(* {END} *) + +(* TODO The name of this isn't that great *) + +(* {task_5_h_7} *) +Proposition list_reverse_alt_and_list_length_commute_with_each_other : + forall (V : Type) + (vs : list V), + list_length V (list_reverse_alt V vs) = list_length V vs. +Proof. + intros V vs. + rewrite <- (list_reverse_and_list_reverse_alt_equiv V vs). + exact (list_reverse_and_list_length_commute_with_each_other V vs). +Qed. +(* {END} *) + +(* TODO The name of this isn't that great *) + +(* {task_5_h_8} *) +Proposition list_reverse_alt_is_involutory : + forall (V : Type) + (vs : list V), + list_reverse_alt V (list_reverse_alt V vs) = vs. +Proof. + intros V vs. + rewrite <- (list_reverse_and_list_reverse_alt_equiv V vs). + rewrite <- (list_reverse_and_list_reverse_alt_equiv V (list_reverse V vs)). + exact (list_reverse_is_involutory V vs). +Qed. -(* Definition there_is_at_most_one_list_reverse_function : *) -(* forall (V : Type) *) -(* (f g : forall V : Type, list V -> list V), *) -(* specification_of_list_reverse f -> *) -(* specification_of_list_reverse g -> *) -(* forall vs : list V, *) -(* f V vs = g V vs. *) -(* Proof. *) -(* intros V. *) -(* intros f g S_f S_g. *) -(* intros vs. *) (* ********** *) @@ -1133,7 +1203,8 @@ Proof. rewrite -> (fold_unfold_list_map_nil V V (fun v => v)). reflexivity. - intros V v vs. - rewrite -> (fold_unfold_list_map_cons V V (fun v => v) v vs). + unfold list_copy_as_list_map. + rewrite -> (fold_unfold_list_map_cons V V (fun a => a) v vs). reflexivity. Qed. @@ -1152,7 +1223,7 @@ Proposition list_map_and_list_length_commute_with_each_other : Proof. intros V W f vs. induction vs as [ | v' vs' IHvs' ]. - - rewrite ->(fold_unfold_list_map_nil V W f). + - rewrite ->(fold_unfold_list_map_nil V W f). rewrite -> (fold_unfold_list_length_nil V). exact (fold_unfold_list_length_nil W). - rewrite -> (fold_unfold_list_map_cons V W f v' vs'). @@ -1192,15 +1263,72 @@ Proof. h. Do list_map and list_reverse commute with each other and if so how? *) +Proposition list_map_and_list_reverse_commute_with_each_other : + forall (V W : Type) + (f : V -> W) + (vs : list V), + list_reverse W (list_map V W f vs) = list_map V W f (list_reverse V vs). +Proof. + intros V W f vs. + induction vs as [ | v vs' IHvs' ]. + - rewrite -> (fold_unfold_list_map_nil V W f). + rewrite -> (fold_unfold_list_reverse_nil V). + rewrite -> (fold_unfold_list_reverse_nil W). + rewrite -> (fold_unfold_list_map_nil V W f). + reflexivity. + - rewrite -> (fold_unfold_list_map_cons V W f v vs'). + rewrite -> (fold_unfold_list_reverse_cons W (f v) (list_map V W f vs')). + rewrite -> IHvs'. + rewrite -> (fold_unfold_list_reverse_cons V v vs'). + rewrite <- (fold_unfold_list_map_nil V W f). + rewrite <- (fold_unfold_list_map_cons V W f v nil). + Check list_map_and_list_append_commute_with_each_other. + rewrite -> (list_map_and_list_append_commute_with_each_other V W f (list_reverse V vs') (v :: nil)). + reflexivity. +Qed. + + + (* i. Do list_map and list_reverse_alt commute with each other and if so how? *) +Proposition list_map_and_list_reverse_alt_commute_with_each_other : + forall (V W : Type) + (f : V -> W) + (vs : list V), + list_reverse_alt W (list_map V W f vs) = list_map V W f (list_reverse_alt V vs). +Proof. + intros V W f vs. + Check list_reverse_and_list_reverse_alt_equiv. + rewrite <- (list_reverse_and_list_reverse_alt_equiv W (list_map V W f vs)). + rewrite <- (list_reverse_and_list_reverse_alt_equiv V vs). + exact (list_map_and_list_reverse_commute_with_each_other V W f vs). +Qed. + + (* j. Define a unit-test function for the map function and verify that your implementation satisfies it. *) +Fixpoint evenp (n : nat): bool := + match n with + | 0 => true + | S n' => match n' with + | 0 => false + | S n'' => evenp n'' + end + end. + +Definition test_list_map (candidate : forall V W : Type, (V -> W) -> list V -> list W) := + (eqb_list nat Nat.eqb (candidate nat nat (fun v => v) nil) nil) && + (eqb_list nat Nat.eqb (candidate nat nat (fun v => v) (1 :: 2:: 3 :: nil)) (1 :: 2 :: 3 :: nil)) && + (eqb_list nat Nat.eqb (candidate nat nat (fun v => S v) (1 :: 2:: 3 :: nil)) (2 :: 3 :: 4 :: nil)) && + (eqb_list bool Bool.eqb (candidate nat bool evenp (1 :: 2:: 3 :: nil)) (false :: true :: false :: nil)). + +Compute test_list_map list_map. + (* ********** *) (* A study of the polymorphic fold-right and fold-left functions: *) @@ -1242,6 +1370,7 @@ Definition specification_of_list_fold_left (fold_left : forall V W : Type, W -> a. Implement the fold-right function recursively. *) + Fixpoint list_fold_right (V W : Type) (nil_case : W) (cons_case : V -> W -> W) (vs : list V) : W := match vs with nil => @@ -1314,44 +1443,110 @@ Qed. d. Prove that each of your implementations satisfies the corresponding specification. *) +Theorem list_fold_left_satisfies_the_specification_of_fold_left : + specification_of_list_fold_left list_fold_left. +Proof. + unfold specification_of_list_fold_left. + split. + - exact fold_unfold_list_fold_left_nil. + - exact fold_unfold_list_fold_left_cons. +Qed. + +Theorem list_fold_right_satisfies_the_specification_of_fold_right : + specification_of_list_fold_right list_fold_right. +Proof. + unfold specification_of_list_fold_right. + split. + - exact fold_unfold_list_fold_right_nil. + - exact fold_unfold_list_fold_right_cons. +Qed. + (* e. Which function do foo and bar (defined just below) compute? *) -(* Definition foo (V : Type) (vs : list V) := list_fold_right V (list V) nil (fun v vs => v :: vs) vs. -*) -(* +Compute test_list_copy foo. + Definition bar (V : Type) (vs : list V) := list_fold_left V (list V) nil (fun v vs => v :: vs) vs. -*) + +Compute test_list_reverse bar. (* f. Implement the length function either as an instance of list_fold_right or as an instance of list_fold_left, and justify your choice. *) +Definition list_length_using_list_fold_left (V: Type) (vs : list V): nat := + list_fold_left V nat 0 (fun _ length => S (length)) vs. + +Compute test_list_length list_length_using_list_fold_left. + (* g. Implement the copy function either as an instance of list_fold_right or as an instance of list_fold_left, and justify your choice. *) +Definition list_copy_using_list_fold_right (V: Type) (vs : list V): (list V) := + list_fold_right V (list V) nil (fun v acc => v :: acc) vs. + +Compute test_list_copy list_copy_using_list_fold_right. + (* h. Implement the append function either as an instance of list_fold_right or as an instance of list_fold_left, and justify your choice. *) +Definition list_append_using_list_fold_right (V: Type) (v1s v2s : list V): (list V) := + list_fold_right V (list V) v2s (fun v acc => v :: acc) v1s. + +Compute test_list_append list_append_using_list_fold_right. (* i. Implement the reverse function either as an instance of list_fold_right or as an instance of list_fold_left, and justify your choice. *) +Definition list_reverse_using_list_fold_left (V: Type) (vs : list V): (list V) := + list_fold_left V (list V) nil (fun v acc => v :: acc) vs. + +Compute test_list_reverse list_reverse_using_list_fold_left. (* j. Implement the map function either as an instance of list_fold_right or as an instance of list_fold_left, and justify your choice. *) +Definition list_map_using_list_fold_right (V W: Type) (f : V -> W) (vs : list V): (list W) := + list_fold_right V (list W) nil (fun v w => (f v) :: w) vs. + +Compute test_list_map list_map_using_list_fold_right. + (* k. Implement eqb_list either as an instance of list_fold_right or as an instance of list_fold_left, and justify your choice. *) +(* FIXME: This feels very hacky, because of the match result with, but I have no idea how to consider if the first list finishes iteration, +then the result should be false without the match case outside of the fold function + *) + +Definition eqb_list_using_list_fold_right (V : Type) (eqb_V: V -> V -> bool) (v1s v2s : list V) := + let result := list_fold_left V + (bool * list V) + (true, v2s) + (fun v1 acc => + match acc with + | (false, v2::v2s') => (false, v2s') + | (false, nil) => (false, nil) + | (true, v2::v2s') => (eqb_V v1 v2, v2s') + | (true, nil) => (false, nil) + end) + v1s in + match result with + | (false, _) => false + | (true, nil) => true + | _ => false + end. + +(* TODO Write testcases *) + + (* l. Implement list_fold_right as an instance of list_fold_left, using list_reverse. *) diff --git a/cs3234/labs/term-project.v b/cs3234/labs/term-project.v index f5658d2..1ad6de2 100644 --- a/cs3234/labs/term-project.v +++ b/cs3234/labs/term-project.v @@ -724,6 +724,26 @@ Definition specification_of_run (run : target_program -> expressible_value) := fetch_decode_execute_loop bcis nil = KO s -> run (Target_program bcis) = Expressible_msg s). + +Theorem there_is_at_most_one_run_function : + forall (f g : target_program -> expressible_value), + specification_of_run f -> + specification_of_run g -> + forall (t: target_program), + f t = g t. +Proof. + intros f g. + unfold specification_of_run. + intros S_f S_g [bcis]. + case (fetch_decode_execute_loop bcis nil) as [ds | s] eqn:H_fdel. + - destruct (S_f fetch_decode_execute_loop fetch_decode_execute_loop_satifies_the_specification) as [S_f_nil _]. + destruct (S_g fetch_decode_execute_loop fetch_decode_execute_loop_satifies_the_specification) as [S_g_nil _]. + case ds as [ | n ds' ] eqn:H_ds. + + rewrite -> (S_g_nil bcis H_fdel). + exact (S_f_nil bcis H_fdel). + + Check (S_f_nil bcis). + + (* Task 4: a. time permitting, prove that the definition above specifies at most one function; b. implement this function; and diff --git a/ma1522/1522 Notes.pdf b/ma1522/1522 Notes.pdf index 2129b6f2a1845210350b9500e8595d4326d9d5b7..4d5211797f0cbde8eb0a0a7b50a43608f60908db 100644 GIT binary patch literal 163717 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 A7ytkO delta 115361 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 z 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�?xUfR1AncY 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 JF$Hm${{tZ;f8+oF diff --git a/ma1522/1522 Notes.tex b/ma1522/1522 Notes.tex index 503d854..3e6d226 100644 --- a/ma1522/1522 Notes.tex +++ b/ma1522/1522 Notes.tex @@ -29,6 +29,8 @@ % ------------------------------------------------------------------------------ +\layout* + \section{Linear Systems} \hr \input{ch_01.tex} diff --git a/ma1522/ch_03.tex b/ma1522/ch_03.tex index b98d1aa..a042d68 100644 --- a/ma1522/ch_03.tex +++ b/ma1522/ch_03.tex @@ -3,10 +3,456 @@ \begin{defn}[Vector Definitions]\ \\ \begin{itemize} - \item $n$-vector : $v = (v_1, v_2, ..., v_n)$ + \item $n$-vector : $v = (v_1, v_2, \dots, v_n)$ \item $\vec{PQ} // \vec{P'Q'} \implies \vec{PQ} = \vec{P'Q'}$ \item $|| \vec{PQ} || = \sqrt{(a_2 - a_1)^2 + (b_2 - b_1)^2}$ \item $u + v = (u_1 + v_1, u_2 + v_2), u = (u_1, u_2), v = (v_1, v_2)$ \item $n$-vector can be viewed as a row matrix / column matrix + \item $\mathbb{R}^n = \left\{ (v_1, v_2, \dots, v_n) | v_1, v_2, \dots, v_n \right\} \in \mathbb{R}$, Euclidean $n$-space \end{itemize} \end{defn} + +A linear system is given in implicit form. + +$\begin{cases} + a_{11}x_1 + a_{12}x_2 + \dots + a_{1n}x_n = b_1 \\ + a_{21}x_1 + a_{22}x_2 + \dots + a_{2n}x_n = b_2 \\ + \vdots \\ + a_{m1}x_1 + a_{m2}x_2 + \dots + a_{mn}x_n = b_m \\ +\end{cases}$ + +and its general solution is in the explicit form + +\begin{defn} Straight lines in $\mathbb{R}^2$ + \begin{itemize} + \item Implicit: $\left\{(x,y)|ax+by=c\right\}$ + \item Explicit: (Equation Form) + \begin{itemize} + \item If $a \neq 0$, then $\left\{\left(\dfrac{c-bt}{a},t\right)| t \in \mathbb{R}\right\}$ + \item If $b \neq 0$, then $\left\{\left(s,\dfrac{c-as}{b}\right)| s \in \mathbb{R}\right\}$ + \end{itemize} + \item Explicit: (Vector form) + \begin{itemize} + \item A point on the line $(x_0, y_0)$ and its direction vector $(a,b)\neq 0$ + \item $(x_0, y_0) + t(a,b)$ + \item $\left\{(x_0 + ta, y_0 + tb|t \in \mathbb{R}\right\}$ + \end{itemize} + \end{itemize} +\end{defn} + +\begin{defn} Planes in $\mathbb{R}^3$ + \begin{itemize} + \item Implicit: $\left\{(x,y,z)|ax+by+cz=d\right\}$ + \item Explicit: (Equation Form) + \begin{itemize} + \item If $a \neq 0$, then $\left\{\left(\dfrac{c-bs-ct}{a},s,t\right)| s,t \in \mathbb{R}\right\}$ + \item If $b \neq 0$, then $\left\{\left(s,\dfrac{d-as-ct}{b},t\right)| s,t \in \mathbb{R}\right\}$ + \item If $c \neq 0$, then $\left\{\left(s,t,\dfrac{d-as-bt}{c}\right)| s,t \in \mathbb{R}\right\}$ + \end{itemize} + \item Explicit: (Vector Form) + \begin{itemize} + \item $\left\{(x_0, y_0, z_0) + s(a_1, b_1,c_1) + t(a_2,b_2,c_2)|s,t \in \mathbb{R}\right\}$ + \item $(a_1,b_1,c_1)$ and $(a_2, b_2, c_2)$ are non-parallel vectors, parallel to the plane + \end{itemize} + \end{itemize} +\end{defn} + +Example: Plane is given by $\left\{(1+s-t, 2+s-2t,4-s-3t)|s,t\in\mathbb{R}\right\}$ +\begin{itemize} + \item Let $x=1+s-t,y=2+s-2t,z=4-s-3t$ + \item $\begin{amatrix}{2} + 1&-1&x-1\\ + 1&-2&y-2\\ + -1&-3&z-4 + \end{amatrix} \to \begin{amatrix}{2} + 1&-1&x-1\\ + 0&-1&-x + y-1\\ + 0&0&5x-4y+z-1 + \end{amatrix}$ + \item For system to be consistent, $5x-4y+z = 1$ + \item Implicit: $\left\{(x,y,z)|5x-4y+z=1\right\}$ +\end{itemize} + +\begin{defn} Lines in $\mathbb{R}^3$ is the intersection of 2 non-parallel planes + \begin{itemize} + \item Implicit: $\left\{(x,y,z) | a_1x + b_1y + c_1z = d_1 \text{ and } a_2x+b_2y+c_2z=d_2\right\}$ + \item Explicit $\left\{(x_0 + ta, y_0 + tb, z_0 + tc) | t \in \mathbb{R}\right\}$ + \end{itemize} +\end{defn} + +It is easy to go from implicit to explicit form, by just solving the linear equation. To have an implicit form of line, we need to find 2 non parallel planes $a_ix + b_iy+c_iz = d_i (i=1,2)$ containing the line + +Example: Line is $\{(t-2, -2t+3,t+1) | t \in \mathbb{R}\}$. + +\begin{itemize} + \item $t=x+2, -2t = y-3, t=z-1$ + \item $\begin{amatrix}{1} + 1&x+2\\ + -2&y-3\\ + 1&z-1 + \end{amatrix} \to \begin{amatrix}{1} + 1&x+2\\ + 0&2x + y + 1\\ + 0&-x + z - 3 + \end{amatrix}$ + \item Implicit Form: $\{(x,y,z) | 2x+y+1 = 0 \text{ and } -x+z-3 = 0$ + +\end{itemize} + + +\subsection{Linear Combinations and Linear Spans} + +\begin{defn} Linear Combination + \begin{itemize} + \item Linear combination of $v_1, v_2, \dots, v_k$ has the form + \item $c_1v_1 + c_2v_2 + \dots + c_kv_k, c_1,c_2,\dots,c_k \in \mathbb{R}$ + \item $0$ is always a linear combination of $v_1, v_2, \dots, v_k$ + \item to check if $v$ is a linear combination of $v_1, v_2, v_3$, solve for $(v_1, v_2, v_3 | v)$ and check if the REF is consistent + \end{itemize} +\end{defn} + +\begin{defn} Linear Span + \begin{itemize} + \item Let $S = \{v_1, v_2, \dots, v_k\}$ be a subset of $\mathbb{R}^n$ + \item Set of all linear combinations of $v_1, v_2,\dots,v_k$ + \item $\{c_1v_1+ c_2v_2+\dots+c_kv_k | c_1,c_2,\dots,c_k \in \mathbb{R}$ + \item is called the Span of $S$, $\text{Span}(S)$ + \end{itemize} +\end{defn} + +Example: + +\begin{itemize} + \item Let $S = \{(2,1,3), (1,-1,2),(3,0,5)\}$ + \subitem $(3,3,4) \in \text{Span}(S), (1,2,4) \not\in \text{Span}(S)$ + \item Let $S = \{(1,0,0), (0,1,0),(0,0,1)\}$ + \subitem for any $(x, y, z) \in \mathbb{R}^3, (x,y,z) = x(1,0,0) + y(0,1,0)+z(0,0,1)$ + \subitem Therefore, $\text{Span}(S) = \mathbb{R}^3$ +\end{itemize} + +More Examples: + + +\begin{itemize} + \item Let $S = \{(1,0,0,-1),(0,1,1,0)\}$ be subset of $\mathbb{R}^4$ + \begin{itemize} + \item $a(1,0,0-1) + b(0,1,1,0) = (a,b,b,-a), (a,b \in \mathbb{R})$ + \item span(S) = $\{(a,b,b,-a) | a,b \in \mathbb{R}$ + \end{itemize} + \item Let $V = \{(2a+b,a,3b-a) | a,b \in \mathbb{R} \} \subseteq \mathbb{R}^3$ + \begin{itemize} + \item $a(2a+b,a,3b-a) = a(2,1,-1) + b(1,0,3), (a,b \in \mathbb{R})$ + \item span(V) = $\{(a,b,b,-a) | a,b \in \mathbb{R}$ + \item $V = \text{span}\{(2,1,-1),(1,0,3)\}$ + \end{itemize} + \item Prove that span$\{(1,0,1),(1,1,0),(0,1,1)\} = \mathbb{R}^3$ + \begin{itemize} + \item It is clear span$\{(1,0,1),(1,1,0),(0,1,1)\} \subseteq \mathbb{R}^3$ + \item let $(x,y,z) \in \mathbb{R}^3$. Show that there exists $a,b,c \in \mathbb{R}$ s.t. + \begin{itemize} + \item $(x,y,z) = a(1,0,1) + b(1,1,0) + c(0,1,1)$ + \item Do gaussian Elimination on $(1,0,1),(1,1,0),(0,1,1) | (x,y,z)$ + \item if the system is always consistent then span$\{\dots\} = \mathbb{R}$ + \item IF the system is consistent $\iff$ condition, then $\not \subseteq \mathbb{R}^3$ + \end{itemize} + \end{itemize} +\end{itemize} + +\begin{defn} Criterion for Span$(S) = \mathbb{R}^n$ + \begin{itemize} + \item Let $S = \{v_1,v_2,\dots,\v_k\} \subseteq \mathbb{R}^n$ + \item for an arbitrary $v \in \mathbb{R}^n$, we shall check the consistency of the equation $c_1v_1 + v_2v_2 + \dots + c_kv_k = v$ + \item View $v_j$ as column vectors, $A = \left(v_1\ v_2\ \dots\ v_k\right)$ + \subitem The equation is $Ax=v$ + \item Let $R$ be a REF of $A$ + \subitem $(A | v) \to (R | v')$ + \subitem Since $v \in \mathbb{R}^n$ is arbitrary, $v' \in \mathbb{R}^n$ is also arbitrary + \subitem span$(S) = \mathbb{R}^n \iff Ax = v$ is consistent for every $v \in \mathbb{R}^n$ + \subitem span$(S) = \mathbb{R}^n \iff Rx = v'$ is consistent for every $v' \in \mathbb{R}^n$ + \subitem span$(S) = \mathbb{R}^n \iff$ rightmost column of $(R | v')$ is non pivot for any $v' \in \mathbb{R}^n$ + \subitem span$(S) = \mathbb{R}^n \iff$ All rows in $R$ are nonzero + \end{itemize} + + TLDR: + + \begin{enumerate} + \item Let $S = \{v_1,v_2,\dots,\v_k\} \subseteq \mathbb{R}^n$ + \item View $v_j$ as column vectors, $A = \left(v_1\ v_2\ \dots\ v_k\right)$ + \item Find REF $R$ of $A$ + \subitem If $R$ has zero row, then span$(S) \neq \mathbb{R}^n$ + \subitem If $R$ has no zero row, then span$(S) = \mathbb{R}^n$ + \end{enumerate} + + Other rules + + \begin{itemize} + \item $\mathbb{R}^n$ cannot be spanned by $n-1$ vectors + \subitem $\mathbb{R}^3$ cannot be spanned by 2 vectors + \end{itemize} +\end{defn} + +\begin{defn} Properties of Linear Spans +\begin{itemize} + \item $0 \in $span(S), span(S) $\neq \emptyset$ + \item $v \in $span(S) and $c \in \mathbb{R} \to cv \in$ span(S). + \item $u \in$ span(S) and $v \in$ span(S) $\to u+v \in$ span(S). +\end{itemize} + +Check if $\text{span}(S_1) \subseteq \text{span}S_2$ +\begin{itemize} + \item Let $S = \{v_1,v_2,\dots,\v_k\} \subseteq \mathbb{R}^n$ + \item View $v_j$ as column vectors, $A = \left(v_1\ v_2\ \dots\ v_k\right)$ + \item Check whether $Ax = u$, where $u$ is one of the vectors in $S_1$ + \subitem If $Ax=u$ is consistent, u $\subseteq$ span(S) + \subitem If $Ax=u$ is inconsistent, u $\not\subseteq$ span(S) +\end{itemize} +\end{defn} + +\subsection{Subspaces} + + +\begin{defn} Subspaces + \begin{itemize} + \item Let $V \subseteq \mathbb{R}^n$. Then $V$ is the subspace of $\mathbb{R}^n$ + \item If there exists $v_1, \dots, v_k \in \mathbb{R}^n$, then V is the subspace spanned by $S = \{v_1, \dots, v_k\}$. + \end{itemize} + + To validate if $V$ is subspace of $\mathbb{R}^n$ + \begin{itemize} + \item $0 \in V$ + \item $c \in \mathbb{R}$ and $v \in V \to cv \in V$ + \item $u \in V$ and $v \in V \to u+v \in V$ + \end{itemize} +\end{defn} + +\begin{defn} Subspaces of $\mathbb{R}^1,\mathbb{R}^2,\mathbb{R}^3$ +\end{defn} + +\begin{defn} Solution Space + +\end{defn} + + +\subsection{Linear Independence} + +\begin{defn} Linear Independence + \begin{itemize} + \item Let $S=\{v_1,\dots,v_k\}$ be a subset of $\mathbb{R}^n$ + \item Equation $c_1v_1 + \dots + c_kv_k = 0$ has trivial solution $c_1 = \dots = c_k = 0$ + \item If equation has non-trivial solution, then + \begin{itemize} + \item $S$ is a linearly dependent set + \item $v_1, \dots, v_k$ is a linearly dependent set + \item Exists $c_1,\dots,c_k \in \mathbb{R}$ not all zero s.t. $c_1v_1 + \dots + c_kv_k = 0$ + \end{itemize} + \item If equation has only the trivial solution, then + \begin{itemize} + \item S is linearly independent set + \item $v_1,\dots,v_k$ are linearly independent + \end{itemize} + \end{itemize} + + How do you calculate whether trivial or non trivial? Solve for $Ax = 0$, perform gaussian elimination and identify if non-pivot columns exist. If there are non-pivot columns, then there are infintely many solutions, and thus, linearly dependent. If all columns are pivot, then system has only trivial solution, and thus, linearly independent set. +\end{defn} + +\begin{defn} Properties of Linear Independence \\ + Let $S_1$ and $S_2$ be finite subsets of $\mathbb{R}^n$ s.t. $S_1 \subseteq S_2$ + \begin{itemize} + \item $S_1$ linearly dependent $\to$ $S_2$ linearly dependent + \item $S_2$ linearly independent $\to$ $S_1$ linearly independent + \end{itemize} + + Let $S = \{v_1, v_2, \dots, v_k \} \subseteq \mathbb{R}^n, k \geq 2$ + \begin{itemize} + \item $S$ is linearly dependent $\iff v_i$ is a linear combination of other vectors in $S$ + \item S is linearly independent $\iff$ no vector in $S$ can be written as a linear combination of other vectors + \end{itemize} + + Suppose $S = \{v_1, v_2, \dots, v_k\}$ is linearly dependent + \begin{itemize} + \item Let $V = \text{span}(S)$ + \item If $v_i \in S$ is a linear combination of other vectors, remove $v_i$ from $S$. + \item Repeat until we obtain linearly independent set $S'$. + \item span$(S') = V$ and $S'$ has no redundant vector to span $V$. + \end{itemize} + + Let $S = \{v_1, v_2, \dots, v_k \} \subseteq \mathbb{R}^n$ be linearly independent + + \begin{enumerate} + \item Suppose span$(S) \neq \mathbb{R}^n$ + \item pick $v_{k+1} \in \mathbb{R}^n$ but $v_{k+1} \not\in$ span$(S) \neq \mathbb{R}^n$ + \item $\{v_1, ..., v_k, v_{k+1}\}$ is linearly independent + \item Repeat until $\{v_1, ..., v_k, ..., v_m\}$ is linearly independent and span$(S') = \mathbb{R}^n$ + \end{enumerate} + \begin{itemize} + \item If $m > n$ then $S$ is linearly dependent + \item If $m < n$, then $S$ cannot span $\mathbb{R}^n$ + \item If $m = n$, then $S$ is linearly independent and spans $\mathbb{R}^n$ + \end{itemize} +\end{defn} + +\begin{defn} Vector Spaces + \begin{itemize} + \item $V$ is vector space if $V$ is subspace of $\mathbb{R}^n$ + \item $W$ and $V$ are vector space such that $W \subseteq V$, $W$ is a subspace of $V$ + \end{itemize} +\end{defn} + +\subsection{Bases} +\subsubsection{Definition} +$S$ is basis for $V$ if $S$ is +\begin{enumerate} + \item Linearly Independent + \item Span$(S) = V$ +\end{enumerate} + +\begin{note} +To show that Vector $S$ is a basis vector for $\mathbb{R}^n$, show that $S$ is linearly independent. + +$S \xrightarrow[\text{Elimination}]{\text{Gaussian}} R$ +\begin{enumerate} + \item Linear Independence + \begin{enumerate} + \item Show All columns are pivot. $\therefore$ system has only trivial solution + \item $S$ is linearly independent + \end{enumerate} + \item Span$(S) = \mathbb{R}^n$ + \begin{enumerate} + \item REF has no zero row + \item span$(S) = \mathbb{R}^n$ + \end{enumerate} + \item We can conclude $S$ is basis for $\mathbb{R}^n$ +\end{enumerate} + +\end{note} + + +Basis for Vector space $V$ contains +\begin{itemize} + \item Smallest possible number of vectors that spans $V$ + \item largest possible number of vectors that is linearly independent $V$ +\end{itemize} + +\subsubsection{Coordinate Vector} +\begin{theorem} Coordinate Vectors + + \begin{itemize} + \item Let $S = \{v_1, \dots, v_k \}$ be a subset of vector space $V$ + + $S$ is basis for $V$ $\iff$ every vector in $V$ can be written as $v = c_1v_1 + \dots + c_kv_k$ + \item Let $S = \{v_1, \dots, v_k \}$ be a basis for vector space $V$ + + For every $v \in V$, there exists a unique $c_1, \dots, c_k \in \mathbb{R}$ such that $v = c_1v_1 + \dots + c_kv_k$ + \end{itemize} + + $(v)_S = (c_1, \dots, c_k)$ is the coordinate vector of $v$ relative to $S$. + + Column vector $[v]_S = \begin{pmatrix}c_1\\c_2\\\vdots\\c_k\end{pmatrix}$ is also coordinate vector + + Let $a = (v_1 \; \dots \; v_k)$. Then $[v]_S$ is the unique solution to $Ax = v$. We can write $A[v]_S = v$ +\end{theorem} + +\noindent To calculate Coordinate vector for $v$ relative to $S$, then view each vector in $S$ as a column vector, and let $A = (v_1 \: \dots \: v_k)$ and solve for $Ax=v$ + +\begin{note} Criterion for bases + + Let $T = \{v_1, \dots, v_k\}$ be subset of $\mathbb{R}^n$ + \begin{itemize} + \item $k > n$, then $T$ is linearly dependent + \item $k < n$, then span$(T) \neq \mathbb{R}^n$ + \end{itemize} + If $T$ is basis for $\mathbb{R}^n$, then $k=n$ + + Let $V$ be a vector space having basis $S$ with $|S| = N$ + \begin{itemize} + \item Let $T = \{v_1, \dots, v_k\}$be subset of $V$ + \item if $k > n$, then $\{(v_1)_S, \dots, (v_k)_S\}$ is linearly dependent on $\mathbb{R}^n \therefore T$ is linearly dependent on $V$ + \item if $k < n$, then span$(\{(v_1)_S, \dots, (v_k)_S\}) \neq \mathbb{R}^n \therefore$ span$(T) \neq V$ + \end{itemize} + If $T$ is a basis for $V$, then $|T| = n = |S|$. If $S$ and $T$ are bases for vector space $V$ then $|S| = |T|$ +\end{note} + +\subsection{Dimensions} +Let $V$ be a vector space and $S$ be basis for $V$. $\dim(V) = |S|$ + +\subsubsection{Examples} +\begin{itemize} + \item $\varnothing$ is basis for $\{0\}$, $\dim(\{0\}) = |\varnothing| = 0$ + \item $\mathbb{R}^n$ has standard basis $E = \{e_1,\dots,e_n\}, \dim(\mathbb{R}^n) = n$ +\end{itemize} + +\subsubsection{Dimension of Solution Space} + +Let $Ax=0$ be a homogeneous linear system. + +Solution set of $Ax = 0$ is a vector space $V$. + +Let $R$ be REF of $A$. The \# non pivot columns = \# arbitrary params = dimension of $V$. + +\subsubsection{Properties of Dimensions} + +\begin{theorem} Dimensions + + Let $S$ be a subset of vector space $V$, the following are equivalent + \begin{itemize} + \item $S$ is basis for $V$ + \item $S$ is linearly independent and $|S| = \dim(V)$ + \item $S$ spans $V$ and $|S| = \dim(V)$ + \end{itemize} + + Let $U$ be subspace of $V$. Then $\dim(U) \leq \dim(V)$ + \begin{itemize} + \item $U = V \iff \dim(U) = \dim(V)$ + \item $U \neq V \iff \dim(U) < \dim(V)$ + \end{itemize} + + Let $A$ be a square matrix of order $n$ + \begin{itemize} + \item $A$ is invertible + \item $Ax=b$ has unique solution + \item $Ax=0$ has only trivial solution + \item RREF of $A$ is $I_n$ + \item $\det(A) \neq 0$ + \item rows of $A$ form basis for $\mathbb{R}^n$ + \item columns of $A$ form basis for $\mathbb{R}^n$ + \end{itemize} +\end{theorem} + +\subsection{Transition Matrices} +\begin{defn} Let $V$ be vector space and + $S = \{u_1, \dots, u_k\}$ and $T$ be bases for $V$. + \begin{itemize} + \item $P = ([u_1]_T \dots [u_k]_T)$ is the transition matrix from $S$ to $T$ + \item $P[w]_S = [w]_T,$ $\forall w \in V$ + \end{itemize} + + Let $S_1, S_2, S_3$ be bases for vector space $V$ + \begin{itemize} + \item $P$ be transition matrix from $S_1$ to $S_2$ + \item $Q$ be transition matrix from $S_2$ to $S_3$ + \item $[v]_{S_1} \xrightarrow{P} [v]_{S_2} \xrightarrow{Q} [v]_{S_3}$ + \item $[v]_{S_3} = Q[v]_{S_2} = QP[v]_{S_1}$ + \item $QP$ is transition matrix from $S_1$ to $S_3$ + \end{itemize} + + Let $S, T$ be bases for vector space $V$ + \begin{itemize} + \item $P$ be transition matrix from $S$ to $T$ + \item $P$ is invertible + \item $P^{-1}$ is transition matrix from $T$ to $S$ + \end{itemize} +\end{defn} + +To calc transition matrices for $S$ and $T$, given that $S = \{(1, 1), (1, -1)\} = \{u_1, u_2\}, T = \{(1, 0), (1, 1) \} = \{v_1, v_2\}$ + +$ (v_1 v_2 | u_1 u_2) = +\left(\begin{array}{@{}*{2}{c}|c|c@{}} + 1 & 1 & 1 & 1 \\ + 0 & 1 & 1 & 0 \\ +\end{array}\right) \xrightarrow{R_1 - R_2} +\left(\begin{array}{@{}*{2}{c}|c|c@{}} + 1 & 0 & 0 & 2 \\ + 0 & 1 & 1 & -1 \\ +\end{array}\right) $ + +Transition matrix from $S$ to $T$: $P = \begin{pmatrix}0 & 2 \\ 1 & -1\end{pmatrix}$ diff --git a/ma1522/preamble.tex b/ma1522/preamble.tex index b9c2723..c5fe6cc 100644 --- a/ma1522/preamble.tex +++ b/ma1522/preamble.tex @@ -3,6 +3,7 @@ \usepackage{graphicx} \usepackage{setspace} \usepackage{geometry} +\usepackage{layout} \usepackage{float} \usepackage{hyperref} \usepackage[utf8]{inputenc} @@ -48,12 +49,12 @@ \setstretch{1.2} \geometry{ - textheight=9in, - textwidth=5.5in, - top=1in, + top=1cm, headheight=12pt, headsep=25pt, - footskip=30pt + footskip=30pt, + left=1.5cm, + right=1.5cm } \newcommand\hr{