# -*- coding: utf-8 -*-
"""
Created on Mon Mar 13 20:30:54 2023

Données d'apprentissage pour kNN : premier exercice
"""

import matplotlib.pyplot as plt
import numpy as np

R = 1
def obtenir_disque(n_echantillons=400):
    # Créations de données d'apprentissage : 
    #    on choisit des points selon une loi uniforme dans [-1,1]^2 :
    Lx = np.random.uniform(-1, 1, size=(n_echantillons, 2))
    # étiquettes :
    #   np.linalg.norm(x) <= R : 1 si vrai (dans le disque), 0 sinon
    labels = [int(np.linalg.norm(x) <= R) 
              for x in Lx]
    return Lx, np.array(labels)


def affiche_donnees_disque(Lx, labels):
    # Initialisationd de la figure :
    plt.figure(figsize=(4, 4))
    plt.xlim(-1.1, 1.1)
    plt.ylim(-1.1, 1.1)
    plt.xticks([])
    plt.yticks([])
    # tracé du cercle :
    x = np.linspace(-1, 1, 100)
    plt.plot(x, np.sqrt(R**2 - x ** 2), color='k')
    plt.plot(x, -np.sqrt(R**2 - x ** 2), color='k')
    # affichage des données :
    plt.scatter(Lx[labels == 1, 0], Lx[labels == 1, 1], color='red')
    plt.scatter(Lx[labels == 0, 0], Lx[labels == 0, 1], color='blue')
    plt.show()
