{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "4Vhg6pn2uDlW" }, "source": [ "# Dataset des 2 lunes\n", "\n", "(Avec un nouvel affichage plus joli, merci Arthur !)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Hw8rHiTKuHL3" }, "outputs": [], "source": [ "import numpy as np\n", "from sklearn.model_selection import train_test_split\n", "from sklearn import datasets\n", "import matplotlib.pyplot as plt \n", "\n", "def generate_2moons_dataset(num_lab = 10, num_unlab=740, num_test=250):\n", " num_samples = num_lab + num_unlab + num_test\n", " # Génération de 1000 données du dataset des 2 lunes\n", " x, y = datasets.make_moons(n_samples=num_samples, noise=0.1, random_state=1)\n", "\n", " x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=num_test/num_samples, random_state=1)\n", " x_train_lab, x_train_unlab, y_train_lab, y_train_unlab = train_test_split(x_train, y_train, test_size=num_unlab/(num_unlab+num_lab), random_state=6)\n", "\n", " return x_train_lab, y_train_lab, x_train_unlab, y_train_unlab, x_test, y_test" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Ww95atT6uJ4D" }, "outputs": [], "source": [ "x_train_lab, y_train_lab, x_train_unlab, y_train_unlab, x_test, y_test = generate_2moons_dataset(num_lab = 10, num_unlab=740, num_test=250)\n", "\n", "print(x_train_lab.shape, x_train_unlab.shape, x_test.shape)\n", "print(y_train_lab.shape, y_train_unlab.shape, y_test.shape)\n", "\n", "# Affichage des données\n", "plt.plot(x_train_unlab[y_train_unlab==0,0], x_train_unlab[y_train_unlab==0,1], color=(0.5,0.5,0.5), marker='.', linestyle=' ')\n", "plt.plot(x_train_unlab[y_train_unlab==1,0], x_train_unlab[y_train_unlab==1,1], color=(0.5,0.5,0.5), marker='.', linestyle=' ')\n", "\n", "plt.plot(x_test[y_test==0,0], x_test[y_test==0,1], 'b+')\n", "plt.plot(x_test[y_test==1,0], x_test[y_test==1,1], 'r+')\n", "\n", "plt.plot(x_train_lab[y_train_lab==0,0], x_train_lab[y_train_lab==0,1], 'b.', markersize=30)\n", "plt.plot(x_train_lab[y_train_lab==1,0], x_train_lab[y_train_lab==1,1], 'r.', markersize=30)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "LKODCH2luSPM" }, "outputs": [], "source": [ "def create_model_2moons():\n", "\n", " inputs = keras.Input(shape=(2,))\n", " x = Dense(20, activation=\"relu\")(inputs)\n", " outputs = Dense(1, activation=\"sigmoid\")(x)\n", " model = keras.Model(inputs=inputs, outputs=outputs) \n", "\n", " return model" ] }, { "cell_type": "markdown", "metadata": { "id": "ea7E3-6l3_le" }, "source": [ "# $\\Pi$-Modèle\n", "\n", "Nous allons maintenant tenter d'utiliser un 2nd algorithme semi-supervisé supposé être plus efficace, il s'agit de l'algorithme du $\\Pi$-Modèle, dont la version détaillée est présentée ci-dessous (en VO).\n", "\n", "\n", "