"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Perceptron learning rule"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This week, we will start working with neural networks. For each of the exercises below you can use the method of your choice but you should display the final boundary of your classifier."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Exercise 1. \n",
"As a first exercise, load the binary dataset below and code a few steps of the perceptron learning rule. "
]
},
{
"cell_type": "code",
"execution_count": 387,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"