{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Classifieur Lineaire : le perceptron\n",
"\n",
"Le but de ce TP est de se familiariser avec les réseaux de neurones. Dans un premier temps, nous allons nous intéressés au modèle du perceptron. Le Perceptron permet de classifier des jeu de données à condition que celui-ci soit séparable linéairement. Ce modèle est particulièrement important puisqu'il est une des briques de base des réseaux de neurones profonds.\n",
"\n",
"#### Jeu de données artificiel "
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"