Spaces:
Running
Running
File size: 6,327 Bytes
854c114 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 | {
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ML Practice Series: Module 16 - Neural Networks (Deep Learning Foundations)\n",
"\n",
"Welcome to Module 16! We are entering the world of **Deep Learning**. We'll start with the building block of all neural networks: the **Perceptron** and the **Multi-Layer Perceptron (MLP)**.\n",
"\n",
"### Resources:\n",
"Visit your hub's **[Mathematics for Data Science](https://aashishgarg13.github.io/DataScience/math-ds-complete/)** section to review Calculus (Backpropagation/Partial Derivatives) which is the engine of Deep Learning.\n",
"\n",
"### Objectives:\n",
"1. **Neural Network Architecture**: Inputs, Hidden Layers, and Outputs.\n",
"2. **Activation Functions**: Sigmoid, ReLU, and Softmax.\n",
"3. **Training Process**: Forward Propagation & Backpropagation.\n",
"4. **Optimization**: Stochastic Gradient Descent (SGD) and Adam.\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1. Setup\n",
"We will use the **MNIST** dataset (Handwritten digits) but via Scikit-Learn's easy-to-use MLP interface for this foundation module."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"from sklearn.datasets import fetch_openml\n",
"from sklearn.neural_network import MLPClassifier\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.metrics import classification_report, confusion_matrix\n",
"\n",
"# Load digits (MNIST small version)\n",
"X, y = fetch_openml('mnist_784', version=1, return_X_y=True, as_frame=False, parser='auto')\n",
"\n",
"# Use a subset for speed in practice\n",
"X = X[:5000] / 255.0\n",
"y = y[:5000]\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
"print(\"Training Shape:\", X_train.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2. Multi-Layer Perceptron (MLP)\n",
"\n",
"### Task 1: Building the Network\n",
"Configure an `MLPClassifier` with:\n",
"1. Two hidden layers (size 50 each).\n",
"2. 'relu' activation function.\n",
"3. 'adam' solver.\n",
"4. Max 20 iterations to start."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# YOUR CODE HERE\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<details>\n",
"<summary><b>Click to see Solution</b></summary>\n",
"\n",
"```python\n",
"mlp = MLPClassifier(hidden_layer_sizes=(50, 50), max_iter=20, alpha=1e-4,\n",
" solver='adam', verbose=10, random_state=1, \n",
" learning_rate_init=.1)\n",
"mlp.fit(X_train, y_train)\n",
"```\n",
"</details>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3. Detailed Evaluation\n",
"\n",
"### Task 2: Confusion Matrix\n",
"Neural networks can often confuse similar digits (like 4 and 9). Plot the confusion matrix to see where your model is struggling."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import seaborn as sns\n",
"\n",
"# YOUR CODE HERE\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"<details>\n",
"<summary><b>Click to see Solution</b></summary>\n",
"\n",
"```python\n",
"y_pred = mlp.predict(X_test)\n",
"cm = confusion_matrix(y_test, y_pred)\n",
"plt.figure(figsize=(10,7))\n",
"sns.heatmap(cm, annot=True, fmt='d', cmap='Oranges')\n",
"plt.xlabel('Predicted')\n",
"plt.ylabel('Actual')\n",
"plt.show()\n",
"```\n",
"</details>"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"--- \n",
"### Congratulations! \n",
"You've trained your first Neural Network. This is the foundation for Computer Vision and NLP.\n",
"Next: **Reinforcement Learning**."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.12.7"
}
},
"nbformat": 4,
"nbformat_minor": 4
} |