diff --git a/ai/projects/data-science/digits-classifier/digits_classification.ipynb b/ai/projects/data-science/digits-classifier/digits_classification.ipynb
new file mode 100644
index 0000000..88f6c6d
--- /dev/null
+++ b/ai/projects/data-science/digits-classifier/digits_classification.ipynb
@@ -0,0 +1,595 @@
+{
+ "nbformat": 4,
+ "nbformat_minor": 0,
+ "metadata": {
+ "colab": {
+ "provenance": [],
+ "authorship_tag": "ABX9TyPF5h54lqDRIvbTTQtKPQew",
+ "include_colab_link": true
+ },
+ "kernelspec": {
+ "name": "python3",
+ "display_name": "Python 3"
+ },
+ "language_info": {
+ "name": "python"
+ }
+ },
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "metadata": {
+ "id": "view-in-github",
+ "colab_type": "text"
+ },
+ "source": [
+ ""
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "### Loading and Visualizing the digits data"
+ ],
+ "metadata": {
+ "id": "D23EYE1sQ38f"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "import matplotlib\n",
+ "import matplotlib.pyplot as plt\n",
+ "import seaborn as sns"
+ ],
+ "metadata": {
+ "id": "BgGNtCcDRsf_"
+ },
+ "execution_count": 35,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 1,
+ "metadata": {
+ "id": "X0dBo_x7QpTL"
+ },
+ "outputs": [],
+ "source": [
+ "from sklearn.datasets import load_digits"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "digits = load_digits()"
+ ],
+ "metadata": {
+ "id": "X9G7lQioRCp7"
+ },
+ "execution_count": 2,
+ "outputs": []
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "digits.images.shape"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/"
+ },
+ "id": "r3Pa-FiWRHMx",
+ "outputId": "417c511a-5d76-4682-ec6f-8ee678b87817"
+ },
+ "execution_count": 3,
+ "outputs": [
+ {
+ "output_type": "execute_result",
+ "data": {
+ "text/plain": [
+ "(1797, 8, 8)"
+ ]
+ },
+ "metadata": {},
+ "execution_count": 3
+ }
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "source": [
+ "The images data is a three-dimensional array: 1,797 samples, each consisting of an 8×8 grid of pixels. Let's visualize the first hundereds of these:"
+ ],
+ "metadata": {
+ "id": "Ih0uhIQtRV6o"
+ }
+ },
+ {
+ "cell_type": "code",
+ "source": [
+ "fig, axes = plt.subplots(10, 10, figsize=(8, 8),\n",
+ " subplot_kw={'xticks': [], 'yticks': []},\n",
+ " gridspec_kw=dict(hspace=0.1, wspace=0.1))\n",
+ "\n",
+ "for i, ax in enumerate(axes.flat):\n",
+ " ax.imshow(digits.images[i], cmap='binary', interpolation='nearest')\n",
+ " ax.text(0.05, 0.05, str(digits.target[i]), transform=ax.transAxes,\n",
+ " color='green')"
+ ],
+ "metadata": {
+ "colab": {
+ "base_uri": "https://localhost:8080/",
+ "height": 653
+ },
+ "id": "JBfppAlXRdC3",
+ "outputId": "1cfdc78d-0a94-4bb5-e6e0-de71d90dbf07"
+ },
+ "execution_count": 8,
+ "outputs": [
+ {
+ "output_type": "display_data",
+ "data": {
+ "text/plain": [
+ "