From 6d1864c51653aec73292308c005c1c6ad52e4154 Mon Sep 17 00:00:00 2001 From: Stefan Kanev Date: Wed, 25 Oct 2017 13:37:53 +0300 Subject: [PATCH] 05: decision trees & random forests --- lectures/05-decision-trees.ipynb | 1941 ++++++++++++++++++++++++++++++ lectures/index.yml | 4 + 2 files changed, 1945 insertions(+) create mode 100644 lectures/05-decision-trees.ipynb diff --git a/lectures/05-decision-trees.ipynb b/lectures/05-decision-trees.ipynb new file mode 100644 index 0000000..6ba0d12 --- /dev/null +++ b/lectures/05-decision-trees.ipynb @@ -0,0 +1,1941 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Класификационни и регресионни дървета" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "from sklearn.datasets import make_classification\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn import tree\n", + "from sklearn.model_selection import cross_val_score\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "import numpy as np\n", + "\n", + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "Днес: decision trees\n", + "\n", + "Преди това: да си припомним малко от предния път." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "# NumPy и векторизация\n", + "\n", + "Повечето операции в NumPy работят с така наречената векторизация. Това по-лесно се илюстрира с пример:" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 5, 10, 15, 20])" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.array([1, 2, 3, 4]) * 5" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 3, 8, 15])" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.array([1, 2, 3]) * np.array([3, 4, 5])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ True, False, False, False, True, False], dtype=bool)" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.array([8, 3, 4, 1, 9, 4]) > 4" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([ 1., 0., 0., 0., 1., 0.])" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(np.array([8, 3, 4, 1, 9, 4]) > 4).astype(float)" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "array([20, 10, 30, 10, 20])" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.array([10, 20, 30])[np.array([1, 0, 2, 0, 1])]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Основната цел е да не ни се налага да пишем `for` цикли. Като допълнение – векторизираните операции в NumPy работят много по-бързо от цикъла в Python, който бихме написали." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "# LabelEncoder\n", + "\n", + "Ако има категорийни данни (например низове), може да ползваме `LabelEncoder` да ги заменим с числа:" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "transofrmed: [1 1 0]\n", + "inverse: ['blue' 'green' 'red']\n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import LabelEncoder\n", + "\n", + "encoder = LabelEncoder()\n", + "encoder.fit([\"red\", \"green\", \"red\", \"blue\", \"red\", \"green\"])\n", + "\n", + "colors = [\"green\", \"green\", \"blue\"]\n", + "\n", + "print(\"transofrmed:\", encoder.transform([\"green\", \"green\", \"blue\"])) \n", + "print(\"inverse: \", encoder.inverse_transform([0, 1, 2]))" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "# OneHotEncoder\n", + "\n", + "Може да кодираме категории с label encoder, когато в категориите има някакъв естествен ред (напр. 4 е по-голямо от 2). Ако няма такъв ред обаче, на най-добре е да ползваме one-hot – така създаваме по един фийчър за всяка категория, който има стойности 0 или 1." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[ 1. 0. 0.]\n", + " [ 0. 1. 0.]\n", + " [ 0. 1. 0.]\n", + " [ 0. 0. 1.]\n", + " [ 1. 0. 0.]]\n" + ] + } + ], + "source": [ + "from sklearn.preprocessing import OneHotEncoder\n", + "\n", + "encoder = OneHotEncoder()\n", + "\n", + "encoder.fit([[0], \n", + " [1], \n", + " [0], \n", + " [2]])\n", + "\n", + "print(encoder.transform([[0], [1], [1], [2], [0]]).toarray())" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "subslide" + } + }, + "source": [ + "Но да се върнем към днешната тема!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Нека генерираме синтетичен dataset подходящ за класификация. Може да погледнете [документацията](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_classification.html) за значението на параметрите:" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "X, y = make_classification(n_samples=100,\n", + " n_features=2,\n", + " n_redundant=0, \n", + " n_clusters_per_class=2, \n", + " random_state=123)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "`X` ще съдържа матрица от точки (всеки ред е точка с два координата), а `y` ще съдържа класа на всяка точка (0 или 1):" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "[[-0.01032243 -0.80566819]\n", + " [-1.10293659 2.21661117]\n", + " [-1.90795358 -0.20839902]\n", + " [ 0.53115524 2.2762704 ]]\n", + "[1 0 0 1]\n" + ] + } + ], + "source": [ + "print(X[:4])\n", + "print(y[:4])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Нека начертаем точките и техните класове в равнината:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(X[:, 0], X[:, 1], c=y);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Това е една функция, която ще начертае decision boundary на decision tree (ще оцвети фона спрямо как класификатора ще определи дадена точка):" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "skip" + } + }, + "outputs": [], + "source": [ + "# Plotting decision regions adapted from \n", + "# http://scikit-learn.org/stable/auto_examples/ensemble/plot_voting_decision_regions.html\n", + "\n", + "def plot_boundary(clf, X, y):\n", + " x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n", + " y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n", + " xx, yy = np.meshgrid(np.arange(x_min, x_max, 0.1),\n", + " np.arange(y_min, y_max, 0.1))\n", + "\n", + " f, ax = plt.subplots(figsize=(10, 8))\n", + "\n", + " Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])\n", + " Z = Z.reshape(xx.shape)\n", + "\n", + " ax.contourf(xx, yy, Z, alpha=0.4)\n", + " ax.scatter(X[:, 0], X[:, 1], c=y, s=20, edgecolor='k')\n", + " \n", + " plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Нека тренираме класификатор:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "1.0\n" + ] + } + ], + "source": [ + "classifier = DecisionTreeClassifier().fit(X, y)\n", + "print(classifier.score(X, y))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Както виждаме, той успява да намери решение, което винаги класифицира правилно. Вероято прави голям overfitting. Да начертаем decision boundary-то:" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n1UVOQq2EZMbf+IDdMURExA9opkpERETEAipVIiIiIhZQqRIRERGxgEqViIiIiAVUqkREREQsoFIl\nIiIiYgGVKhERERELqFSJiIiIWEClSkRERMQCKlUiIiIiFlCpEhEREbGASpWIiIiIBVSqREROwv79\nh7ni0umcfsrt3Hj1s+QcLrQ7kojYRKVKROQEFRd7GDZoEvUTtzN9okGwuZ4Lhz+Ez+ezO5qI2MBp\ndwARkcpq9codhAa5mTw+AYDO7YKp22EvO3dkUS8tweZ0IlLRVKpEbLBhyxrmfDYLn8/LgH5DaNW0\nrd2R5AS4XAEUFfvwek0CAgw8HhO320dgoH60ilRHuvwnUsHWb17D3Q/dTMbiLLKWHuaBaeNZ/sti\nu2PJCWjVph41ExM5/4psXn4nl7NGZ9GjV3OSkmPsjiYiNlCpEqlgsz99jzqedOoYDaht1Keepynv\nf/S23bHkBAQEOHh71ngatu7N10vq0uO0M3jmxWsxDMPuaCJiA81Ri1Qwr8+Hg4BfXztw4PWW2phI\nTkZISCA33z7U7hgi4gc0UyVSwQb0HcyuwI1kmns4YO5le+A6Bp4+xO5YIiJyklSqRCpYu5aduOWa\nCZgNSihLK+SqsTfRs3Mfu2OJiMhJ0uU/ERt0bNONjm262R1DREQspJkqEREREQtopkrkGErLSlmz\nYSWlZaU0TW9BeFiEpePn5efy8bxZ5Obl0K7HKbTo18vS8UVEpGKoVIn8g+KSIm6fdA05WTm4jEA8\nzmIeufcZatVMtmT8gsJ8rr9rDEH5YQSXhfL9gq8ZkX8NvUcPt2R8KV+bN+5j8+YMGjRIpGFja74m\nRKTy0uU/kX/wwdx3KdnvoXVJD5qXdCa2MInnXplu2fjzF36FszCYRt42pBqNaOruwHsznjnm+z55\n900mPzKGc8f259lXHsPrLbMsk/w7L8/4gsED7uGdl15jyBkTef7puXZHEhGbnfRMlWEYKcDrQAJg\nAjNM0/zPyY4r4g8y9u0hojTm18Uco33x7D+wzbLx3Z4SXL7AX18HEkypx/2P71n0xRd88MKLtCjp\niBMXPy9YSGhoOBePGGdZLvlnBw7kMnnSeyybl0TdFBe790bStt8szhzSiaTkWLvjiYhNrJipKgNu\nNk2zKdAZuNowjKYWjCtiuyaNW5AdtI8ysxSf6WO/cyeN0q378u7QuitZjr1kmnvIN3PYHLiKTqf0\n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\nOAzGAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_boundary(classifier, X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "От графиката изглежда че има overfitting – например има вертикалната ивица окола $x_0 = -1$ се класифицира изцяло като жълта, защото има една точка от този клас. По-вероятно е това да е някаква аномалия и да бихме искали да я сметнем за точка от другия клас.\n", + "\n", + "Бихме могли да регуляризираме с `min_samples_split`:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\nx5Jy19Jzqm6KiEOAWuCveOWfJLV7azeuYRhjASiKIrrt7M2a9atzTiXlr6VX/70/qyCSpLZh+JAR\nrHz5JYbWHMIOqtjQeTUHDT0k71hS7ryjuiSpWa694jqq+r7OoyW/47HiBzh16vs5YuykvGNJufOz\n/yRJzdKvzwDu+Lf/YOPmDXQpK6e8S3nekaSCYKmSJDVbUVERfXr3zTuGVFBc/pMkScqApUqSJCkD\nlipJkqQMWKokSZIyYKmSJEnKgKVKkiQpA5YqSZKkDFiqJEmSMmCpkiRJyoClSpIkKQOWKkmSpAxY\nqiRJkjJgqZIkScqApUqSJCkDlipJkqQMWKokSZIyYKmSJEnKgKVKkiQpA5YqSZKkDFiqJEmSMmCp\nkiRJyoClSpIkKQOWKkmSpAxYqiRJkjJgqZIkScqApUqSJCkDlipJkqQMWKokSZIyYKmSJEnKgKVK\nkiQpA5YqSZKkDFiqJEmSMmCpkiRJyoClSpIkKQOWKkmSpAxYqiRJkjJgqZIkScqApUqSJCkDlipJ\nkqQMWKokSZIyYKmSJEnKQCalKiKuiogUEX2zOJ4kSVJb0+JSFRFDgBOBFS2PI0mS1DZlMVN1G3At\nkDI4liRJUpvUolIVEdOAlSmlZ5rw2OkR8WREPLl5y6aWPK0kSVLB6dTYAyJiNjCwnh/NAD7PrqW/\nRqWUZgGzAEYMH+msliRJalcaLVUppRPq+35EHAoMA56JCID9gPkRMTGltDrTlJIkSQWu0VLVkJTS\nc0D/N7Yj4mVgQkppXQa5JEmS2pRIKZuVuOaUqohYC/w1kyduO/oCFs76OTb1c1wa5tg0zLGpn+PS\nMMemfnuOywEppX6N7ZBZqdJbi4gnU0oT8s5RiByb+jkuDXNsGubY1M9xaZhjU7+3My7eUV2SJCkD\nlipJkqQMWKpaz6y8AxQwx6Z+jkvDHJuGOTb1c1wa5tjUr9nj4jlVkiRJGXCmSpIkKQOWKkmSpAxY\nqlpRRNwQEc9GxIKIeCAiBuedqRBExM0RsbRubO6NiF55ZyoUEXFmRCyKiNqI6PCXPEfEyRHxfES8\nEBGfzTtPIYmI70fEmohYmHeWQhIRQyLiDxGxuO7f0pV5ZyoEEVEWEY9HxDN14/LFvDMVmogojoin\nI+I3Td3HUtW6bk4pjU0pjQN+A8zMO1CBeBAYk1IaCywDPpdznkKyEDgdmJN3kLxFRDHwTWAqMAo4\nKyJG5ZuqoPwQODnvEAWoGrgqpTQKOAq4zL83AFQBU1JKhwHjgJMj4qicMxWaK4ElzdnBUtWKUkpb\n9tjsCniVAJBSeiClVF23+Ri7PkdSQEppSUrp+bxzFIiJwAsppb+klHYAdwPTcs5UMFJKc4ANeeco\nNCmlVSml+XV/fp1db5L75psqf2mXirrNkrov35PqRMR+wHuB7zVnP0tVK4uIGyPiFeAcnKmqzwXA\n/+QdQgVpX+CVPbb/hm+OaoaIGAqMB/6cb5LCULe8tQBYAzyYUnJc/u5rwLVAbXN2slRlLCJmR8TC\ner6mAaSUZqSUhgB3AZfnm7b1NDYudY+Zwa6p+rvyS9r6mjI2klomIroBPwc++f9WDTqslFJN3eko\n+wETI2JM3pkKQUScAqxJKT3V3H077YU8HVpK6YQmPvQu4H7gur0Yp2A0Ni4RcT5wCnB86mA3T2vG\n35mObiUwZI/t/eq+J72liChhV6G6K6X0i7zzFJqU0qaI+AO7zsnzQgc4BjgtIt4DlAE9IuInKaUP\nN7ajM1WtKCJG7LE5DViaV5ZCEhEns2ua9bSUUmXeeVSwngBGRMSwiOgMfAj4Vc6ZVOAiIoA7gSUp\npa/mnadQRES/N660joguwLvxPQmAlNLnUkr7pZSGsuv3zMNNKVRgqWptN9Ut6zwLnMiuKwsEtwPd\ngQfrbjfx7bwDFYqIeF9E/A04GvhtRPw+70x5qbuY4XLg9+w62fielNKifFMVjoj4KfAocEhE/C0i\nLsw7U4E4BvgIMKXu98uCuhmIjm4Q8Ie696Mn2HVOVZNvHaD6+TE1kiRJGXCmSpIkKQOWKkmSpAxY\nqiRJkjJgqZIkScqApUqSJCkDlipJkqQMWKokSZIy8H+AH7O5R2TizAAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "classifier = DecisionTreeClassifier(min_samples_split=50).fit(X, y)\n", + "plot_boundary(classifier, X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Тук получаваме по-прост модел, който естествено игнорира някои точки, но поне не overfit-ва.\n", + "\n", + "Нека начертаем дървото, което алгоритъма е открил:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "import graphviz\n", + "\n", + "# За да изпълните този код ще се нуждаете от graphviz библиотеката и съответния пакет за нея в python.\n", + "#\n", + "# На macOS това става със:\n", + "#\n", + "# brew install graphviz\n", + "# pip install graphviz\n", + "#\n", + "# На други операционни системи трябва да замените първия ред с каквото ви е нужно (apt-get, yum, т.н.)\n", + "\n", + "def draw_decision_tree(classifier):\n", + " dot_data = tree.export_graphviz(classifier, out_file=None) \n", + " graph = graphviz.Source(dot_data) \n", + " graph.render(\"tree\") \n", + "\n", + " dot_data = tree.export_graphviz(classifier, out_file=None, \n", + " feature_names=np.array(['X_0 Vertical', 'X_1 Horizontal']), \n", + " class_names=np.array(['Class_0', 'Class_1']), \n", + " filled=True, rounded=True, \n", + " special_characters=True)\n", + "\n", + " return graphviz.Source(dot_data) " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Tree\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "X_0 Vertical ≤ -0.5159\n", + "gini = 0.4992\n", + "samples = 100\n", + "value = [48, 52]\n", + "class = Class_1\n", + "\n", + "\n", + "\n", + "1\n", + "\n", + "gini = 0.1327\n", + "samples = 42\n", + "value = [39, 3]\n", + "class = Class_0\n", + "\n", + "\n", + "\n", + "0->1\n", + "\n", + "\n", + "True\n", + "\n", + "\n", + "\n", + "2\n", + "\n", + "X_1 Horizontal ≤ -1.6008\n", + "gini = 0.2622\n", + "samples = 58\n", + "value = [9, 49]\n", + "class = Class_1\n", + "\n", + "\n", + "\n", + "0->2\n", + "\n", + "\n", + "False\n", + "\n", + "\n", + "\n", + "3\n", + "\n", + "gini = 0.375\n", + "samples = 12\n", + "value = [9, 3]\n", + "class = Class_0\n", + "\n", + "\n", + "\n", + "2->3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "4\n", + "\n", + "gini = 0.0\n", + "samples = 46\n", + "value = [0, 46]\n", + "class = Class_1\n", + "\n", + "\n", + "\n", + "2->4\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "draw_decision_tree(classifier)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Това е дървото на алгоритъма с `max_samples_split=50`. Може да видите няколко неща.\n", + "\n", + "Първо, алгоритъма се опитва да намери дърво от `if`-ове с които да отговори на класификационния въпрос. Първоначално сравнява $x_0$ (първия feature в `X` с $-0.5159$). Ако е по-малко, отговаря с оранжевия клас. Ако е по-голямо, сравнява $x_1$ с $-1.6008$ и на базата на резултата отговаря взема решение. Това съответства на правоъгълния в опростения алгоритъм.\n", + "\n", + "Във `samples` може да видите колко точки остават след вземането на решение. Например, първия възел ($x_0 < 0.5159$) ще раздели 100-те точки на два групи, една с 42 и друга с 58. Във `value` може да видите по колко точки има от всеки клас. Например, в лявото разклонение след корена на дървото попадаме в ситуация, в която в train set-а има 39 оранжеви и 3 сини и даваме отговор оранжеви (`Class_0`). Алгоритъма би могъл да продължи да разделя дървото, но понеже `samples = 42` е по-малко от `min_samples_split = 50` той спира да строи.\n", + "\n", + "`gini` е параметър, който помага на алгоритъма да прецени какво е най-доброто разпределение да дървото. Ще го разгледаме по-долу." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Нека да видим как ще се справи алгоритъма без регуляризация:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "classifier = DecisionTreeClassifier().fit(X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Така изглежда decision boundary-то:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlUAAAHVCAYAAADYXg73AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd0FFXjxvHvbHbTGykkJIRAIPTeO0pREEQEBQsoCmLv\nHUUUFUVEee1i78oriqhYsKEoSAfpvYeQAOnJbrI7vz94f3ZEYJLZJM/nHM9hyeydJ8ckPLkzc69h\nmiYiIiIicnIcdgcQERERqQpUqkREREQsoFIlIiIiYgGVKhERERELqFSJiIiIWEClSkRERMQCKlUi\nIiIiFlCpEhEREbGASpWIiIiIBZx2nDQqItqsGZ9ox6lF/FuAA1+AgRkARoBJoKOMIEcZbt+Rb1WP\nz4npNTC8UJJXQmiwq9yiFJWUYroc+FyA0yTQWUZYgJuggJByO6eIiD9atWJ7tmma8cc6zpZSVTM+\nkf9MesmOU4v4NW9MGO5oB6WR4IrwUDs8h/SgTDa7EwDYUxBNaX4grjzY9MVmWqeX3y8nKzfvpyQp\nhKJEcMR7SI07SMfI7aSFNym3c4qI+KO4iJE7/81xuvwnIiIiYgGVKhERERELqFSJiIiIWEClSkRE\nRMQCKlUiIiIiFlCpEhEREbGAZaXKMIwAwzBWGIbxiVVjioiIiFQWVs5UXQ+st3A8ERERkUrDklJl\nGEZtYCDwohXjiYiIiFQ2Vs1UTQduA3wWjSciIiJSqZx0qTIMYxBwwDTNZcc4bpxhGEsNw1iam5dz\nsqcVERER8StWzFR1AwYbhrEDeBfobRjGm38+yDTNGaZptjdNs31UZLQFpxURERHxHyddqkzTvNM0\nzdqmadYFzgO+MU1z5EknExEREalEtE6ViIiIiAWcVg5mmuZ3wHdWjikiIiJSGWimSkRERMQCKlUi\nIiIiFlCpEhEREbGASpWIiIiIBVSqRERERCygUiUiIiJiAZUqEREREQuoVImIiIhYQKVKRERExAIq\nVSIiIiIWUKkSERERsYBKlYiIiIgFVKpERERELKBSJSIiImIBlSoRERERC6hUiYiIiFhApUpERETE\nAipVIiIiIhZQqRIRERGxgEqViIiIiAVUqkREREQsoFIlIiIiYgGVKhERERELqFSJiIiIWEClSkRE\nRMQCKlUiIiIiFlCpEhEREbGASpWIiIiIBZx2BxDxRyXuEl5551nWrl9NzfhExl10LYk1k+yOJSIi\nfkwzVSJ/46HpE1j+/VJi9iVx6Jccbrn3SgoK8+2OJSIifkylSuRPiooLWbV+KY1L21HDiCfVbERw\naSi/rF9hdzQREfFjKlUif+JwBGCaJj68AJimSRllBDh1tVxERI5O/0qI/ElwUDB9ug1g2eKfqemu\nTb7zMEFRgbRq2s7uaCIi4sdUqkT+xjVjb+WT1FmsXb+aJjUbMvysUQQFBtkdS0RE/JhKlcjfcDgc\nDD79XAaffq7dUUREpJLQPVUiIiIiFlCpEhEREbGASpWIiIiIBVSqRERERCygUiUiIiJiAZUqERER\nEQuoVImIiIhYQKVKRERExAIqVSIiIiIWOOlSZRhGsGEYiw3DWGUYxlrDMO6zIpiIiIhIZWLFNjVu\noLdpmgWGYbiABYZhfGaa5iILxhYRERGpFE66VJmmaQIF/3vp+t9/5smOKyIiIlKZWHJPlWEYAYZh\nrAQOAPNM0/z5b44ZZxjGUsMwlubm5VhxWhERERG/YUmpMk3Ta5pma6A20NEwjOZ/c8wM0zTbm6bZ\nPioy2orTioiIiPgNS5/+M00zB/gW6G/luCIiIiL+zoqn/+INw4j+359DgH7AhpMdV0RERKQyseLp\nv1rAa4ZhBHCkpM00TfMTC8YVERERqTSsePpvNdDGgiwiIiIilZYVM1UifsXr8/LCG0/y5fxPMAyD\nwaedw0XDx2EYht3RRESkClOpkirn/TlvsfCHBXQs7YOJyVfzPicupiYD+51tdzQREanCtPefVDlL\nli+ktrs+QUYIwUYoSe40liz/ye5YIiJSxalUSZUTFVWDQiP/19dFjnyiomrYmEhERKoDlSqpckaf\nfzkZwTvY6FzBBtdyDoVmcOE5l9odS0REqjjdUyVVTkpSKk8//BqLlv+Aw3DQtX0vojVTJSIi5Uyl\nSqqkuJh4BvUdancMERGpRnT5T0RERMQCKlUiIiIiFlCpEhEREbGA7qkSOQnZh7J4e9bLHDqUTZtW\nHTnztGE4HPpdRUSkOlKpEjlB+QV53DjhMqIK4wnzRjJr87tkZmUwbtR1dkcTEREb6FdqkRO0eOWP\nBLvDqO9rRqKRQjN3B+Z+/SE+n8/uaCIiYgOVKpET5PP5MH73LWTgwGeaNiYSERE7qVSJnKD2rbqQ\n7zzMTmMjB839rA9cSp9u/XVPlYhINaWf/iInqEZUDI/d9zw1W8dSUi+Xvmf055oxt9gdS0REbKIb\n1UVOQq2EZMbf+IDdMURExA9opkpERETEAipVIiIiIhZQqRIRERGxgEqViIiIiAVUqkREREQsoFIl\nIiIiYgGVKhERERELqFSJiIiIWEClSkRERMQCKlUiIiIiFlCpEhEREbGASpWIiIiIBVSqREROwv79\nh7ni0umcfsrt3Hj1s+QcLrQ7kojYRKVKROQEFRd7GDZoEvUTtzN9okGwuZ4Lhz+Ez+ezO5qI2MBp\ndwARkcpq9codhAa5mTw+AYDO7YKp22EvO3dkUS8tweZ0IlLRVKpEbLBhyxrmfDYLn8/LgH5DaNW0\nrd2R5AS4XAEUFfvwek0CAgw8HhO320dgoH60ilRHuvwnUsHWb17D3Q/dTMbiLLKWHuaBaeNZ/sti\nu2PJCWjVph41ExM5/4psXn4nl7NGZ9GjV3OSkmPsjiYiNlCpEqlgsz99jzqedOoYDaht1Keepynv\nf/S23bHkBAQEOHh71ngatu7N10vq0uO0M3jmxWsxDMPuaCJiA81Ri1Qwr8+Hg4BfXztw4PWW2phI\nTkZISCA33z7U7hgi4gc0UyVSwQb0HcyuwI1kmns4YO5le+A6Bp4+xO5YIiJyklSqRCpYu5aduOWa\nCZgNSihLK+SqsTfRs3Mfu2OJiMhJ0uU/ERt0bNONjm262R1DREQspJkqEREREQtopkrkGErLSlmz\nYSWlZaU0TW9BeFiEpePn5efy8bxZ5Obl0K7HKbTo18vS8UVEpGKoVIn8g+KSIm6fdA05WTm4jEA8\nzmIeufcZatVMtmT8gsJ8rr9rDEH5YQSXhfL9gq8ZkX8NvUcPt2R8KV+bN+5j8+YMGjRIpGFja74m\nRKTy0uU/kX/wwdx3KdnvoXVJD5qXdCa2MInnXplu2fjzF36FszCYRt42pBqNaOruwHsznjnm+z55\n900mPzKGc8f259lXHsPrLbMsk/w7L8/4gsED7uGdl15jyBkTef7puXZHEhGbnfRMlWEYKcDrQAJg\nAjNM0/zPyY4r4g8y9u0hojTm18Uco33x7D+wzbLx3Z4SXL7AX18HEkypx/2P71n0xRd88MKLtCjp\niBMXPy9YSGhoOBePGGdZLvlnBw7kMnnSeyybl0TdFBe790bStt8szhzSiaTkWLvjiYhNrJipKgNu\nNk2zKdAZuNowjKYWjCtiuyaNW5AdtI8ysxSf6WO/cyeN0q378u7QuitZjr1kmnvIN3PYHLiKTqf0\n/cf3LPtqPskldQk3ogg2Qkn1NOLnZT9alkmOLWPfIVKSg6ib4gIgJdlF3TpBZOw7bHMyKCgoYc/u\nbMrKvHZHEal2TrpUmaaZYZrm8v/9OR9YD+jmAqkSBvQ+i7Yd2/NjwGf86JxLZN1wLr/4esvGT0lK\nZeJtj1CccpgdNdbRtk8Xxt1+9z++JyImmpKAol9fF1Fg+c3z8s/q1Usg40AZ3yw48v/h+4XF7Nzj\nIa1+oq25Xnj2M5o3uJL+p95B13Y3snnjPlvziFQ3lt6obhhGXaAN8PPffGwcMA4gPjbBytOKlBuH\nw8H14+5g7MhrKCsrJTIi2vJ93Zo3asV/Jr8EgDcmjMNlRWxdtpbopBCS2/x1Y94zx4xm0aefs65w\nGS7TSZZzHw+MfNzSTPLPIqNCmfHqDZw/ejoO4yBen8HzL19PjZhw2zItW7KFJx//gNXfJpOa4uLZ\n13K5bPRjfLfwUdsyiVQ3lpUqwzDCgVnADaZp5v3546ZpzgBmAKSnNTatOq9IRQgLrZh/LLdv28iE\n8VcSaAZTXFZAz0Gdef3li/5wTI2aNXn0rf/y4ZNvkFAjhM5tu5Ncq06F5JPf9OzVjF82PUt2Vh5x\n8ZG4XPY+TL169U769w4l9X+XJMeNjOS68VspK/PidAYc490iYgVLfgoYhuHiSKF6yzTND6wYU6Q6\nevThu6hdUJ8k6uI1y1j82Y98MqcJjfuf+YfjomrE0rXTQFqn23u5qbpzuZzUSvrrbKIdUlPjeflZ\nN4VFPsJCHXyzoIikWhEqVCIVyIqn/wzgJWC9aZqPnXwkkerrwIG9pJnNwIAAw0mkO5ZtW/bT2O5g\n4vdO7dOCuV3b0vyUJTSsH8yKX4p58fWb7I4lUq1YMVPVDRgF/GIYxsr//d140zS1aIvIcaqdXI/9\nu3aRYjag1PSQE3iAJs1S7I4llYBhGEz9z2WsXNGXrAO5tGxdl8TEGnbHEqlWTrpUmaa5ALD2zl2R\naurW8Q9x151XkFG8C3dZEUNHDaLf6a3Z4rE7mVQGhmHQpm2a3TFEqi1tUyPiR5KSU3ny/Y/Zk7ub\n6KQQWqQ5MYxMu2OJiMi/oFIl4mdcgYHUrl8fV4QHyLE7joiI/Eva+09ERETEApqpEhGp4pYu3sKc\n2QsJDgpk1CV9SKkTZ3ckkSpJM1UiIlXY1/NWMeq8h6kVuhRf/gL6976LXTuz7I4lUiVppkpEpAp7\nfOpMnptSgyEDjuwK4HId5KUZX3DfgyNtTiZS9WimSkSkCisu8pAQ/9uq6rXiHRQXldiYSKTqUqkS\nEanCzhzSlRvvyWX56hLmzS9k6rMFDDqrs92xRKokXf4TEanCrrvpLLxeHxdd/wNBwS4emDKWnqc0\ntzuWSJWkUiUiUoV88N+fmPnO17icTsZdcxY9ejbl5tuHcfPtw+yOJlLl6fKfiEglkJ9fzNXjnqRF\nw8vp1flmvv9uzV+OmfnOAibf+yqXj8hjeP9sLrv4MX5euMmGtCLVk2aqREQqgRuueoYw5w5+/Cie\nXza4uXT0dD7+/D4aNk7+9Zi3XvuCpyZHM6BPGACHc7y899Y3dOrS0K7YItWKSpVIOfF43Dz50lQW\nLv2eQFcgo4ZfxoDeZ9kdSyoh0zT5/LPVZK6pS0S4g9QUF0PP8DD/u7V/KFWGAaVl5q+vy7zgcOiC\nhEhFUakSKScz3niSdUvX0t7TG4+nhFffep6acYm0a9nJ7mhSyRiGQUREIDv3lNK8cRCmabJzTxmt\nugX/4bgxl5/J1be9wKEcHwUFPqY8XcC7H/S1KbVI9aNSJVJOlq5cSH1PS4KMYIIIJtGTytKVi1Sq\n5ITcNfF8zrjwHS49P4Q1G3xkHgpn8Nl//Fo6c0hHAoNcvP/uNwQGunjn/YG0aZtmU2KR6kelSqSc\nhIdGUJRTQDhRAJQ4C4mKjLY5lfijvNwi5sxejNtdSt/TWpFat+Zfjhk1ujd10xJZ8N0a2veMZPrF\npxAaGvSX404f0IbTB7SpiNgi8icqVSLlZNzo67j/0TvJ9R2k1OGhLNzNwL5n2x1L/MzB7HzO6Hs3\nzRt5iYl2MPWhmbz7wXhat6n3l2N79GxKj55NbUgpIv+GSpVIOWnZpC3TJj3HkpULCQ4KoVeXvoSH\nRdgdS/zM80/PpW83k2emxAPwyru5PDjxdf47Z6LNyUTkeKlUiZSjOsn1qJP81xkHkf93MDuH9o1/\n25uvReMgsl/OszGRiJwoPWsrImKjnr1b8+TLRWzd4eFwjpf7puXR69RWdscSkROgmSoRERuddXYn\ndu3MpOOAj/B4vJw9tCN33nP+cY2xf/9htm3JpE5qHLVT4sopqYgci0qViIjNrr1hMNfeMBjTNDEM\n47je+9EHi7j1xhdoWD+EzVuLuWPCeVwytl85JRWRf6JSJSLiJ463UOXnFXHzdS/wzawEWjULYvuu\nUjqf8S59+rWmTmp8OaUUkaPRPVUiIpVUxr7DxMU6adXsyHpV9eq4aJQewo4dB2xOJlI9aaZKxE9k\nH8ri7TceIzv3IC16d+WMcVrTSv5ZUu1YDuV4WfBzMd07hbBmg5v1m4pp0CDR7mgi1ZJKlYgfyMvP\n5cYJlxFVGEeYN5KPVr/Eoaw93PnwRXZHEz8WHh7Mcy9dx9AxTxIXE0DmAQ9THhtDUnKs3dFEqiWV\nKhE/sGj5DwS7w6nvaw4G1CiO57PXZnLHQ6PsjiZ+rnffliz95Qn27M4mKSmGqOgwuyOJVFsqVSJ+\nwOfz4TB/u8XRwIFp+mxMJJVJREQITZqm2B1DpNrTjeoifqBjm67kOg+yk00cNDNZH7yMXkMHHvfT\nYCIiYh+VKhE/EBMdx7R7nyWmfQwFDXPpcdGZXDb5drtjiYjIcdDlPxE/kVyrDnfd+zjuaAelkRDg\n9NgdSUREjoNmqkREREQsoFIlIiIiYgGVKhERERELqFSJiIiIWEClSkRERMQCKlUiIiIiFlCpEhER\nEbGASpWISBWzdct+zup/D03SxjFkwES2bd1vdySRakGlSkSkCikqcjN8yAMMOz2f5V8mMKRvHiPO\nfpDiYi0mK1LeVKpERKqQjRv2Ehnm5frLoklKdDKgdyhFhQUMGTCBaVNmUVbmtTuiSJWlUiXiRwoL\n85l6241c2qELV3QYyPy5P9odSfxASYmH6698hrqJl9AkbRwvz/jyqMdGRIRwILuUwiIfezPKOHXo\nHm6+IooHbzX56ZuvmXDHaxWYXKR60d5/In7k8UcmsG/VbjqW9qawJJ/7L59Kx7Q7CWmcYHc0sdGk\nCW+Sl7WWrT+ncCC7jDMvep/klHhOH9DmL8fWb5DIaf3bceqw1dSM9dKrawg3X1kDgNbNgqjf+Xsm\nT70EwzAq+tMQqfI0UyXiR1at+pn6pc0JNIKpYcQT763N99+ttTuW2Gz+t6u4//Yo4mIDaNooiKsv\nCeX7b1f97bGGYfDYU1cw7rpRlDkb4vUF/Poxt8ckwKEf+yLlxZLvLsMwXjYM44BhGGusGE+kugoJ\nCaOIfABM08TtLCQ6OszmVGK3GjERrNv0243mazd5qRETedTjDcNg2Lldeeq5y1my0uSOBw/x1qw8\nzhqdzWVXnq5ZKpFyYtWvLK8C/S0aS6TauuzKW1kbtIQtAb+wNmQxoSmBDBve1e5YYrMJ913EtXfl\ncOXtBxk6JosflwYwZtxpx3xfbFwEc79+gEPulnz4TRIXXXYud9w9vAISi1RPltxTZZrm94Zh1LVi\nLJHqrEfP06nRoDar1ywmKjGc80Z2JSQkB9x2JxM7derSkE/n3c/X81bROCSIx2d0IjIq9F+9t1ZS\nDFMeG1POCUUEKvBGdcMwxgHjAOJjddOtyNGkN21B3c4tcEV4CA7JsTuO+IkG6bVokF7L7hgi8g8q\n7I5F0zRnmKbZ3jTN9lGR0RV1WhH5n/yCPJasXMiajavw+Xx2xxERqXK0pIJINbBj9zbufOA6Qs1w\nSsxi6tatx323P4rTqR8BIiJW0bO1ItXA9OcfIrk4jeYlnWlb0ot92zL4cv4ndscSEalSrFpS4R1g\nIdDIMIw9hmHorkgRP5KVvZ8Y88i9jA7DQYQnmozMvTanEhGpWqx6+u98K8YRkfJRv24j9m3YTpq3\nGaV4OBS0n4b1R9gdSyxmmqbWoBKxkS7/iVQDN145HhLL+Mn1OQsDvqDXKX3p3vFUu2OJRT6ds4SW\nDa8gOe5ihg95gOysPLsjiVRLuktVpBqoERXDE5Nf5nDuIYKDggkLDbc7klhk3drd3Hz9c3z0ajwt\nmyRw18MHuHLsf7hgVF/mfb6YiMhwrr5+MHVS4+2OKlLlqVSJVBMOh4PYGnF2xxCLLfxxA0MGhNO5\nXQgAD42vQVT6Jnbv2M0d14azbaeXM/ouYd78ydRKirE5rUjVplIlIlKJxcRGsH5TKT6ficNhsGaD\nh5Bgg5kz4mjVLAiAzKxs3p/5E9feMMjmtCJVm+6pEhGpxAYNbo8zOIFThx3g6jsPMeiiLIKCAwkN\n+e2G9bBQA2+Z18aUItWDZqpEKqncvIPcMvE+tu7aSI3IOG666i6aN2pldyypYC6Xk3c/vIs5sxeT\ndSCPW1oGMP/rVYy6dguT74xi285S3vqgiE++7GB3VJEqTzNVIpWQaZq89saDeHb46Fo2gMRDdblv\n6m1kH8qyO5rYwOVycvawzixfsp7XX5hFuGsnG7eUcOO9pXwwL453PxhPesMku2OKVHmaqRKpIHsz\ndrFm4yrCwyLo1Kb7SW0RU5CXy6GcTJr7OmAYBvEkke3Yx8ata4mLOcW60FJpfD1vNVs2bGTJZwkE\nBTlYvCKcMy86yDMv3cDBgwUcPlRAjRg99SlSnlSqRCrAstU/8/B/7iHOqEURBcyuPZPJd/8Hl9N1\nQuMFh4TiM324KSaYI38uMvMJD4u0OLlUFvszDtO6eRBBQUcuQLRtEUhhQTHnnT2JunWC2bLdw5vv\n3U7b9vVtTipSdenyn0gFePKFR2jkaUtDT2taubuRvSeb+Qu/OuHxXIGBnNb7fFYF/sgWxy+sDvqJ\nBukNadG4tYWppTJp274+n39byJoNbkzTZOzNWSQmOFn/QzI/zI7nyQcjuebyJ+2OKVKlaaZKpALk\nFeQQSQ0ADMMgtCyCw7kHT2rM7l0H07NjezZtXU9cbE16dOqNw6Hfk6qrZs3rMGnyJfQY/BJuTxmx\nseEMPi2C8LAjXxOD+oZx4ZXbtZWNSDlSqfITO/dsY/vurSTG16Jxg+Z2xxGLNWnQgh2bN1Df25xi\nCsgK2Eezhi1PetyWTdrSsklbCxJKVXDOiG4MPbcLxcUeli/bxk1XTSczq4yEeCevvpdPs2aJKlQi\n5Uilyg988e3HvPjm08Q44sk1D9HnlP5cNvJau2OJhW67diIPPn43322djcsZyOWjrqepBaVK5M8c\nDgdhYcH06NmU80adTuNunxAXG4jXdPHO+zfbHU+kSlOpsllJSTHPvT6ddmWnEGZEUGp6mPftXPr2\nHEC9Og3sjicWiYqswSMTn6asrIyAgAAMw6C0rBQD46SeAhT5JzffPoyLL+3H4cMFpNatSWCgvtZE\nypO+w2yWm59DoCOIMCMCAJcRSGRANNmHslSqqiCn00lZWRmPPz+ZHxZ/DUDf7mdw9ZhbCHAE2JxO\nqqK4+Eji4vVUqEhFUKmyWWyNeFxBLvZ7dpFo1CHXPEiu9xD16uix56rqnQ9fZd3ytfTwnQmYLF+0\nmNm13mPYoAvsjiZyVLk5hTzx+Efs23OAtu0bc+m40wgI0IMRIr+n7wibOZ1O7rv9UTKitvO942PW\nBi3m1msnEhdT0+5oUk5Wr1lOkqcuTsOJ03CR6Ell1ZrldscSOariYg9DzriX3IyFDOi2m09mzeH2\nm1+yO5aI39FMlR+on5rOa09+QEFRPmEh4XosvoqLi41n7879xPlqAZAfkEOj2HSbU4kc3YLv1xEe\nXMSL0+IxDIOzB4SR1GoB9z4wivDwYLvjifgNlSo/YRgGEVoNu1q45IIruWnD5RSX5mNiUhrsZuS5\nY+2OJXJUpaVewsIcvy7HEBzkwOEw8Hl9NicT8S8qVSIVrGZcIs8+8gbLf1mMYRi0a9mJsFDtySb+\nq1v3xtx9m48Hpx+mR6dgnn2tgJ69mhAZFWp3NBG/outMIjaICI+kV5e+9OzcR4VK/F5UdBizP7uX\nFZvrcPtDBjHJ7Xn+lRvsjiXidzRTVQVs3raB1euXExkRRa/OfQkMDLI7kohUMXVS43nhtZvsjiHi\n11SqKrnvF33Nky9MpaY3mWJnAZ988QFTJz6jYiUilc7B7Hw+nLWQkpJS+p/RlgbpteyOJHJcdPmv\nknvu1ek083Skga8Fzd2dyc8s4IfF39gdS0TkuGRm5tCv152sWvgxWdu+YGC/CSxdvMXuWCLHRTNV\nlVxRSQFhHFmN3TAMgr1h5OXn4fG42Ze5h/CwSOJi4m1OKXZYuXn/Cb93q7uAfaElRHvDMfGQ4jxI\nQsBWINa6gCK/8/zTczmrn4PpDxz5GuvQ2sVDk95k1if32htM5DioVFVyLRu3Y9vGtdQra0oheWQ5\n9lIzLpExN4zALDUpLivijL5DGHPh1XZHlQq0cvN+troLSK53YoW6yFtCVHIgtWtl0Cl2K6lhsaSF\nd7c4pchvcg/n077hb1s1NawfSE5OoY2JRI6fSlUld+u19/DoU/ezaMMXhIVGcOMl43lz5kskFKSS\nTD1KTQ9ff/sFrVu0p13LTnbHlQrw/4WqqI6TosQTG8PEQ0qtg78rVE2sDSnyJ737teW+u5bRs0sI\nNaICmDAll979etgdS+S4qFRVchFhkdx3+9Q//N2Up+6lu9kSjCMbNNcoi2fH7q0qVVXc78uUmewj\npVYGkHFCY6WACpVUqIGDO5Cx7yD9L5iN213G0HO6cNv4c+2OJXJcVKqqoITYWmRl7aUWqZSZpeQ4\ns0lJSrU7lpSjPxaqP84ynShd7pOKNvaK/oy9or/dMUROmEpVFXT7dfdx90M3kunbTZG3gF6d+9Ch\ndVe7Y8nv7MnYxVv/fYncvFy6dOzBoH5Df90C5Hj9/v6pokRwxHtIjfZplklEpIKpVFVB9VPTeenx\n99ixexuREVHUrlXnb4/bvmsLjz3zIPuzM6hXuz63XDOBmnEneBOO/GtZBzO5eeIVJJakEmqGM3PH\nm+TkHmbU3+z/V1LsZvkvWzngLCKtcd2jjplcL56WLWqzKGtPOSYXEZF/onWqqqjQkDCaNmxx1EKV\nX5jH+Mk3ELQvknbuU3Bv93HXgzfg9ZZVcNLqZ8Hib4kprUldGlHTSKaxux2fzvvgL8dl7clgdK9L\nuOWaR7njvBuYcOkEvGX6/yMi4q9UqqqpbTs2E+ILJZl6BBnBpPoakpefx4GDmXZHq5bMv/m7VydO\nYuxwWPEuKWBxAAAgAElEQVRVIpt+rEXpoQ189c7sCs8mIiL/jkpVNRUaGkaxrwif6QWgjFI8Xjeh\nIWE2J6v6unc8lUOuA+xkIwfMvWwIWsagfkP/clzGtp2cPSAUgKAgB2f2dbF/29aKjitV1J7d2Xw9\nbxWbN+2zO4pIlaFSVU01qNuI5k1bsTpoIVtZy6qgHxnY52yiIqLtjlblxccmMO2+50hoF4/RqJRz\nz72QkeeM+ctxtRvW553ZhZimSVGRjw8+85DcsKENiaWq+fD9hfTpcQfPT3+Rwf0n8MTjH9kdSaRK\n0I3q1ZRhGNxxwyTm/zSPfZl7qZ+aTud2WmivotSuVYc7r5/0j8dcfN8Epl1yGTPnZHA410vH3h05\ndfhgfEUVFFKqpMLCEm65/gW++zCRlk2DyMgso02/OQwY2IH0hkl2xxOp1FSqqrEARwC9u2tNGH8V\nm1iTl75+EXat4oAzmaTURPYWBuCzO5hUagcyc4mKctKyaRAAtRKcNG8cyq6dWSpVIidJl/9E/Jgr\n0EXTZikk1611wutYifxeraQalLjh82+O7Ku3ep2b1euKadQ42eZkIpWfZqpERKqR4OBAXnr9Ji65\n6DGCAnPIyytj2hPjqJ0SZ3c0kUpPpUqkguXmHWbLjk1ERkTRoG4jzUBJhevSrTEr1j3Nvr2HqJkQ\nRVhYsN2RRKoElSqRCrR+8xomPnIrEUYUhd58OrTrwk1X3qViJeVu//7D3Dv+NXZs30+z5vW45/6R\n1EtLsDuWSJWie6pEKtDUpyZRv6Q5zUs6095zKiuWL2XR8gV2x5IqrrjYw9CB91E/cTuPTQBn6RpG\nDp+Cz6fHHkSspJkqkQqUnZNJUzoCEGA4ifLGsv+AFl+U8rVy+TYiQj1MHn9kZqpL+2DqtNvD7l3Z\npNataXM6karDkpkqwzD6G4ax0TCMLYZh3GHFmCJVUWqtNPYZOwBwm8UcDNhP/brp9oaSKs/lclJY\n5MPnO7Ihksdj4vH4CAzU79UiVjrp7yjDMAKAp4F+wB5giWEYc0zTXHeyY4tUNXfcMIm7J9/E3qJt\neLxuRgy8iJZN2h73OCXFRfy89As2rXcQGlmPuKQW5ZBWqorWbesRG5/ABVdmc/qpgbw7u4Sep7Qg\nsVYNu6OJVClW/JrSEdhimuY2AMMw3gXOAlSqRP4kOTGFFx9/h6yDBwgPiyA8LOK4xygpKmLipaPw\nZLgJ8YWx33iTgY5radni/HJILFWB0xnAOx+M56npH/Plor1075fG5VcN0AMSIhazolQlA7t/93oP\n0OnPBxmGMQ4YB0f2PhOprgICnCTWPPGVq3/8dC6lBzw0L+2IYRjEmYnMe/cFzhutUiVHFxoaxG3j\nz7E7hkiVVmEX1E3TnAHMAEhPa2xW1HnFPjt2b2XqU5PYn72PlFp1ue3aiSQl1LY7VqVXmJdHcFnI\nr7MMoUTgdv+2IWDOvkw2fTiPjSGHGXN+vBZ1FBGpIFbcqL4XSPnd69r/+zupxoqKCxn/4A2EZETT\n0dMXx+4gxj9wPaVlpXZHq/Sad+7MgYC9HDazcJslbAn4hbTGR+7Lyt65g5mX30Ri9re4d67gtFPG\ns2Vzhs2JRUSqBytK1RIg3TCMeoZhBALnAXMsGFcqse27thDoCyKZegQaQaSYDfCUlJKRucfuaJVe\nWrOmXDVxElvC1rI06FtiGtTizEtvAGD5B29w93VhPPNQLM9OieO6MaE88dgHNicWEakeTvryn2ma\nZYZhXAN8AQQAL5umufakk0mlFh4WQbG3CK9ZRoDhpNT04C4rJiz0+G/Mlr/q1KsPNUrq0Do9kZWb\n91MSHAJAaVEeDer+9m1dv66TRb8U2BVTRKRaseSeKtM05wJzrRhLqoY6yfXo0K4Lq5b/RFRpDIcD\nszitxyBia+j+nvJUu013Jjz6Do0bBOL1woPTCxhz1Rl2xxIRqRa08puUC8MwuPnKu1mw+Fv2Zuyi\nbp0GdGrTze5YVV7LAYNx+w7TfdhcXAEml407g5EXn2p3LBGRakGlSsqNYRj06NTb7hjVimEYdL7k\nAkbcejodI7eTFt7E7kgiItWGSpX4nQPZ+/no8/9SXFREt86n0K7lX5Y9ExER8TsqVeJXsg9lcf3d\nY4kpTiDQF8yPP9/L5aOvp3eP/nZHExER+UeWbKgsYpV58z8lujieBmYL6hjpNPK05e1Zr9gdS8Sv\nbN64jwvOmcypXW7mlutnUFBQYnckEUGlSvyMx+MmwPxtAtVFoBYMFfmd7Kw8hp45iQHds3jp0UDc\nub9wxaXT7Y4lIujyn/iZbp1O4ZMvPyDcE0UwIWwPXMep3U+zO5aI3/hxwXratnBx3dhoAF55PIga\njdZTUFBCeHiwzelEqjfNVIlfaVC3EXfd9CDu1Dz219zOaWcMZNTwy/5ynGlq+0ipnoKCXOTk+n79\nHsjL9+HzgcsVYHMyEdFMlfid1s3a0/qB9n/7sfyCPB7+zz2s3rSC0KBQLh+lm9ilejmld3MefSic\ni649SNcOTl5+p5ixl/clKMhldzSRak+lSiqVqU9N4tCWXHr5BpNbfJAnXnyEH37+lt49TteaWFIt\nBAcH8uHce3nuqbksXp/F6MubcP7InnbHEhFUqqSSWbNxBZ3LTsfExwZWEOdLIndVIc9ueJyM/XsZ\nftYouyOKlLuIiBBuvXOYpWP6fD42rN9LaWkZTZul4HLpnweR46XvGqlUwkMjyc/LoYQiQgmnmXHk\nMmGcuxbvffQ65w4eiWEYNqcUqVyKiz1cdN4Utm/dTVCgg+DQKGbOvpvYOG2ALnI8dKO6VCrXjL2F\n9YHL2B+wkwD+uPRCma/MxmQildfT//mY6JBMNi5IYu38RHq2L2HShDfsjiVS6ahUSaXSsU03pt33\nLAPOOpNcVzb72EGeeZgNgcvp1u6Uv52lys3PIfvQAT0xKHIUmzfu4qzTg3A6DQzDYOjAELZs2m13\nLJFKR5f/pNJJrZ1Gau00OrTuyozXnmBv3mbat+zImAuu+sNxPp+P6TMe4oefv8FpOKmdVIdJd0wj\nIjzSpuQi/qlRk1Rmzd3KeUNMnE6Y+XERDRtrM26R46VSJZVWer3GTL33maN+/PNv57Bq6Qq6lg0g\ngAA27l7BtGce4N7bHqnAlCIVY9vW/bz52jd4PKWcPawb7To0+Nfvveq6QVxy4QYadNlOUKCD6JgY\n3v1AD32IHC+VKqmyNm5eR6y7Fk7jyJd5kq8eK375nq07NlG/bkOb04lYZ8vmDAaddg+XnhdCQqTB\nhcN/4PmXb6DXqc3/1fuDgwN5+/072bIpgzKvl/SGSTidWkxU5HjpniqpspJq1eaQkfnrvVSHyCSY\nMN7678s2JxOx1ovPzeXKi0N46K5Y7rguhicfjOaJae8f1xiGYZDeKIkmTVNUqEROkEqVVFlDBoyg\nJKiQhXzJUvNb9rCNZNIoKi60O5ocRWlpGfdPfItTu9zMkAH3sOinjXZHqhSKi0pIiPutCMXHBlBS\n7LYxkUj1pFIlVVZQYBCXXnglhgsSSKE5HdkftJMeXbTyur+aOP4N1iz9kRenBnLFBUVcfMFUNm3Y\na3csv3fWsB5MfqKAefMLWbSsmJsm5jJ4qFZZF6louqdKqrR+vQZSVFzI7LkzOWRmMOT0czmj7xC7\nY8lRfPD+Tyz9PIGUZBftWwezeLmHz+cup2HjZLuj+bXefVty3+RLGf/IbEo9pQw7fyDjrtKemCIV\nTaVKqjTDMBgyYARDBoywO0qltGnDXp6cPpuC/EIGDOrK8PO7l+v5goOcHDzsI+V/HSo7xyQhXRsF\n/xtnn9OFs8/pYncMkWpNl/9E5G/t2H6AwQPupUXdzYzof4Dpj7zBC89+Xq7nvOHWYQwbk82TL+Zw\n3V3ZLFhscs7wbuV6ThERq2imSkT+1sx3fuDCocHcfk0NABqmubjgmrlcdmX5XVYaPaYvibVi+Gbe\ncqJiwvn82wHaf05EKg2VKpE/OZx7iJfefJq9+3aRXr8Jl1xwBSHBoXbHqnCmeWR17f/ndBr4fOW/\n1U//M9rS/4y25X6eE+HxlDF71iKysvLo0rURbdvXtzuSiPgRXf4T+R23x81t913FjiU7Cd8Vx6oF\nK5k45dZquW/g0HO78up7xTzzag4ff1nAxdcdYuTFfe2OZZvS0jJGDHmAma+9w8HtXzBqxEP8990F\ndscSET+imSqR39m8bT2e/FKaeJthGAbRpfEs2vkFWQczqRmXaHe8CpXeMImZs+9i+tT3KSosZtTY\nflwytt/fHmua5t9uZl2VzP1kGT7PAb75oCYOh8Ho88LoN+I1zj2vfG/eF5HKQ6VK5HccDgc+fL/7\nGxMfJg5H9VxhulXrerzy1q1H/fiO7Qe44tLHWbFiD7VrRzH9mavo0bNpBSasOIcOFdCogQuH40h5\nbJIeSG5uCT6fD4dDk/4iost/In/QMK0p0XHRbHStYL+5m3WBS2nZpA2xNeLsjuZ3fD4fI4c/zIiB\nJRRsq89zD4cy9qLHyNh3yO5o5aJrt8bM+aKQ7xcWk5fv5bZJh+jRs6EKlYj8Sj8NRH7H6XQy5Z6n\n6NCnIyEtAugz8DTG3/jAHy5tmabJzDlvcvnNF3LN7ZewcOn3Nia2T1ZWHlkHcrjpimgCAw1OOyWM\njm1CWbF8u93RykWjxslMf/oqLr4hn6RWu9iwO5HnXrrB7lgi4kd0+U/kT0JDwhh74TVH/fj7H7/F\nx3NmUd/dnFI8PP7sZEJvDqdVU/98Yq28REaGUuL2sXN3KakpLkpKfGze5iauCi+B4M9PJoqI/VSq\nRI7TN99/QZq7GVFGLACFnnzmL5hX7UpVSEggE+49jx5DZjGwbyg/L3fTtmMzOnRKtzuaiIgtVKpE\njlNgYBAePL++LjNKCQoOtjGRfcZe0Z9WbeqzauV2epwRS/8z2lb5pwD9gdfr4/vv1pKTU0inzukk\nJcfaHUlEUKkSOW4XDr+UqU9OosiTj9coJStoL4NPv9fuWLbp0Cn9uGan3n7jO2Y8PYcyr48RF/bm\nmuvP/FdFzOfz8fPCTeTlFdOufX3i4iNPJnalVVpaxqgRU8jK2EPdOi7uvKWY196+lU5dGtodTaTa\nU6kSOU4dW3fl3tum8N2PXxEYGMigfvdRKyHZ7liVwqdzljDt4bd5/YkYQoINxtw0l5DgQMZe8c9b\n35SVebnkwkfZvmU7Kckublzr5p1Zd9Kqdb0KSu4/3n/vJzyFe1n8WQJOp8GHcwu47cbnmb9omt3R\nRKo9lSqRE9CsUSuaNWp1zONM0+Rw7kECApxERUSf0LmKiz1kHzhITM0aJ/R+f/LpnJ+4+4ZwuncK\nAeCRCZE8+PSPxyxVM99ZQMHhnaz8KhGXy+DN9/O49frn+HL+lIqI7Vf27TtE57ZOnM4js3vdOgaz\nb1+GzalEBLSkgki5KSou4o77r+Wymy5g9HXDePiJiXi9Zf/qvaUeD2899BTntBpNvYRxnNtuNMNa\nX8y+bTvLOXX5Cg0LISPT++vrfZleQsOOfT/a7l3Z9OjkxOU6UiR6dw9l9+7D5ZbzRJWWlnH7TS9S\nN/ES0lPGMG3KLMu3OGrfoQHvzSlh995STNPksefzaN+h+s3YifgjzVSJlJOX33qanB15dC3tj4mP\ntasWM/vzmQwbeMEx3/v0LXey48f1JHvq4SKCTPduwvfV5JFLb2Xqx7MrIH35uPyqQZzZfwm5+T5C\ngg2efa2I19+5/Jjva902jfvGf8m1Y8qIjw3gmVfzaNU6tQISH59pUz5g+4blbFlUm8Jik7Munkdy\ncjznjexp2Tl6ndqcMVcMpkmP93E4oGmzZF59+2rLxheRE6dSJVJONmxeR0JpCg7DATiI8ySzYeM6\nGPjP7yspLmLZ99/R03smAUYAsSSSZx4mhFC27vyFstJSXLgq5HOwWnqjJD77+gHeeeM78rxe3p/T\njRYtj12OTh/QhlUr+lK/06eEhgRQOyWON2ZeVQGJj88P367kodsjiI9zEg/cMC6UL79bYWmpArjq\n2kFcdkV/ios8REaFWjq2iJw4lSqRcpKUmEzG/gPUMOMxTZM810GaJTU65vuOPAlnYPLbZSMTH4Xk\nEREZjdPlguJyDF7O6qUlMH7iiON+323jz+XKawdRWFhCzZpRfrk9TExcJGs2HqBX1yOv124so0Zs\nVLmcy+Vy4oqq3j/CPZ4yXK4ALeMhfsP/fiqJVBHjLr6O/MiDrAr+kZXBPxCYEMDwsy465vuCgkPo\nenp/1oYsJtPcwwZzOQVGLvtDdnDdU/dXQHL/FRERQmJiDb8sVAB33nMh9z9ewKU3HmTE5dnM+tTL\ntTeeZXesE5KVlcuF5z5Eg9pj6N7hRhb8sM7uSL/atTOL03rdQUrNS2iSdjmffbrM7kgigGaqRMpN\nXExNnp36Bhu2rCUgIIAm6S1wOf/dZbtxD97LZ2+/zNZFi6kTGUvbAefQvmdrPJHplOaXc3D5i7Iy\nLzu2HyAsPJhatY7+FGbTZinMmz+ZLz9fQUBAAJOf6EBMbOXctmfMyGl0bJHD648m8/OKEi4Z9Rjz\n5j9EndR4u6Mx+oKpnHemh0Vz6rNkZQmDL36Gho0epH6DRLujSTWnUiVSjkKCQ2nTvMNxvy/A6eTs\nq0dT+/YhpAdlstmdAMCeAqsTyrHs3XOQ84dNprAgn7y8Moae25WHp4056iWn2ilxXHpZvwpOaa3i\nYg/Llu1g/n/TcDgMBvYNo08PN4sWbvzHUlVU5GbN6p0EhwTSvEWdcplRLCgoYdOmTG67uh6GYdC5\nXQh9eoSzbOkWlSqx3Ul9xRuGca5hGGsNw/AZhtHeqlAiUjF8Ph8znvmM0edP4ZbrZ5Cx7xAA+/Ye\n5OOPFvPD9+vw+Xw2p7TXLdc/xzlneNm6KIlti2uzYvEyZv13od2xylVgoJOAAAc7dh9ZAsTrNdm2\no5SoqLCjvmfP7mxO7Xobd98ynTEXTmbUiCl4PP9uCZHjERoaiMsZwLpNR7aKcrt9rNngJiHhxNaB\nE7HSyf4asQYYCnxvQRYRqWD33v0mH82cw8jBWSSErWVg3wl8+fkKurW7k4lXzmbs8Ge5cNjjeL3V\nt1itX7uHi84NxzAMIiMCOLt/IOvWVO71wo4lIMDBxEnn0/ucTG5/4CCnjThAeI1a9OnX8qjvGX/r\nS1w0zGDJ5wms/yEJ3Ht45YWvLM/mcDiY8til9B1+gEtuOETngZk0ad6Ynqc0s/xcIsfrpC7/maa5\nHtCTFyI227s968gf/nT1Y1vB+qO+x+czefmFr9mxpA7xcU7OPRPWbznAVWOfJ62wNfFGEj7Tx6qF\nC5gzezFnD+tcjp+B/6qXVpNP5uVx7Zho3G4fX35fyrALa9kd6w+ysnLZtSOLOnXjiY+35mnDMZef\nTqOmKSxZtJlhI2twzoiuOJ0BRz1+29YMHrzpyPIOLpfBgN6BrNq825Isfzb8/O40bZ7C8qXb6H9O\nNH1Pa6V/h8Qv6J4qkUqudXoibN7P1u1ZFHmdsBd2JTvYUSuautFHv6na5/Ph8/HrdicAAU4H+QUF\n1ODIfTMOw0GYJ5q9ew6W++fhrx6ZfjnDz3qAdz48QGZ2Ka3aNOJ8i9edOhnvv7eA8be+Qt06QezY\n5ebhaWMYem5XS8bu3qMp3Xs0/VfHNmlahzdn7WRKk0CKi01mzXUzeHj5rfTevEUqzVv43wKwUr0d\ns1QZhvEVf/n9F4C7TNP86N+eyDCMccA4gPjYhH8dUESOrXV6Iq2BlZv3s9VdQBGB7CYWo+yf9wts\nOegUzrp0KXdeHcbyNR6+W1RGzbQ0dm3bTD1vE9wUc8iVQZt2aRXzifih9IZJfL94GmtW7yQsPJgW\nLVP9ZlYkKyuXO295hfmzE2jWKIg1G9yccvZL9DylOXHxkRWa5cGpYzh/6IM06LKPggIvvfu15qJL\neldoBhG7HbNUmabZ14oTmaY5A5gBkJ7W2NrNsEQE+N2s1a4jxcpH4D8e3+PC61n24Xvc9NgygqNi\nGHr/pTgCnMyceBe7sz7GNL1ccG1HarWuoE/AT0VEhNClW2O7Y/zF7p3Z1K0TRLNGQQA0bxxEakoQ\nu3ZlVXipqlkzii++e4jt2zIJCQmkdkpchZ5fxB/o8p9IJeQuKWbj5uV4CqNp3qg1oSG/bVXy+2J1\neFfWMcdqkNyPBslHlgAwt4MXGDryAXJiSwhIc1CzTh47C7cC60kLb1JOn5GciDqp8ezc7WbVWjet\nmgWxaq2bXXvcpKbWtCWP0xlAesMkW84t4g9OqlQZhnE28CQQD3xqGMZK0zRPtySZiPyt/JwcJo4c\nRelBD05HAL7gMqZNep7YGr/NDPz/5cATtXLzfrYeMigKd7Lb9f8LlqpY+Zu4+Egeefwy+pzzAinJ\nQeze52baf8YRG1c5FxwVqexO9um/D4EPLcoiIv/Cf594mqDsYJqVdsAwDLaWruXlt5/h1qvvsewc\n/z/bVRIQQhFglNUg01uDVLZbdg6xxpBhnel5SjN27cqmTp24SruCu0hVoMt/IpXMgZ17iCyN+fVm\n6WhvLJmZGTanEjvFxEaoTIn4Af/clVREjqpRx7ZkBu3Ga5bhNb3sd+2iSePmv348+9ABvl/0NctW\n/4zX57UxqVRGbncpj0z+L6PPn8LEu94gL7fI7kgilYZmqkQqmTMvHc2+tVv4Yf6nGIZB26YdGXXO\nWADWb17DxCm3EG3EUUwhyXVq88Cdj+N06ltdjs00TS67+DEcZbsZOSyYz7/dwzmD1/HJvPsJDNTX\nkMix6LtEpJJxulzc8MAUVs9ZRYu0moSFhv/6senPP0SauzkJRm1M02T1jp+4b9pt1EmuR+/up1O/\nbkMbk0t5yM8vpiC/mITE6JPewHjf3kMsXrSJ3ctTCAw0OGdQOG36ZrJi2TY6ddHXzv9bungLd9w8\ng4yMHDp0TGfaE1fo4QABdPlPpNIKDgr9Q6ECOJRzkGiOPAVoGAahnki2rdnG6i9/4Y77r2Xdpl/s\niCrlZPqjH9I8/Ur6dL+VU7rcyp7d2Sc81uaN+3jzte/w+Xz8vps5nUa131T79/btPcjIEVO4/Uof\ni+fWpF7N3YwZ9ajdscRPqFSJVCGN0pqyO2ALpmlSYhaxn13UozFpNCXV05i333/F7ohike+++YW3\nXv2MjT+msG9VCued6eWacU+e0FgLfljHwH4TyN7xFcGBPkaMy+CLbwu5ccIhPN7Qar2i/p8tWriJ\nHp1CGD44gtpJLh6bFMOyZTsoKCixO5r4AZUqkSrk5qvvxlXb4PuAOfzE50QTR6xxZJepIIIpKSm2\nOaFYZdWK7Zx9RjC1EpwYhsFVoyNZtXLXCY11312vMuPRGF58PJENP9Vl83YPF16ZSXZJQz74ZCLB\nwf+8Mn91EhERwq69pfh8RzYG2be/DNOE4GDXMd4p1YFKlUgVUiMqhukPvMDbz37CLVfdQ1FgHofN\nLHLNg+wI2kDvXlqbt6pISY1nwc+luN1HLs19vaCIlJR/3uvxaLKz8mnW6EhxCgt1cP6QSMLCAjh/\nZF/dK/Qnp/ZpQVhkIgNHZjFx6kFOHXaAO+4+B6czwO5o4gd0o7pIFRQaEkavLn3xeNy8/9Hb+Ewv\nw/qdz4DeZ9kdTSwyZGgn5s5ZSKs+G6lbJ5CVa9y8+d5tJzRWl+5NuOXeNbz2ZCJ795fx/Bu5FJU4\niIkNP/abqxmnM4B3P7yLt9+cT8bew0yelk7f01rZHUv8hEqVSBXWr9dA+vUaaHcMKQcOh4MXXruR\nJT9v5vDhQtq0S6NmzagTGuvR/1zOoH53k9RyOyEhBhHhLgYP6UTjJrUtTl01BAY6GX1pH7tjiB9S\nqRIRqaQMw6Bj55Nf6iA0NIhvfpzKN1+tZt3a3aTVT2TAwLYWJBSpXlSqREQEgN59W9K7b0u7Y4hU\nWrpRXURERMQCKlUiIiIiFlCpEhEREbGASpWIiIiIBVSqRERERCygUiUiImKjsjIvRUVuu2OIBVSq\nREREbPLUfz6mXtIY0utcxtCB93HoYP7fHpdzuJBnnpzLlAdnsWzJlgpOKf+WSpWIiIgNvvpyFa+/\n+DEbFtQmf2saLRoc5Jbrn//LcTmHC+nfezzrl80loGg+o857mLmfLLMhsRyLFv8UERG/5/Md2Tja\n4XCwdct+vvx8BUHBLs4e2pkaMf9uj8LMzBx27cgitV7NE97Sx0pLFm3kwmHB1E5yAXDLlZF0OXPz\nX4578/Xv6NTax+tPxgPQp0cI1014kzMGtavQvHJsKlUi8reysveyfuM6jMQwGg/uaHccqaZ8Ph/3\nT3ybF5//Cp/PpO9pLVj443rOPTOMnFyTp6fP5vNvHyQ+/p9L0n/fXcBdt71CWt3/a+/Oo6Oq7z6O\nf76TfWENAQJEwiYIGEJlU2utgCwiRARbC6VSKthWW1TU1qJYW0EUH21diqXV+lSx1rZiXdCqYCVs\ndWGHsIgiAUEIkIQQyPp7/khE+pCQhNzkTpL365ycw52Ze+czvwOZD7/fvTOR+mTXCd3/0BSN+9bF\ndfQqytemXUstfbVYJSVOgYBp9ZoTSkhoftrjjubkKSnRTm4nJYYpJye7LqOiilj+A3CadZs/1JN/\nuFNbXlqij578qxZ+/w7lcyItfPDMU0u06t8r9Mn7idq3oaOyD2zTNweF6ndz4/T8/FYaNTig3z/x\nxhmPcfBgtn5x+5/03qI2+s/i1nr3pTb6+YyndSiz/POX6srESZcqt6CVLrrygK6Zekg/mZmt+x+a\netrjhg5L0R+ey9O/V+ZpV0ahbp51RMNG/vcs1ZczefAXpQrAaeY//bB6FPZV96IUJecPUuALadXf\n06p1jMOHjuqdt9Zr9cpt/MLHWVuZtl7Tp0ardatQNWsaortvbamMfUUn7+/RNURZh3POeIzduw6q\nU8cI9eweIUnq3SNC53SI0O7dB2s1e2UiIsL0t1fu1s13TtWwsddqSdpc9RvQ9bTH9R/YTQ88Mk0/\n/gJeSLQAABH7SURBVEW+LknNVOvEFP167nWSpMyDORo/5ldqF3edenSaqn+8uLKuXwZOwfIfgNPk\n5Garo3pJksxM0QWxyj2cW+X9t2zOUOrwOYpxTZVbmKsWraM0edpgTfjuN6p8/gsgSfGtW2rtpgxN\nuLp0e82GfB3ILNH+A0U6fKRYv/3jMc26r+8Zj9ExqbV27c7X+s356tMrQms3ntDuvfnq2DG+Dl7B\nmYWFhWr4yDPnl6TRqQM0OvX0Zfgbpz2q5K6ZWvynztqyvUBXfPdpdemWoJS+nWojLipBqQJwmj69\n+mnn2q06tyhZJ5SnfRG71b/3Jfrs2CFJ6ZXuf8MPnlFCzrlqp04qcSVa89kyPXLPG/rdY4v13NIp\natYiqvZfBOqVzrHnlXv79NvGatTQNfp4V6Yiwk1pq/N10SUp6n3pBoVHhGr6rWM1akz/Mx67VXxT\nzfvNVA0Z/wd1aBeuPfsK9PCjN6hlXJPaeCl1annaDi36fZIiIgLqe36kxl8Zo9Urt1GqfEKpAnCa\nn079mR564ldK2/i6QkMjlDzuWmXFnK+/b4pWYsKhSvf/bHe2+rpkyaSABdTStVFJUZEKDuXr3se2\naNDkIXXwKlBfDIzbKSm93GLVtm0LLUl7QG8u/kjFxU73PpxyVlfupV49SJdc2ksZGZk655z4BjNj\nGt8qRus35+ui/lEqKXHamF6o5Iub+h2r0aJUAThNdFS0Zt02V845mZnW7divnem5yjsnVE49K92/\nTafu2rt5l7oU91ShCvSFMtRZPXWs6KhOfB4jt6/yY6Bx2KMvyv5UcbFq3iJG1078Ro2fq2VckwYx\nO3WqOfOmaOyUJ5U6Ikbp2wsVGtlGqWO5WtcvlCoAFTIrvYw7pVtbacd+7dydq+iQyve7auLNev6R\nWVp24FUVlxSpnZIUrgh9HLZJX+8ySdH7azk46g0rDteevQnKaB+nxIRDGhi3XB1j4ipcDsR/u2J0\nP3Xqco9WrdiqCy9volGj+yksjLd2vzDyAKrky2Klz49X+thIRemmqQ8oK+uglrz7orbvWKOjYTm6\ncugUdY/tWqVjoHE4X5HamZ+rPIUrQ3Flt1Y8a4XTndczUef1TPQ7BkSpAlANKd3aVnOPdho8oE+t\nZEEDsmO/ToREKU+SFbXQF8Ut1FGf+p0KqDZKFQAAtcg5pxcWLtOKZesVF99SN908utJPgEf9xId/\nAgBQix6c8zcteOwvGtJ/l+zY+7piyN3KzjrmdyzUAmaqAACoJc45/e6xN5Se1kHtE0rfcndNPqg3\nXv/IkysaEVwoVQAA1BLnnIqKShQb89UXIjeJDaigoNjHVKc7mpOnv/5luY7mHNdlQ5P58NCzxPIf\nAAC1JBAIaPw1AzXhR4e0/D/H9fjTWVqSdkKXDw+eCzhysvM0cshd+vC9V3Qic4m+M2623ly8xu9Y\n9RIzVQAA1KJ5v52mB+e8qBn3bVCr+NZ66bVJSmjX0u9YJy189j316VGg5+eXfhfi8G9G6aezntWI\nK77mc7L6h1IFAEAtCg8P1V2/nCBpgt9RypWddUxdkr5auOqaFKbs7CwfE9VfLP8BANCIDR6arKee\nz9OK94/r8/1FmnFvli4f1tfvWPUSpQoAgEZswKBzNfvB6zX5lmPqe/l+Rbfoqfse/L7fseollv8A\n1HvOOf175dtav+kjtYprrbFXfFsx0bF+xwLqjavGDdJV4wb5HaPeo1QBqNecc7r7gRnasmWjIl2U\nIkOitWzVEj06+ylFRkb5HQ9AI8LyH4B67c8vLtC2zenq7lIUr3Y6UnxQ+dkF+mD9Sr+jAWhkmKkC\nUK8tfudlpehiRVvpct9xd0y5RdkqKCzwORmAxqZGM1VmNs/MtprZBjNbZGbNvQoGAGfDyel44JhS\nevX3OwqARqamy39vS+rtnEuWtF3SnTWPBABVN+ryq5Ue/pEOuL361KXrQGCvZt1yv+JatPI7GoBG\npkbLf865t07ZXC1pfM3iAED1TLrmejVv1kKrP1iudk3b6o5rZqpDwjl+xwLQCHl5TtUUSX+t6E4z\nmyZpmiTFx7Xx8GkBNGZmpjHDx2vMcP5PB8BflZYqM3tHUtty7prpnPtn2WNmSiqStLCi4zjnFkha\nIEndOvdwZ5UWAAAgSFVaqpxzQ890v5lNlnSlpCHOOcoSAABolGq0/GdmIyTdIelS51yeN5EAAADq\nn5pe/fe4pCaS3jazdWb2pAeZAAAA6p2aXv3X1asgAAB4LS8vX7+6+1mtWLZZ8a2badZ91ymlbye/\nY6GB4mtqAAAN1i03ztfhvev03GNRuu7qo7r26jnak5Hpdyw0UHxNDQCgQSouLtGrr6xRZnonxUQH\nlNI7QkuXF+rdJRs1afJlfsdDA8RMFQCgQQoETOFhITp0uPjkbZmHSxQZFe5jKjRkzFQBABokM9Mt\nt6dqxIQ39MNJUVq7uVi794Vr5KgL/I6GBopSBQBosKbPuEpJnRO0YtlGJXRpqdceGq7Y2Ei/Y6GB\nolQBABq01LEDlTp2oN8x0AhQqgDgLHxxcJ8W/PlRfXFgv3r1OF/fn/BjRUYwAwI0ZpyoDgDVlHvs\nqG6750fK3JCllp+305q0NZrzm7v8jgXAZ8xUAUA1bdy6TuGFkUpy3SWTmhXGKS39NWXnZKlpk2Yy\nM78jAvABpQoAqik0JFTFKpZzTmamEhWrqLhIE24crZBAiM7vkaLxoyeqb+/+fkcFUIdY/gOAakru\n+TVFNo/Q9tB1+tzt0trAcsUoVrFqqpYlbZS9JU9z/uduLV7yst9RAdQhShUAVFNEeIQe+uV8DRg2\nUC0uaKITgWNqq46KUKSSNUhdrKeSiy7UMy/83u+oAOoQy38AcBZiY5poynd+LEm6YcZE5R3IVaSi\nT55PFalonSg4fnKJEEDDx0wVANTQT6bersNh+7VfGTroPleey9WO0PXqn3whhQpoRJipAoAa6t0j\nRY/f/4xeX/Kylq9cqsKiQvXpfYFu+sHtfkcDUIcoVQDggYQ27XX9hBt1/YQb/Y4CwCcs/wEAAHiA\nUgUAAOABShUAAIAHKFUAAAAeoFQBAAB4gFIFAADgAUoVAAQx55yyso/oaG6O31EAVILPqQKAIHX8\nRJ7unfdz7fgkXSWuRBf1v1S3/mimQgIhfkcDUA5mqgAgSD313BM68mmWLioaqYuLR2rzmo3655t/\n8zsWgApQqgAgSG3dsVltChMVsIBCLFTxBe21bftmv2MBqAClCgCCVNs27ZQVkimp9NyqnLDDSmjb\n3udUACpCqQKAIHXDddOVHXtQGyJXal1kmsJah+hbqd/zOxaACnCiOgAEqfi4Npo/7zml79iokJAQ\n9To3WWFh4X7HAlABShUABLHoqGhdkDzQ7xgAqoDlPwAAAA9QqgAAADxAqQIAAPAApQoAAMADlCoA\nAAAPUKoAAAA8QKkCAADwAKUKAADAA5QqAAAAD/CJ6gBOcs5p0eIXlLZyqaKiYjTp29frvG69/Y4F\nAPUCM1UATnrh5f/VokUvKmZ3KxVuk2bNnaFdGTv9jgUA9QIzVQBO+tfSV9Utv4+aWHNJ0vHCXL23\naomSErv4nAwAgh8zVQBOCgmEqETFJ7dLrEShISE+JgKA+qNGpcrMfm1mG8xsnZm9ZWbtvAoGoO6N\nT52oreFrtNd9qk8tXYfC92nIJSP9jgUA9UJNl//mOefuliQz+6mkWZJ+WONUAHwxcnCqmsQ2VdrK\npYqOTtDPxtyltq35vxIAVEWNSpVzLueUzRhJrmZxAPjt6wMu09cHXOZ3DACod2p8orqZzZb0PUnZ\nkir8TWxm0yRNk6T4uDY1fVoAAICgUuk5VWb2jpltKucnVZKcczOdc4mSFkq6qaLjOOcWOOf6Oef6\nNWva3LtXAACoc1nZR/T+2hXasn2DnGORApCqMFPlnBtaxWMtlLRY0j01SgQACGrbdm7RrAduUxM1\nU15Jrnr06KWZt85WSIArRdG41fTqv26nbKZK2lqzOACAYPfI/NlKOn6eep0YqAvyL9POrTu0bNUS\nv2MBvqvpOVVzzay7pBJJn4kr/wCgwTt45IA6KVmSFLCAYgtb6MCh/T6nAvxX06v/xnkVBABQP3RO\n7Ka9uz5VUnF3FShfh8P3q2tSd79jAb7jE9UBANVyx0/uUX6ro1oV9qZWh7yl0SPH6YLkgX7HAnzH\nd/8BAKolPq6N5j/4rI5kH1ZUZLSio6L9jgQEBUoVAKDaAoGA4lq08jsGEFRY/gMAAPAApQoAAMAD\nlCoAAAAPUKoAAAA8QKkCAADwAKUKAADAA5QqAAAAD1CqAAAAPECpAgAA8AClCgAAwAOUKgAAAA9Q\nqgAAADxAqQIAAPAApQoAAMADlCoAAAAPUKoAAAA8QKkCAADwAKUKAADAA5QqAAAAD1CqAAAAPECp\nAgAA8AClCgAAwAOUKgAAAA9QqgAAADxAqQIAAPAApQoAAMADlCoAAAAPUKoAAAA8QKkCAADwAKUK\nAADAA5QqAAAAD1CqAAAAPECpAgAA8AClCgAAwAOUKgAAAA9QqgAAADxAqQIAAPAApQoAAMADlCoA\nAAAPUKoAAAA8QKkCAADwgCelysxmmJkzs1ZeHA8AAKC+qXGpMrNEScMk7a55HAAAgPrJi5mqRyTd\nIcl5cCwAAIB6qUalysxSJe11zq2vwmOnmdmHZvZhdk5WTZ4WAAAg6IRW9gAze0dS23LuminpFypd\n+quUc26BpAWS1K1zD2a1AABAg1JpqXLODS3vdjM7X1InSevNTJI6SFpjZgOcc/s9TQkAABDkKi1V\nFXHObZTU+sttM9slqZ9zLtODXAAAAPWKOefNSlx1SpWZHZT0mSdPXH+0kkThLB9jUz7GpWKMTcUY\nm/IxLhVjbMp36rh0dM7FV7aDZ6UKZ2ZmHzrn+vmdIxgxNuVjXCrG2FSMsSkf41IxxqZ8ZzMufKI6\nAACAByhVAAAAHqBU1Z0FfgcIYoxN+RiXijE2FWNsyse4VIyxKV+1x4VzqgAAADzATBUAAIAHKFUA\nAAAeoFTVITP7tZltMLN1ZvaWmbXzO1MwMLN5Zra1bGwWmVlzvzMFCzO7xsw2m1mJmTX6S57NbISZ\nbTOzj83s537nCSZm9rSZHTCzTX5nCSZmlmhm75rZlrJ/S9P9zhQMzCzSzN43s/Vl43Kv35mCjZmF\nmNlaM3utqvtQqurWPOdcsnMuRdJrkmb5HShIvC2pt3MuWdJ2SXf6nCeYbJJ0taRlfgfxm5mFSHpC\n0khJPSV9x8x6+psqqDwjaYTfIYJQkaQZzrmekgZJupG/N5KkfEmDnXN9JKVIGmFmg3zOFGymS0qv\nzg6UqjrknMs5ZTNGElcJSHLOveWcKyrbXK3S75GEJOdcunNum985gsQASR875z5xzhVIekFSqs+Z\ngoZzbpmkw37nCDbOuX3OuTVlfz6q0jfJ9v6m8p8rlVu2GVb2w3tSGTPrIGmUpD9WZz9KVR0zs9lm\nliFpopipKs8USW/4HQJBqb2kjFO294g3R1SDmSVJ6ivpP/4mCQ5ly1vrJB2Q9LZzjnH5ym8k3SGp\npDo7Uao8ZmbvmNmmcn5SJck5N9M5lyhpoaSb/E1bdyobl7LHzFTpVP1C/5LWvaqMDYCaMbNYSf+Q\ndPP/WzVotJxzxWWno3SQNMDMevudKRiY2ZWSDjjnPqruvqG1kKdRc84NreJDF0paLOmeWowTNCob\nFzObLOlKSUNcI/vwtGr8nWns9kpKPGW7Q9ltwBmZWZhKC9VC59xLfucJNs65LDN7V6Xn5HGhg3Sx\npDFmdoWkSElNzew559x3K9uRmao6ZGbdTtlMlbTVryzBxMxGqHSadYxzLs/vPAhaH0jqZmadzCxc\n0rWSXvE5E4KcmZmkpySlO+ce9jtPsDCz+C+vtDazKEmXi/ckSZJz7k7nXAfnXJJKf88srUqhkihV\ndW1u2bLOBknDVHplAaTHJTWR9HbZx0086XegYGFmY81sj6QLJb1uZv/yO5Nfyi5muEnSv1R6svGL\nzrnN/qYKHmb2F0mrJHU3sz1m9gO/MwWJiyVNkjS47PfLurIZiMYuQdK7Ze9HH6j0nKoqf3QAysfX\n1AAAAHiAmSoAAAAPUKoAAAA8QKkCAADwAKUKAADAA5QqAAAAD1CqAAAAPECpAgAA8MD/AX84Mp/U\nOAzGAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plot_boundary(classifier, X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Така изглежда неговото дърво:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": {}, + "outputs": [ + { + "data": { + "image/svg+xml": [ + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "Tree\n", + "\n", + "\n", + "\n", + "0\n", + "\n", + "X_0 Vertical ≤ -0.5159\n", + "gini = 0.4992\n", + "samples = 100\n", + "value = [48, 52]\n", + "class = Class_1\n", + "\n", + "\n", + "\n", + "1\n", + "\n", + "X_0 Vertical ≤ -0.9725\n", + "gini = 0.1327\n", + "samples = 42\n", + "value = [39, 3]\n", + "class = Class_0\n", + "\n", + "\n", + "\n", + "0->1\n", + "\n", + "\n", + "True\n", + "\n", + "\n", + "\n", + "12\n", + "\n", + "X_1 Horizontal ≤ -1.6008\n", + "gini = 0.2622\n", + "samples = 58\n", + "value = [9, 49]\n", + "class = Class_1\n", + "\n", + "\n", + "\n", + "0->12\n", + "\n", + "\n", + "False\n", + "\n", + "\n", + "\n", + "2\n", + "\n", + "gini = 0.0\n", + "samples = 28\n", + "value = [28, 0]\n", + "class = Class_0\n", + "\n", + "\n", + "\n", + "1->2\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "3\n", + "\n", + "X_0 Vertical ≤ -0.9607\n", + "gini = 0.3367\n", + "samples = 14\n", + "value = [11, 3]\n", + "class = Class_0\n", + "\n", + "\n", + "\n", + "1->3\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "4\n", + "\n", + "gini = 0.0\n", + "samples = 1\n", + "value = [0, 1]\n", + "class = Class_1\n", + "\n", + "\n", + "\n", + "3->4\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "5\n", + "\n", + "X_1 Horizontal ≤ -0.9927\n", + "gini = 0.2604\n", + "samples = 13\n", + "value = [11, 2]\n", + "class = Class_0\n", + "\n", + "\n", + "\n", + "3->5\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "6\n", + "\n", + "gini = 0.0\n", + "samples = 6\n", + "value = [6, 0]\n", + "class = Class_0\n", + "\n", + "\n", + "\n", + "5->6\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "7\n", + "\n", + "X_0 Vertical ≤ -0.8159\n", + "gini = 0.4082\n", + "samples = 7\n", + "value = [5, 2]\n", + "class = Class_0\n", + "\n", + "\n", + "\n", + "5->7\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "8\n", + "\n", + "gini = 0.0\n", + "samples = 4\n", + "value = [4, 0]\n", + "class = Class_0\n", + "\n", + "\n", + "\n", + "7->8\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "9\n", + "\n", + "X_1 Horizontal ≤ 0.4175\n", + "gini = 0.4444\n", + "samples = 3\n", + "value = [1, 2]\n", + "class = Class_1\n", + "\n", + "\n", + "\n", + "7->9\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "10\n", + "\n", + "gini = 0.0\n", + "samples = 2\n", + "value = [0, 2]\n", + "class = Class_1\n", + "\n", + "\n", + "\n", + "9->10\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "11\n", + "\n", + "gini = 0.0\n", + "samples = 1\n", + "value = [1, 0]\n", + "class = Class_0\n", + "\n", + "\n", + "\n", + "9->11\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "13\n", + "\n", + "X_0 Vertical ≤ 1.7032\n", + "gini = 0.375\n", + "samples = 12\n", + "value = [9, 3]\n", + "class = Class_0\n", + "\n", + "\n", + "\n", + "12->13\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "16\n", + "\n", + "gini = 0.0\n", + "samples = 46\n", + "value = [0, 46]\n", + "class = Class_1\n", + "\n", + "\n", + "\n", + "12->16\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "14\n", + "\n", + "gini = 0.0\n", + "samples = 9\n", + "value = [9, 0]\n", + "class = Class_0\n", + "\n", + "\n", + "\n", + "13->14\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "15\n", + "\n", + "gini = 0.0\n", + "samples = 3\n", + "value = [0, 3]\n", + "class = Class_1\n", + "\n", + "\n", + "\n", + "13->15\n", + "\n", + "\n", + "\n", + "\n", + "\n" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "draw_decision_tree(classifier)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Може да видите, че дървото е доста по-сложно, но за сметка на това отгатва train set-а перфектно. Ако проследите стойностите, може да се уверите, че съответства на графиката по-горе." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# В `sklearn` е имплементиран CART алгоритъм. \n", + "\n", + "## Classification and Regression Trees\n", + "\n", + "L. Breiman, J. Friedman, R. Olshen, and C. Stone. Classification and Regression Trees. Wadsworth, Belmont, CA, 1984\n", + "\n", + "http://scikit-learn.org/stable/modules/tree.html#tree" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Моделът CART е двоично дърво. \n", + "\n", + "* Всеки елемент от дървото може да има нула, едно или две деца.\n", + "* Алгоритъмът работи рекурсивно. \n", + "* Критерии за спиране могат да бъдат:\n", + " * Достигната е абсолютна чистота на елементите в дървото (останали са само един клас данни в последните деца)\n", + " * Достигната е максимална дълбочина на дървото (`max_depth`)\n", + " * Достигнат е минимален брой примери за разделяне (`min_samples_split`)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Алгоритъмът е алчен (greedy):\n", + "* Проверява всяка възможна колона (feature) за всички възможни раздвоявания и избира най-доброто.\n", + "* Сложност при трениране: $O(n_{features}n_{samples}\\log(n_{samples}))$\n", + "\n", + "Следва малко математика, която не е съществена за разбиране на това какво се случва, но описва картинката една идея по-добре:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Оценяваща функция:\n", + "\n", + "Оценяващата функция работи, чрез Information Gain:\n", + "\n", + "$$ InformationGain = impurity(parent) - {WeightedAverageBySamplesCount}\\sum{impurity(children)}$$\n", + "\n", + "$impurity$ е функция, която измерва \"примесите\". В алгоритъма могат да се ползват различни функции:\n", + "\n", + "* При класификация\n", + " 1. Ентропия (Entropy)\n", + " 2. Gini\n", + " 3. Неправилна класификация (Misclassification)\n", + "* При регресия\n", + " 1. Средно аритметично от разликата на квадратите (Mean Squared Error)\n", + " 2. Средно аритметично от абсолютната стойност на разликата (Mean Absolute Error)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "При предвиждане на нов запис, алгоритъмът се спуска по построеното дърво докато стигне възел без наследници.\n", + "\n", + "* Предвижда средната стойнoст от записите останали в последния елемент при регресия.\n", + "* При класификация избира класа представен от мнозинството от записи останали в последния елемент.\n", + "* Сложност при предвиждане: $O(\\log(n_{samples}))$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Функции за измерване на примесите (impurity)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 1. Ентропия\n", + "\n", + " $entropy = \\sum_i{ - p_i log_2( p_i )}$\n", + " \n", + " $p_i= \\frac{size of class_i}{size of set}$" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Пример 1:\n", + "\n", + "Имаме множество:\n", + "\n", + "```python\n", + "['Лъчо', 'Лъчо', 'Стефан', 'Стефан']\n", + "```\n", + "\n", + "Лъчо - 2, Стефан - 2\n", + "\n", + "Пропорции:\n", + "\n", + "Лъчо: $\\frac{2}{4}$, Стефан: $\\frac{2}{4}$\n", + "\n", + "Стойност за Лъчо: \n", + "$$-\\frac{2}{4} * log_2(\\frac{2}{4})$$\n", + "$$-0.5 * -1$$\n", + "$$0.5$$\n", + "\n", + "Стефан има същата стойност $0.5$.\n", + "\n", + "Ентропията на множеството е $$entropy=0.5+0.5 = 1.0$$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Пример 2:\n", + "\n", + "```python\n", + "['Круши', 'Круши', 'Круши']\n", + "```\n", + "\n", + "Круши - 3\n", + "\n", + "Пропорции:\n", + "\n", + "Круши $\\frac{3}{3} = 1$\n", + "\n", + "$$-1 * log_2(1)$$\n", + "$$-1 * 0$$\n", + "$$entropy=0$$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ето функция, която измерва това:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "def entropy(subset_counts):\n", + " subset_counts = np.array(subset_counts)\n", + " subset_counts_normalized = subset_counts / subset_counts.sum()\n", + " \n", + " entropy = sum([-subset_count * np.log2(subset_count + 0.000000000001) \n", + " for subset_count in subset_counts_normalized])\n", + " \n", + " entropy = np.round(entropy, 4)\n", + " print('Entropy for', subset_counts, 'is', entropy)\n", + " return entropy" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Обърнете внимание на `+ 0.000000000001` в логаритъма. Мислете за това като хак, с който са си спестим малко сметки за да избегнем смятана на логаритъм от 0." + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Entropy for [2 0] is -0.0\n", + "Entropy for [1 0] is -0.0\n", + "Entropy for [9 1] is 0.469\n", + "Entropy for [4 4] is 1.0\n" + ] + } + ], + "source": [ + "samples = [[2, 0], [1, 0], [9, 1], [4, 4]]\n", + "\n", + "for sample in samples:\n", + " entropy(sample)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "При два класа ентропията ще е в множеството $\\big[0, 1\\big]$. Имаме $1$ когато двата класа са равномерно разпределени в множеството и $0$, когато множеството съдържа елементи само от единия вид.\n", + "\n", + "При три или повече класа, функцията няма горна граница:" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Entropy for [2 0 1] is 0.9183\n", + "Entropy for [6 0 0] is -0.0\n", + "Entropy for [9 1 0] is 0.469\n", + "Entropy for [5 5 0] is 1.0\n", + "Entropy for [5 5 5] is 1.585\n" + ] + } + ], + "source": [ + "samples = [[2, 0, 1], [6, 0, 0], [9, 1, 0], [5, 5, 0], [5, 5, 5]]\n", + "\n", + "for sample in samples:\n", + " entropy(sample)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 2. Gini\n", + "\n", + "$H(X_m) = \\sum_k p_{mk} (1 - p_{mk})$\n", + "\n", + "$p_{mk}$ отново е пропорцията на класа в множеството." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Пример:\n", + "\n", + "```python\n", + "['Лъчо', 'Лъчо', 'Стефан', Стефан']\n", + "```\n", + "\n", + "Лъчо - 2, Стефан - 2\n", + "\n", + "Пропорции:\n", + "\n", + "Лъчо: $\\frac{2}{4}$, Стефан: $\\frac{2}{4}$\n", + "\n", + "Стойност за Лъчо: \n", + "$$\\frac{2}{4} * (1 - \\frac{2}{4})$$\n", + "$$0.5 * 0.5$$\n", + "$$0.25$$\n", + "\n", + "Стефан има същата стойност $0.25$.\n", + "\n", + "$$gini=0.25+0.25 = 0.5$$\n" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Пример 2:\n", + "\n", + "['Круши', 'Круши', 'Круши']\n", + "\n", + "Круши - 3\n", + "\n", + "Пропорции:\n", + "\n", + "Круши $\\frac{3}{3} = 1$\n", + "\n", + "$$1 * (1 - 1)$$\n", + "$$1 * 0$$\n", + "$$gini=0$$" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "def gini_impurity(subset_counts):\n", + " subset_counts = np.array(subset_counts)\n", + " subset_counts_normalized = subset_counts / subset_counts.sum()\n", + " \n", + " impurity = sum([subset_count * (1 - subset_count) \n", + " for subset_count in subset_counts_normalized])\n", + " \n", + " print('Gini impurity for', subset_counts, 'is', impurity)\n", + " return impurity" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gini impurity for [2 0] is 0.0\n", + "Gini impurity for [1 0] is 0.0\n", + "Gini impurity for [9 1] is 0.18\n", + "Gini impurity for [4 4] is 0.5\n" + ] + } + ], + "source": [ + "samples = [[2, 0], [1, 0], [9, 1], [4, 4]]\n", + "\n", + "for sample in samples:\n", + " gini_impurity(sample)" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gini impurity for [2 0 1] is 0.444444444444\n", + "Gini impurity for [6 0 0] is 0.0\n", + "Gini impurity for [9 1 0] is 0.18\n", + "Gini impurity for [5 5 0] is 0.5\n", + "Gini impurity for [5 5 5] is 0.666666666667\n" + ] + } + ], + "source": [ + "samples = [[2, 0, 1], [6, 0, 0], [9, 1, 0], [5, 5, 0], [5, 5, 5]]\n", + "\n", + "for sample in samples:\n", + " gini_impurity(sample)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## 3. Неправилна класификация (Misclassification)\n", + "\n", + "$H(X_m) = 1 - \\max(p_{mk})$\n" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "def missclassification_impurity(subset_counts):\n", + " subset_counts = np.array(subset_counts)\n", + " subset_counts_normalized = subset_counts / subset_counts.sum()\n", + " \n", + " impurity = 1 - max(subset_counts_normalized)\n", + " \n", + " print('Misclassification impurity for', subset_counts, 'is', impurity)\n", + " return impurity" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Misclassification impurity for [2 0] is 0.0\n", + "Misclassification impurity for [1 0] is 0.0\n", + "Misclassification impurity for [9 1] is 0.1\n", + "Misclassification impurity for [4 4] is 0.5\n" + ] + } + ], + "source": [ + "samples = [[2, 0], [1, 0], [9, 1], [4, 4]]\n", + "\n", + "for sample in samples:\n", + " missclassification_impurity(sample)" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Misclassification impurity for [2 0 1] is 0.333333333333\n", + "Misclassification impurity for [6 0 0] is 0.0\n", + "Misclassification impurity for [9 1 0] is 0.1\n", + "Misclassification impurity for [5 5 0] is 0.5\n", + "Misclassification impurity for [5 5 5] is 0.666666666667\n" + ] + } + ], + "source": [ + "samples = [[2, 0, 1], [6, 0, 0], [9, 1, 0], [5, 5, 0], [5, 5, 5]]\n", + "\n", + "for sample in samples:\n", + " missclassification_impurity(sample)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Когато конструирате дърво, може да подадете критерий коя функция да се ползва. Това е параметъра `criterion`. scikit-learn поддържа само `gini` и `entropy`. Повече информация може да намерите в документацията:\n", + "\n", + "http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "На всяка стъпка алгоритъма се опитва да намери неравенство, което да оптимизира information gain-а. Той се получава по следната формула:" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "$ InformationGain = impurity(parent) - \\sum_k{p_{mk}}{impurity(children)}$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Може да видим различните резултати, които бихме имали при различните функции за оценка на примесите:" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "metadata": { + "collapsed": true, + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [], + "source": [ + "def information_gain(subsets, parent_impurity=1, f=entropy):\n", + " total_count = sum(sum(i) for i in subsets)\n", + " print(\"Total count:\", total_count)\n", + " \n", + " subsets_impurity = sum((sum(subset) / total_count * f(subset) for subset in subsets))\n", + " gain = parent_impurity - subsets_impurity\n", + " print(\"Information gain:\", gain)\n", + " return gain" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total count: 4\n", + "Entropy for [2 1] is 0.9183\n", + "Entropy for [1] is -0.0\n", + "Information gain: 0.311275\n", + "\n", + "Total count: 4\n", + "Gini impurity for [2 1] is 0.444444444444\n", + "Gini impurity for [1] is 0.0\n", + "Information gain: 0.666666666667\n", + "\n", + "Total count: 4\n", + "Misclassification impurity for [2 1] is 0.333333333333\n", + "Misclassification impurity for [1] is 0.0\n", + "Information gain: 0.75\n", + "\n" + ] + } + ], + "source": [ + "subsets = [[2, 1], [1]]\n", + "for f in [entropy, gini_impurity, missclassification_impurity]:\n", + " information_gain(subsets, parent_impurity=1, f=f); \n", + " print();" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Total count: 4\n", + "Entropy for [2] is -0.0\n", + "Entropy for [2] is -0.0\n", + "Information gain: 1.0\n", + "\n", + "Total count: 4\n", + "Gini impurity for [2] is 0.0\n", + "Gini impurity for [2] is 0.0\n", + "Information gain: 1.0\n", + "\n", + "Total count: 4\n", + "Misclassification impurity for [2] is 0.0\n", + "Misclassification impurity for [2] is 0.0\n", + "Information gain: 1.0\n", + "\n" + ] + } + ], + "source": [ + "subsets = [[2], [2]]\n", + "for f in [entropy, gini_impurity, missclassification_impurity]:\n", + " information_gain(subsets, parent_impurity=1, f=f); \n", + " print();" + ] + }, + { + "cell_type": "code", + "execution_count": 33, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Gini impurity for [48 52] is 0.4992\n", + "Gini impurity for [ 9 49] is 0.262187871581\n", + "Gini impurity for [39 3] is 0.132653061224\n", + "Gini impurity for [ 0 46] is 0.0\n" + ] + } + ], + "source": [ + "gini_impurity([48, 52])\n", + "gini_impurity([9, 49])\n", + "gini_impurity([39, 3])\n", + "gini_impurity([0, 46]);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "До тук с математиката. Не е нужно да запомните всичко, но ако ви се налага да дебъгвате какво е открил алгоритъма, това може да ви помогне да си го обясните." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Плюсове на decision tree \n", + "* Дървото е лесно за интерпретация.\n", + "* Лесно се справя с ирелевантни feature-и (gain = 0).\n", + "* Може да се справи с липсващи данни (макар и не за текущата имплементация в sklearn).\n", + "* Компактно представяне на модела.\n", + "* Бърз при предсказване (линеен на дълбочината на дървото).\n", + "* Може да прави класификация с повече класове без допълнителни трикове.\n", + "* Лесен за използване и дава добри резултати с малко експерименти." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Минуси\n", + "\n", + "* Разделя атрибутите само по осите. \n", + "* Алчен (greedy) - може да не открие най-доброто дърво.\n", + "* Експоненциално нарастване на възможните дървета.\n", + "* Овърфитва силно." + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Random Forest" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "За да се справим с проблемите на decision tree обикновено ползваме нещо, наречено random forest. То работи по следния начин:\n", + "\n", + "* Генерира много на брой дървета (10, 100, 1000, т.н.).\n", + "* Всяко дърво е генерирано с различни критерии от останалите (подмножество на данните, подмножество на feature-ите и т.н.).\n", + "* За да се отговори на въпрос, задаваме го на всички дървета и вземаме най-популярния отговор.\n", + "\n", + "Ето някои от причините това да работи по-добре:\n", + "\n", + "* Индивидуалните дървета ще правя overfitting, но по различен начин. Осредненият резултат между тях би трябвало да бъде по-регуляризиран.\n", + "* Ако има аномалии в данните, те ще участват в по-малък брой дървета, съответно по-малко дървета ще overfit-ват.\n", + "* Вариацията в кои feature се ползват ще изследва различни начини да отговорим на въпроса и докато всеки ще прави грешки, по-малко вероятно е всички да правят едни и същи грешки." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "В scikit-learn ползваме random forest по следния начин:" + ] + }, + { + "cell_type": "code", + "execution_count": 34, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlUAAAHVCAYAAADYXg73AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd0VOXCxeHfmZlMegIkIY0kQAi9hN4VEQREEUHBAjYU\ne0VRsaBYEVHUa8N+7QW7WPgsIEpvSodQEiAJSYD0ZDIz5/sD5VpAhExyUvazFmtlMmfes13OJDvv\ne4phmiYiIiIiUjk2qwOIiIiI1AUqVSIiIiI+oFIlIiIi4gMqVSIiIiI+oFIlIiIi4gMqVSIiIiI+\noFIlIiIi4gMqVSIiIiI+oFIlIiIi4gMOK3YaHtrAbBwVY8WuReRfKimrwPSz4fUDHCZOh5tgezn+\n9kCro4mIVKs1q7bnmqYZdbTtLClVjaNieGLaS1bsWkT+pdVbsiiLC6QkBmxRLpIi8+gRtp3mIW2s\njiYiUq0iQ8ft/DfbaflPRERExAdUqkRERER8QKVKRERExAdUqkRERER8QKVKRERExAdUqkRERER8\nwGelyjAMu2EYqwzD+NxXY4qIiIjUFr6cqboe2ODD8URERERqDZ+UKsMwmgDDgRd9MZ6IiIhIbeOr\nmapZwGTA66PxRERERGqVSpcqwzBOA/aaprniKNtNNAxjuWEYy/MLDlR2tyIiIiI1ii9mqvoCIwzD\n2AG8Aww0DOONv25kmuZs0zS7mabZLTysgQ92KyIiIlJzVLpUmaZ5u2maTUzTbAqcA3xnmua4SicT\nERERqUV0nSoRERERH3D4cjDTNH8AfvDlmCIiIiK1gWaqRERERHxApUpERETEB1SqRERERHxApUpE\nRETEB1SqRERERHxApUpERETEB1SqRERERHxApUpERETEB1SqRERERHxApUpERETEB1SqRERERHxA\npUpERETEB1SqRERERHxApUpERETEB1SqRERERHxApUpERETEB1SqRERERHxApUpERETEB1SqRERE\nRHxApUpERETEB1SqRERERHxApUpERETEB1SqRERERHxApUpERETEB1SqRERERHxApUpERETEB1Sq\nRERERHxApUpERETEBxxWBxCpicrKy3jl7WdZt+EXGkfFMPGCa4lpHGd1LBERqcE0UyVyGA/NuouV\nC5bTaE8c+349wM33XElRcaHVsUREpAZTqRL5i5LSYtZsWE7riq40NKJIMlsRUBHErxtWWR1NRERq\n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\nSkk3OOcGSBoh6Sr+3EiSyiSNdM4NkZQpaZSZjfA5U7i5VtKqpuxAqQoh51zRXi8TJHGXgCTn3FvO\nucqal0tU/RxJSHLOrXLOrfE7R5gYJulL59xXzrlySS9IGu9zprDhnJsvabvfOcKNc+4b59wnNf+9\nU9Ufkin+pvKfq1Zc8zKq5hefSTXMrJekMZKeasp+lKoQM7PpZpYj6QIxU1WXSyX9y+8QCEspknL2\ner1RfDiiCcwsTdKRkv7rb5LwUHN6a6mkLZLeds4xLt96SNJNkoJN2YlS5TEze8fMVtTxa7wkOeem\nOOdSJc2WdLW/aUOnoXGp2WaKqqfqZ/uXNPQaMzYAmsfM2kl6WdJ13ztr0GY556pqLkfpJWmYmQ3y\nO1M4MLMzJW1xzn3c1H0jWyBPm+acy2rkprMlzZF0WwvGCRsNjYuZXSLpTEmnuDa2eFoT/sy0dbmS\nUvd63avma8B+mVmUqgvVbOfc3/3OE26cczvM7F1VX5PHjQ7ScZLGmdkZkmIldTCzWc65CxvakZmq\nEDKzjL1ejpe02q8s4cTMRql6mnWcc67E7zwIWx9KyjCzdDOLlnSupNd8zoQwZ2Ym6WlJq5xzD/id\nJ1yYWdKeO63NLE7SqeIzSZLknLvZOdfLOZem6r9n5jWmUEmUqlC7p+a0znJJp6n6zgJIj0lqL+nt\nmuUm/uh3oHBhZhPMbKOkYyT908z+7Xcmv9TczHC1pH+r+mLjl5xzK/1NFT7M7C+SFkvqZ2Ybzeyn\nfmcKE8dJukjSyJq/X5bWzEC0dcmS3q35PPpQ1ddUNXrpANSNx9QAAAB4gJkqAAAAD1CqAAAAPECp\nAgAA8AClCgAAwAOUKgAAAA9QqgAAADxAqQIAAPDA/wPVJW6Yy3iZ/AAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.ensemble import RandomForestClassifier\n", + "\n", + "classifier = RandomForestClassifier(random_state=23).fit(X, y) # без натройка на параметрите\n", + "plot_boundary(classifier, X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(подали сме `random_state=23` за да получаваме детерминистичен отговор – ако промените параметъра ще бъде намерена друга гора, което ще прави генерирането на едни и същи графики в този notebook трудно)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "## Параметри за RF:\n", + "\n", + "* `n_estimators` – брой дървета (10, 100, 1000)\n", + "* `criterion` – за всички дървета (gini, entropy)\n", + "* `max_features` – колко feature да се пробват при търсене на най-добро разделяне. По подразбиране е `sqrt(n_features)`, като са различни при всяко ново търсене.\n", + "* `max_depth` – максимална дълбочина на дърветата.\n", + "* `min_samples_split` – минимален брой семпли за да може да се раздели възела\n", + "* `bootstrap` – втори параметър за случайност - random sampling with replacement. Тегли същия брой семпли като оригиналния сет, но може да изтегли един елемен няколко пъти (и да не изтели друг)\n", + "* `n_jobs` – тренира по няколко дървета едновременно, но използва повече памет\n", + "* `random_state` – за възпроизведими експерименти" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ето и две произволни дървета, без фиксиран `random_state`:" + ] + }, + { + "cell_type": "code", + "execution_count": 35, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "classifer = RandomForestClassifier().fit(X, y)\n", + "plot_boundary(classifer, X, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlUAAAHVCAYAAADYXg73AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xd0FOXixvHvbDab3hPSSAKE0HuvigjSFBEEG9hA7L1j\nAbEioth7u3avoFe9WPhZQBSko/Tek5AC6dnN7s7vD5RrQwQ2mU3yfM7xHDeZeefJcTc+eWfmHcM0\nTURERETk+NisDiAiIiJSF6hUiYiIiPiASpWIiIiID6hUiYiIiPiASpWIiIiID6hUiYiIiPiASpWI\niIiID6hUiYiIiPiASpWIiIiID9itOGhURLTZICHJikOLiJ8qr6zCDLThDQTsJg67m7AAJ0EBIVZH\nE5F6btWKbfmmaSYcaTtLSlWDhCQen/qyFYcWET+1clMOlSkhlCeBLcFFRnwB3SK30SS8pdXRRKSe\ni48Yu+OfbKfTfyIiIiI+oFIlIiIi4gMqVSIiIiI+oFIlIiIi4gMqVSIiIiI+oFIlIiIi4gM+K1WG\nYQQYhrHCMIxPfTWmiIiISG3hy5mqa4F1PhxPREREpNbwSakyDKMhMAx4yRfjiYiIiNQ2vpqpmgnc\nAnh9NJ6IiIhIrXLcpcowjFOBfaZpLjvCdhMNw1hqGMbSouIDx3tYEREREb/ii5mq3sBwwzC2A+8C\n/Q3DePOPG5mm+YJpml1M0+wSFRntg8OKiIiI+I/jLlWmad5ummZD0zQbAWcDX5umOfa4k4mIiIjU\nIlqnSkRERMQH7L4czDTNb4FvfTmmiIiISG2gmSoRERERH1CpEhEREfEBlSoRERERH1CpEhEREfEB\nlSoRERERH1CpEhEREfEBlSoRERERH1CpEhEREfEBlSoRERERH1CpEhEREfEBlSoRERERH1CpEhER\nEfEBlSoRERERH1CpEhEREfEBlSoRERERH1CpEhEREfEBlSoRERERH1CpEhEREfEBlSoRERERH1Cp\nEhEREfEBlSoRERERH1CpEhEREfEBlSoRERERH1CpEhEREfEBlSoRERERH1CpEhEREfEBlSoRERER\nH1CpEhEREfEBu9UBRPxRpbOSV995ljXrfqJBQhITz7+apAYpVscSERE/ppkqkb/w4My7WD5/KbF7\nUyj8+QA3Tbmc0rISq2OJiIgfU6kS+YPyijJWrVtKi6rOxBgJZJjNCa4K5ed1K6yOJiIifkylSuQP\nbLYATNPEiwcA0zRx4ybArrPlIiJyePq/hMgfBAcFc3LvISxb/CMNnA0pse8nKMpB+1adrY4mIiJ+\nTKVK5C9cNeFmPs2YxZp1P9GyQTPGnD6OIEeQ1bFERMSPqVSJ/AWbzcbwQaMZPmi01VFERKSW0DVV\nIiIiIj6gUiUiIiLiAypVIiIiIj6gUiUiIiLiAypVIiIiIj6gUiUiIiLiAypVIiIiIj6gUiUiIiLi\nAypVIiIiIj5w3KXKMIxgwzAWG4axyjCMNYZh3OOLYCIiIiK1iS8eU+ME+pumWWoYRiCwwDCMz0zT\nXOSDsUVERERqheMuVaZpmkDpLy8Df/nHPN5xRURERGoTn1xTZRhGgGEYK4F9wFzTNH/8i20mGoax\n1DCMpUXFB3xxWBERERG/4ZNSZZqmxzTNDkBDoJthGG3+YpsXTNPsYppml6jIaF8cVkRERMRv+PTu\nP9M0DwDfAIN9Oa6IiIiIv/PF3X8JhmFE//LvIcBAYP3xjisiIiJSm/ji7r9k4HXDMAI4WNLeN03z\nUx+MKyIiIlJr+OLuv5+Ajj7IIiIiIlJr+WKmSsSveLweXnzjSb6c9ymGYTD8lDM5f8xEDMOwOpqI\niNRhKlVS53zw8Vss/G4B3apOxsTk/+Z+TnxsA4YNPMPqaCIiUofp2X9S5yxZvpCGzkyCjBCCjVBS\nnE1YsvwHq2OJiEgdp1IldU5UVAxlRsmh1+W2EqKiYixMJCIi9YFKldQ5F55zKdnB29lgX8H6wOUU\nhmZz3pkXWx1LRETqOF1TJXVOWkoGTz/0OouWf4fNsNGry4lEa6ZKRESqmUqV1EnxsQmcOmCk1TFE\nRKQe0ek/ERERER9QqRIRERHxAZUqERERER/QNVUixyG/MI+3Z71CYWE+Hdt347RTRmGz6W8VEZH6\nSKVK5BiVlBZz/V2XEFWWQJgnklmb3iU3L5uJ466xOpqIiFhAf1KLHKPFK78n2BlGprc1SUYarZ1d\nmfPVh3i9XqujiYiIBVSqRI6R1+vF+M1HyMCG1zQtTCQiIlZSqRI5Rl3a96TEvp8dxgYKzBzWOZZy\ncu/BuqZKRKSe0m9/kWMUExXLo/c8T4MOcVQ2LmLA0MFcNf4mq2OJiIhFdKG6yHFITkxl0vX3WR1D\nRET8gGaqRERERHxApUpERETEB3T6T0RqxMpNOX/7/S3OUso9lZi4SLMXkBiwBYirmXAiIj6gUiUi\n1Wrlphy2OEtJbZxw2G02efZjpnoJC99CbEQo3eO2kBEWR5PwljWYVETk+KhUiUi1+bVQlafbKU86\n/HYmLtKSC+gel/1LmepTcyFFRHxEpUpEfO7XU32/Fioz1YWRvPaw26eBZqdEpNZTqRIRn/rt7JSZ\n6iUtOZvucVsAyAj7u2ukVKhEpHZTqRIRn0ttnEB5EtgSXGREezUDJSL1gpZUEBEREfEBlSoRERER\nH1CpEhEREfEBlSoRERERH1CpEhE5Djk5+7ns4pkM6ncr11/5LAf2l1kdSUQsolIlInKMKipcjDp1\nKplJ25g52SDYXMd5Yx7E6/VaHU1ELKAlFUREjtFPK7cTGuTkgUmJAPToHEyjrnvYsT2Pxk0SLU4n\nIjVNpUrEAus3r+bjz2bh9XoYMnAE7Vt1sjqSHIPAwADKK7x4PCYBAQYul4nT6cXh0K9WkfpIp/9E\nati6Tau588EbyV6cR97S/dw3YxLLf15sdSw5Bu07NqZBUhLnXJbPK+8UcfqFefQ9sQ0pqbFWRxMR\nC6hUidSwj/77HumuLNKNpjQ0MmnsasUH/3nb6lhyDAICbLw9axLNOvTnqyWN6HvKUJ556WoMw7A6\nmohYQHPUIjXM4/ViI+DQaxs2PJ4qCxPJ8QgJcXDjrSOtjiEifkAzVSI1bMiA4ex0bCDX3M0+cw/b\nHGsZNmiE1bFEROQ4qVSJ1LDO7bpz01V3YTatxN2kjCsm3MAJPU62OpaIiBwnnf4TsUC3jr3p1rG3\n1TFERMSHNFMlIiIi4gOaqRI5gip3FavXr6TKXUWrrLaEh0X4dPzikiI+mTuLouIDdO3Qk64devp0\n/JqyclMOW5ylAJR7KjFxkWYvIDFgCxBnbTgRkRqgUiXyNyoqy7l16lUcyDtAoOHAZa/g4SnPkNwg\n1Sfjl5aVcO0d4wkqCSPYHcr8775i3DkTGDbgDJ+MX1N+LVTl6XbMVBdpydl0j9tCRlgcEEeT8JZW\nR6wWmzbsZdOmbJo2TaJZC9+8J0Sk9tLpP5G/MXvOu1TmuOhQ2Zc2lT2IK0vhuVdn+mz8eQv/D3tZ\nMM09HckwmtPK1ZU3//3yEff76LP3OPeyUxk9YTDPvvooHo/bZ5mO1p8LVcGhQtUkvGWdLVSvvPAF\nw4fczTsvv86IoZN5/uk5VkcSEYsd90yVYRhpwL+ARMAEXjBN8/HjHVfEH2Tv3U1EVeyhxRyjvQnk\n7Nvqs/GdrkoCvY5Drx0E43I7/3af7378mvc+eINWrq7YCeTHBQsJDQ3ngrMm+izXP/FrmdobWkl0\nevhfFqq6at++Ih6Y+h7L5qbQKC2QXXsi6TRwFqeN6E5Kqk51itRXvpipcgM3mqbZCugBXGkYRisf\njCtiuZYt2pIftBe3WYXX9JJj30HzLN+9vbt26EWebQ+55m5KzANscqyid5d+f7vPj0sWkOJqTLgR\nRbARSoarOT8u+95nmf6J385ORbV30LBLNme2WcyY9AOclNinThcqgOy9haSlBtEoLRCAtNRAGqUH\nkb13v8XJoLS0kt278nG7PVZHEal3jrtUmaaZbZrm8l/+vQRYB+jiAqkThvQ/nU7duvB9wGd8b59D\nZKNwLr3gWp+Nn5aSweRbHqYibT/bY9bSuXdXrhp/09/uExkVRWVA+aHX5ZT6/OL5v3Ok0331QePG\niWTvc/P1goP/HeYvrGDHbhdNMpMszfXis5/RpunlDD7pNnp1vp5NG/ZamkekvjFM0/TdYIbRCJgP\ntDFNs/gP35sITARIiEvs/NrMWT47rkh1Kysvxe2uIjIiutqf61ZeUcbWnZuJCIsgPbXxn45XsD+f\na+64mPDKaAK8AeTZ93Lf7Y/RPLN6J4h/W6YKww4QEx1aLwvVr+bPW8PEC2diM0w8XoPnX7mGfv3b\nWpZn2ZLNXHTeNBb8J5GMtECefb2I59608e3CRyzLJFJXxEeMXWaaZpcjbeezUmUYRjgwD7jfNM3Z\nf7dtVpMW5uNTj3wxrkh9s3XHJu548HqCvCGUe0rp3qU3N1x2x5+K1YGi/cxbNBe3202PTn1ITU6v\n1lyanfprVVVu8vOKiU+IJDDQ2pupX335K9Yt+ZgXH4kFwOMxCU7fwt6C17DbA46wt4j8nX9aqnzy\nW8AwjEBgFvDWkQqViBze9Kem0rC8KSk0wmO6Wbnse35YOo/eXfv9brvoqBhOHzSmRjKpUB1eYKCd\n5JRYq2MAkJGRwCvPOikr9xIWauPrBeWkJEeoUInUIF/c/WcALwPrTNN89PgjidRfufl7aWy2BQMC\nDDuR7jj25OyyJMvvy5QXUKHyZyed3JY5vTrRpt8SmmUGs+LnCl761w1WxxKpV3wxU9UbGAf8bBjG\nyl++Nsk0TS3aInKU0pIbkbN7J2k0pcp0ccC+j0ZpmZblSW2cQHkS2BJcZMQX0C3yAE3C+1iWRw7P\nMAymP34JK1cMIG9fEe06NCIpKcbqWCL1ynGXKtM0FwDVe+WuSD1xyzVTmHT/teRU7qTSXc7QfiPo\n2r52PrZGap5hGHTs1MTqGCL1lh5TI+JHUpPSeOnRd8net4fwsAhio+OtjiQiIv+QSpWInwkMdJCe\n2tjqGCIicpT07D8RERERH9BMlYhIHbd08WY+/mghwUEOxl10MmnpOq0sUh00UyUiUod9NXcV485+\niOTQpXhLFjC4/x3s3JFndSyROkkzVSIiddhj09/nuWkxjBgSDkBgYAEvv/AF99w/1uJkInWPZqpE\nROqwinIXiQn/W1U9OcFGRXmlhYlE6i6VKhGROuy0Eb24/u4ilv9Uydx5ZUx/tpRTT+9hdSyROkmn\n/0RE6rBrbjgdj8fL+dd+R1BwIPdNm8AJ/dpYHUukTlKpEhGpQ2b/+wfef+crAu12Jl51On1PaMWN\nt47ixltHWR1NpM7T6T8RkVqgpKSCKyc+Sdtml3JijxuZ/+3qP23z/jsLeGDKa1x6VjFjBudzyQWP\n8uPCjRakFamfNFMlIlILXHfFM4TZt/P9fxL4eb2Tiy+cySef30OzFqmHtnnr9S946oFohpwcBsD+\nAx7ee+truvdsZlVskXpFpUqkmrhcTp58eToLl87HEehg3JhLGNL/dKtjSS1kmiaff/YTuasbERFu\nIyMtkJFDXcz7ds3vSpVhQJXbPPTa7QGbTSckRGqKSpVINXnhjSdZu3QNXVz9cbkqee2t52kQn0Tn\ndt2tjia1jGEYREQ42LG7ijYtgjBNkx273bTvHfy77cZfehpX3vIihQe8lJZ6mfZ0Ke/OHmBRapH6\nR6VKpJosXbmQTFc7goxggggmyZXB0pWLVKrkmNwx+RyGnvcOF58Twur1XnILwxl+xu/fS6eN6IYj\nKJAP3v0ahyOQdz4YRsdOTSxKLFL/qFSJVJPw0AjKD5QSThQAlfYyoiKjLU4l/qi4qJyPP1qM01nF\ngFPak9GowZ+2GXdhfxo1SWLBt6vpckIkMy/oR2ho0J+2GzSkI4OGdKyJ2CLyBypVItVk4oXXcO8j\nt1PkLaDK5sId7mTYgDOsjiV+piC/hKED7qRNcw+x0TamP/g+786eRIeOjf+0bd8TWtH3hFYWpBSR\nf0KlSqSatGvZiRlTn2PJyoUEB4VwYs8BhIdFWB1L/MzzT89hQG+TZ6YlAPDqu0XcP/lf/PvjyRYn\nE5GjpVIlUo3SUxuTnvrnGQeRXxXkH6BLi/89m69tiyDyXym2MJGIHCvdaysiYqET+nfgyVfK2bLd\nxf4DHu6ZUcyJJ7W3OpaIHAPNVImIWOj0M7qzc0cu3Yb8B5fLwxkju3H73ecc1Rg5OfvZujmX9Ix4\nGqbFV1NSETkSlSoREYtdfd1wrr5uOKZpYhjGUe37n9mLuPn6F2mWGcKmLRXcdtfZXDRhYDUlFZG/\no1IlIuInjrZQlRSXc+M1L/L1rETatw5i284qegx9l5MHdiA9I6GaUorI4eiaKhGRWip7737i4+y0\nb31wvarG6YE0zwph+/Z9FicTqZ80UyXiJ/IL83hn9qsUFhbQuWN3hg0446hnLqR+SWkYR+EBDwt+\nrKBP9xBWr3eybmMFTZsmWR1NpF5SqRLxA8UlRVx/1yVElcUT5onkvY1vsC8vh4vPvcLqaOLHwsOD\nee7laxg5/kniYwPI3edi2qPjSUmNszqaSL2kUiXiBxYt/45gZziZ3jZgQIwzgU/mfsBF51yu2Sr5\nW/0HtGPpz0+we1c+KSmxREWHWR1JpN5SqRLxA16vF5v5v0scDWyYpmlhIqlNIiJCaNkqzeoYIvWe\nLlQX8QPdOvaiyF7ADjZSYOayzrGU/r0Ha5ZKRKQWUakS8QOx0fHMmPIsse2iKM8oZMCQwVx58Y1W\nxxIRkaOg038ifiI1OZ27b3rQ6hgiInKMNFMlIiIi4gMqVSIiIiI+oFIlIiIi4gMqVSIiIiI+oFIl\nIiIi4gMqVSIiIiI+oFIlIiIi4gMqVSIidcyWzTmcPvhuWjaZyIghk9m6JcfqSCL1gkqViEgdUl7u\nZMyI+xg1qITlXyYyYkAxZ51xPxUVLqujidR5KlUiInXIhvV7iAzzcO0l0aQk2RnSP5TyslJGDLmL\nGdNm4XZ7rI4oUmepVIn4kbLyUu57dBJnjj+FC64aycKl862OJH6gstLFtZc/Q6Oki2jZZCKvvPDl\nYbeNiAhhX34VZeVe9mS7OWnkbm68LIr7bzb54euvuOu212swuUj9omf/ifiRGc/cx541e+nq7k+Z\nq4RHn72fh+5KIrNRM6ujiYWm3vUmxXlr2PJjGvvy3Zx2/gekpiUwaEjHP22b2TSJUwZ35qRRP9Eg\nzsOJvUK48fIYADq0DiKzx3wemH4RhmHU9I8hUudppkrEj6xcs4RMdxscRjAxRgINvA1ZuWap1bHE\nYvO+WcW9t0YRHxdAq+ZBXHlRKPO/WfWX2xqGwaNPXcbEa8bhtjfD4w049D2nyyTApl/7ItXFJ58u\nwzBeMQxjn2EYq30xnkh9FRocRjklAJimSaWtjPCwSItTidViYiNYu/F/F5qv2eghJvbw7wvDMBg1\nuhdPPXcpS1aa3HZ/IW/NKub0C/O55PJBmqUSqSa++pPlNWCwj8YSqbcmXnAtaxxL2Gz7mTWOxYQk\nBNOv10CrY4nF7rrnfK6+4wCX31rAyPF5fL80gPETTznifnHxEcz56j4Kne348OsUzr9kNLfdOaYG\nEovUTz65pso0zfmGYTTyxVgi9dkJPU4mMSGZVWuXERkexUm9BxHkCLI6llise89m/HfuvXw1dxUt\nQoJ47IXuREaF/qN9k1Nimfbo+GpOKCJQgxeqG4YxEZgIkBCXWFOHFal1mme2onlmK6tjiJ9pmpVM\n06xkq2OIyN+osSsWTdN8wTTNLqZpdomKjK6pw4rIL0pKi1myciGrN6zC6/VaHUdEpM7Rkgoi9cD2\nXVu5/b5rCDXDqTQraNSoMffc+gh2u34FiIj4iu6tFakHZj7/IKkVTWhT2YNOlSeyd2s2X8771OpY\nIiJ1iq+WVHgHWAg0Nwxjt2EYuipSxI/k5ecQax68ltFm2IhwRZOdu8fiVCIidYuv7v47xxfjiEj1\nyGzUnL3rt9HE05oqXBQG5dAs8yyrY4mPmaapNahELKTTfyL1wPWXT4IkNz8Efs7CgC84sd8A+nQ7\nyepY4iP//XgJ7ZpdRmr8BYwZcR/5ecVWRxKpl3SVqkg9EBMVyxMPvML+okKCg4IJCw23OpL4yNo1\nu7jx2uf4z2sJtGuZyB0P7ePyCY9z7rgBzP18MRGR4Vx57XDSMxKsjipS56lUidQTNpuNuJh4q2OI\njy38fj0jhoTTo3MIAA9OiiEqayO7tu/itqvD2brDw9ABS5g77wGSU2ItTitSt6lUiYjUYrFxEazb\nWIXXa2KzGaxe7yIk2OD9F+Jp3/rgavy5efl88P4PXH3dqRanFanbdE2ViEgtdurwLtiDEzlp1D6u\nvL2QU8/PIyjYQWjI/y5YDws18Lg9FqYUqR80UyVSS+UX7uOhxyezZecGYiLjueGKO2jTvL3VsaSG\nBQbaeffDO/j4o8Xk7SvmpnYBzPtqFeOu3swDt0exdUcVb80u59Mvu1odVaTO00yVSC1kmiZ3P3QT\nru1eermHkFTYiHum30J+YZ7V0cQCgYF2zhjVg+VL1vGvF2cRHriDDZsruX5KFbPnxvPu7ElkNUux\nOqZInadSJVJD9mTv5ItvP+H7Jd/idruPa6yS0mJy8vbSyNsCuxFIgpFCjC2BDVvW+Cit1DZfzf2J\nzes3sOSzRN55Np4v3k0mJ7eUO+4ZS2lpJfsLS62OKFLn6fSfSA1Y9tOPPPT43cQbyZRTykcN3+eB\nOx8n0B54TOOFBIfgMT04qSCYULyml3KzhPCwSB8nl9oiJ3s/HdoEERR08G/lTm0dlJVWcPYZU2mU\nHszmbS7efO9WOnXJtDipSN2lmSqRGvDkiw/T3NWJZq4OtHf2Jn93PvMW/t8xjxcY6OCC0RNZ5fie\nzbaf+SnoB5pmNaNtiw4+TC21SacumXz+TRmr1zsxTZMJN+aRlGhn3XepfPdRAk/eH8lVlz5pdUyR\nOk0zVSI1oLj0AJHEAGAYBqHuCPYXFRzXmCOHnUPTJs3ZuGUd8XEN6Nu9Pzab/k6qr1q3SWfqAxfR\nd/jLOF1u4uLCGX5KBOFhB98Tpw4I47zLt+lRNiLVSKXKT+zYvZVtu7aQlJBMi6ZtrI4jPtayaVu2\nb1pPpqcNFZSSF7CX1s3aHfe47Vp2ol3LTj5IKHXBmWf1ZuTonlRUuFi+bCs3XDGT3Dw3iQl2Xnuv\nhNatk1SoRKqRSpUf+OKbT3jpzaeJtSVQZBZycr/BXDL2aqtjiQ/dcvVk7n/sTr7d8hGBdgeXjruW\nVj4oVSJ/ZLPZCAsLpu8JrTh73CBa9P6U+DgHHjOQdz640ep4InWaSpXFKisreO5fM+ns7keYEUGV\n6WLuN3MYcMIQGqc3tTqe+EhUZAwPT34at9tNQEAAhmFQ5a7CwMBu18dQqseNt47igosHsn9/KRmN\nGuBw6L0mUp30CbNYUckBHLYgwowIAAINB5EB0eQX5qlU1UF2ux23281jzz/Ad4u/AmBAn6FcOf4m\nAmwBFqeTuig+IZL4BN0VKlITVKosFheTQGBQIDmunSQZ6RSZBRR5Cmmcrtue66p3PnyNtcvX0Nd7\nGmCyfNFiPkp+j1Gnnmt1NJHDKjpQxhOP/Ye9u/fRqUsLLp54CgEBujFC5Lf0ibCY3W7nnlsfITtq\nG/Ntn7AmaDE3Xz2Z+NgGVkeTavLT6uWkuBphN+zYjUCSXBmsWr3c6lgih1VR4WLE0CkUZS9kSO9d\nfDrrY2698WWrY4n4Hc1U+YHMjCxef3I2peUlhIWE67b4Oi4+LoE9O3KI9yYDUBJwgOZxWRanEjm8\nBfPXEh5czkszEjAMgzOGhJHSfgFT7htHeHiw1fFE/IZKlZ8wDIMIrYZdL1x07uXcsP5SKqpKMDGp\nCnYydvQEq2OJHFZVlYewMNuh5RiCg2zYbAZej9fiZCL+RaVKpIY1iE/i2YffYPnPizEMg87tuhMW\nGm51LJHD6t2nBXfe4uX+mfvp2z2YZ18v5YQTWxIZFWp1NBG/ovNMIhaICI/kxJ4DOKHHySpU4vei\nosP46LMprNiUzq0PGsSmduH5V6+zOpaI39FMVR2waet6flq3nMiIKE7sMQCHI8jqSCJSx6RnJPDi\n6zdYHUPEr6lU1XLzF33Fky9Op4EnlQp7KZ9+MZvpk59RsRKRWqcgv4QPZy2ksrKKwUM70TQr2epI\nIkdFp/9quedem0lrVzeaetvSxtmDktxSvlv8tdWxRESOSm7uAQaeeDurFn5C3tYvGDbwLpYu3mx1\nLJGjopmqWq68spQwDq7GbhgGwZ4wikuKcbmc7M3dTXhYJPGxCRanlNpk5aYctjhL2RtaSbQnHBMX\nafYCEgO2AHFWx5M66vmn53D6QBsz7zv4HuvaIZAHp77JrE+nWBtM5CioVNVy7Vp0ZuuGNTR2t6KM\nYvJse2gQn8T4687CrDKpcJczdMAIxp93pdVRpRb4tVCVp9uJSnXQMDmb7nFbyAiLo0l4H6vjSR1W\ntL+ELs3+96imZpkODhwoszCRyNHT6b9a7uar76ZBiwQW2b9ga+Rqrr98Em/9+2USSzPo7DyJ7u6B\nfPXNFyz76Uero4qf+22hMlNdpCUX/KZQtbQ6ntRx/Qd24rEXyli93smebDd3TSui/8BOVscSOSqa\nqarlIsIiuefW6b/72rSnptDHbAfGwQc0x7gT2L5rC53bdbcopfiz35YpUKESawwb3pXsvQUMPvcj\nnE43I8/syS2TRlsdS+SoqFTVQYlxyeTl7SGZDNxmFQfs+aSlZFgdS/zQ389O6XSf1KwJlw1mwmWD\nrY4hcsxUquqgW6+5hzsfvJ5c7y7KPaWc2ONkunboZXUs+Y3d2Tt5698vU1RcRM9ufTl14MhDjwCp\nKTrdJyLiWypVdVBmRhYvP/Ye23dtJTIiiobJ6X+53badm3n0mfvJyc+mccNMbrrqLhrEJ9Vw2von\nryCXGydfRlJlBqFmOO9vf5MDRfsZ9xfP/3O6nGzftYUgRzAZDRv/4+L1a2H6OwfLlBdQoRIR8QWV\nqjoqNCSxc2jeAAAgAElEQVSMVs3aHvb7JWXFTHrgOlLLM+lsNid72w7uuP86nnvkTQIC9LaoTgsW\nf0NsVQMa0RwMCHdG8d+5s/9Uqvbl53D39CuIjHByoMhNZqP23HTZA0f87/PbGajU1JjDbldGrk73\niYj4kO7+q6e2bt9EiDeUVBoTZAST4W1GcUkx+wpyrY5WL5l/8bUX3nyQieNMfvq2AZsWJWGyhs+/\n+eRvx/njKT1bwuH/0eyUiIhvaUqingoNDaPCW47X9GAzAnBThcvjJDQkzOpodV6fbifx7of/Yodn\nAyFmOLuDNnPqwJF/2m5Pzg7OGHrwv0dQkI3hgwL5/setfznm78uUl7TkbAC6xS3+2ywqVPXX7l35\nbFi/h/SMBLKapVgdR6ROUKmqp5o2ak6bVu35ae1CIlwx7A/ax7B+ZxAVEW11tDovIS6RGfc8xxvv\nv0RJSTGju57HaaeM+tN26alNeHv2VqbeGkhFhcnsT6vo0j7rT9v9WqhSGydQngS2BBcZ0V66RW7T\nKT35Sx9+sJDbbnqZ9q1D+HldOZdfPZxrrj/d6lgitZ5hmn914qF6ZTVpYT4+9eUaP678nsfrYd4P\nc9mbu4fMjCx6dO5b43egyeHlF+Zxz6NXAcUUl1TRoXVPrpkwhQBbwO+2W7kph8qUENq1bciivN0H\nS1V8wS+lSrNQ8ntlZZW0a3YF336YRLtWQWTnuuk4cC8ff36vZqxEDiM+Yuwy0zS7HGk7zVTVYwG2\nAPr30Zow/io+NoFHp7zJnuydBAUFk5SQotIrx21fbhFRUXbatQoCIDnRTpsWoezckadSJXKcdKG6\niB8LtAfSKC2T5AapKlTiE8kpMVQ64fOvDz5X76e1Tn5aW0HzFqkWJxOp/TRTJSJSjwQHO3j5Xzdw\n0fmPEuQ4QHGxmxlPTKRhWrzV0URqPZUqkRpWVLyfzds3EhkRRdNGzTUDJTWuZ+8WrFj7NHv3FNIg\nMYqwsGCrI4nUCSpVIjVo3abVTH74ZiKMKMo8JXTt3JMbLr9DxUqqXU7OfqZMep3t23Jo3aYxd987\nlsZNEq2OJVKn6JoqkRo0/ampZFa2oU1lD7q4TmLF8qUsWr7A6lhSx1VUuBg57B4yk7bx6F1gr1rN\n2DHT8Hq9VkcTqVM0UyVSg/IP5NKKbgAEGHaiPHHk7NtrcSqp61Yu30pEqIsHJh2cmerZJZj0zrvZ\ntTOfjEYNLE4nUnf4ZKbKMIzBhmFsMAxjs2EYt/liTJG6KCO5CXuN7QA4zQoKAnLIbPTnBT1FfCkw\n0E5ZuRev9+C6hC6XicvlxeHQ39UivnTcnyjDMAKAp4GBwG5giWEYH5umufZ4xxapa267bip3PnAD\ne8q34vI4OWvY+bRr2emox6msrODr77+gtKyE0MjGxKcc/uHZIh06NSYuIZFzL89n0EkO3v2okhP6\ntSUp+fAP3BaRo+eLP1O6AZtN09wKYBjGu8DpgEqVyB+kJqXx0mPvkFewj/CwCMLDIo64z8pNOXTI\nSjr0urKyguvvnkhVgYcgTyg5xpsMs11Nu7bnVGd0qcXs9gDemT2Jp2Z+wpeL9tBnYBMuvWKIbpAQ\n8TFflKpUYNdvXu8Guv9xI8MwJgIT4eCzz0Tqq4AAO0kN/tnK1b8+12/L6s1kBoXTISuJb374kqoC\nD61cXTEMg3gzibnvvsjZF6pUyeGFhgZxy6QzrY4hUqfV2Al10zRfAF6Ag8/+q6njinW279rC9Kem\nkpO/l7TkRtxy9WRSEhtaHatW+LVM7Q2tJDo9HIAtO0thUw6l5SUEeUIOzTKEEoHTWX5o3wN7c9n4\n4Vw2hOxn/DkJWtRRRKSG+OJC9T1A2m9eN/zla1KPlVeUMen+6wjJjqabawC2XUFMuu9aqtxVVkfz\ne78WqvJ0O1HtHTTsko2Z6qI83c4WZymhEY3JMXax38zDaVayOeBnmrQ4eF1W/o7tvH/pDSTlf4Nz\nxwpO6TeJzZuyLf6JRETqB1/MVC0BsgzDaMzBMnU2cK4PxpVabNvOzTi8QaTSGAxIM5uSU7mT7Nzd\npKc2tjqe3/ptoTJTXaQlF9A9bgvd47bwY3Imu1LjKN+TSq+C8Sz78h1c7goyG7Vj6MXXAbB89hvc\neU0YN1waDUB66n6eeHQ2Tzx7pZU/lohIvXDcpco0TbdhGFcBXwABwCumaa457mRSq4WHRVDhKcdj\nugkw7FSZLpzuCsJCj3xhdn21clMOlSkhlHsqMVNdpCfEkBHtJSMsDoBcTwyGOwYvDrIGDebktifS\nISvp4H7BIQBUlRfTtNH/PtaZjews+rnUkp9HRKS+8ck1VaZpzgHm+GIsqRvSUxvTtXNPVi3/gaiq\nWPY78jil76nExej6niNJTY3BluCiW2pDcp0FR7Vvw459uOuRd2jR1IHHA/fPLGX8FUOrKamIiPyW\nVn6TamEYBjdeficLFn/DnuydNEpvSveOva2OVee1GzIcp3c/fUbNITDA5JKJQxl7wUlWxxIRqRdU\nqqTaGIZB3+79rY5RrxiGQY+LzuWsmwfRLXIbTcJbWh1JRKTeUKkSv7MvP4f/fP5vKsrL6d2jH53b\n/WnZMxEREb+jUiV+Jb8wj2vvnEBsRSIObzDf/ziFSy+8lv59B1sdrUbs2ZZHuceOiQuAjF8uQdtR\nVsD2A9EYxFmYTkRE/o5KlfiVufP+S3RFAk3NtmBAhCuat2e9Wi9KVYesJNiUw5adpZTjYCf7Me37\ngcZsPxDNruw4jD1lhO4sIvaX1dWlftq0YS+T73iN7D0FdO7WnCn3n094eLDVsUTqPV8s/iniMy6X\nkwDzf10/EEe9WjC0Q1YSmUHhtM0NJmyhjd1Lk/lune2XQuUgdKf70ONqpH7Kzytm5GlTGdInj5cf\nceAs+pnLLp5pdSwRQTNV4md6d+/Hp1/OJtwVRTAhbHOs5aQ+p1gdq0YdKky/mbUCVKgEgO8XrKNT\n20CumXBwgddXHwsipvk6SksrNVslYjHNVIlfadqoOXfccD/OjGJyGmzjlKHDGDfmkj9tZ5p1//GR\nv85ahe500zY3mFFtmqpQCUFBgRwo8h76DBSXePF6ITAwwOJkIqKZKvE7HVp3ocN9Xf7yeyWlxTz0\n+N38tHEFoUGhXDqubl/E3iEriQ5WhxC/0q9/Gx55MJzzry6gV1c7r7xTwYRLBxAUFGh1NJF6T6VK\napXpT02lcHMRJ3qHU1RRwBMvPcx3P35D/76DtCaW1AvBwQ4+nDOF556aw+J1eVx4aUvOGXuC1bFE\nBJUqqWVWb1hBD/cgTLysZwXx3hSKVpXx7PrHyM7Zw5jTx1kdUaTaRUSEcPPto3w6ptfrZf26PVRV\nuWnVOo3AQP3vQeRo6VMjtUp4aCQlxQeopJxQwmltHDxNGO9M5r3//IvRw8diGIbFKUVql4oKF+ef\nPY1tW3YR5LARHBrF+x/dSVy8HoAucjR0obrUKldNuIl1jmXkBOwggN8vveD2ui1MJlJ7Pf34J0SH\n5LJhQQpr5iVxQpdKpt71htWxRGodlSqpVbp17M2Me55lyOmnURSYz162U2zuZ71jOb079/vLWaqi\nkgPkF+6rF3cMihyLTRt2cvqgIOx2A8MwGDkshM0bd1kdS6TW0ek/qXUyGjYho2ETunboxQuvP8Ge\n4k10adeN8ede8bvtvF4vM194kO9+/Bq7YadhSjpTb5tBRHikRclF/FPzlhnMmrOFs0eY2O3w/ifl\nNGuhh3GLHC2VKqm1shq3YPqUZw77/c+/+ZhVS1fQyz2EAALYsGsFM565jym3PFyDKUVqxtYtObz5\n+te4XFWcMao3nbs2/cf7XnHNqVx03nqa9txGkMNGdGws787WTR8iR0ulSuqsDZvWEudMxm4cfJun\neBuz4uf5bNm+kcxGzSxOJ+I7mzdlc+opd3Px2SEkRhqcN+Y7nn/lOk48qc0/2j842MHbH9zO5o3Z\nuD0espqlYLdrMVGRo6VrqqTOSkluSKGRe+haqkJyCSaMt/79isXJRHzrpefmcPkFITx4Rxy3XRPL\nk/dH88SMD45qDMMwyGqeQstWaSpUIsdIpUrqrBFDzqIyqIyFfMlS8xt2s5VUmlBeUWZ1NDmMqio3\n905+i5N63siIIXez6IcNVkeqFSrKK0mM/18RSogLoLLCaWEikfpJpUrqrCBHEBefdzlGICSSRhu6\nkRO0g749tfK6v5o86Q1WL/2el6Y7uOzcci44dzob1++xOpbfO31UXx54opS588pYtKyCGyYXMXyk\nVlkXqWm6pkrqtIEnDqO8ooyP5rxPoZnNiEGjGTpghNWx5DBmf/ADSz9PJC01kC4dglm83MXnc5bT\nrEWq1dH8Wv8B7bjngYuZ9PBHVLmqGHXOMCZeUXefiSnir1SqpE4zDIMRQ85ixJCzrI5SK21cv4cn\nZ35EaUkZQ07txZhz+lTr8YKD7BTs95L2S4fKP2CSmKUHBf8TZ5zZkzPO7Gl1DJF6Taf/ROQvbd+2\nj+FDptC20SbOGryPmQ+/wYvPfl6tx7zu5lGMGp/Pky8d4Jo78lmw2OTMMb2r9ZgiIr6imSoR+Uvv\nv/Md540M5tarYgBo1iSQc6+awyWXV99ppQvHDyApOZav5y4nKjacz78ZoufPiUitoVIl8gf7iwp5\n+c2n2bN3J1mZLbno3MsICQ61Otbf2rMt7+C/JPluTNM8uLr2r+x2A6+3+h/1M3hoJwYP7VTtxzkW\nLpebj2YtIi+vmJ69mtOpS6bVkUTEj6hUifyG0+XklnuuIKgwnBhPAquyVzJ5181Mu/upv3yuoD/o\nkJUEm3LYsi2Pco8dExc782xsT46me9wCMsLiaBJ+9I8cGTm6F6ee8jmN0g6QlmLnrmkljL1gSDX8\nBLVDVZWbs0bcR4A3j3Yt7Yx7fDZT7r+Q0WdX73VmIlJ7qFSJ/MamretwlVTR0tMawzCIrkpg0Y4v\nyCvIpUG8D6eBfKxDVhIdgJWbctiy0015up1dxP3y3S3AuqMuVlnNUnj/ozuYOf0DyssqGDdhIBdN\nGPiX25qm6bel01fmfLoMr2sfX89ugM1mcOHZYQw863WVKhE5RKVK5DdsNhtevL/5iokXE5utdqww\nfWjWamcp5TiOu1i179CYV9+6+bDf375tH5dd/BgrVuymYcMoZj5zBX1PaHXsP4AfKywspXnTQGy2\ng+WxZZaDoqJKvF4vNpvu+RER3f0n8jvNmrQiOj6aDYEryDF3sdaxlHYtOxIXE291tH+sQ1YSmUHh\nhO50Y+xxsHtpMh+s7sb7O6P5JncBW0vX+eQ4Xq+XsWMe4qxhlZRuzeS5h0KZcP6jZO8t9Mn4/qZX\n7xZ8/EUZ8xdWUFzi4ZaphfQ9oZkKlYgcopkqkd+w2+1Mu/sp3p79Krv37OTkpqcwevjY353aMk2T\nf3/yFl/N+4xAu4PzRl9Ezy7+tXr1b08HVqaEsGnP/uOetfqjvLxi8vYd4IbLMgA4pV8Y3TpWsmL5\nNpJTYo9rbH/UvEUqM5++gguue5m8vDL69G3Gcy9fbXUsEfEjKlUifxAaEsaE86467Pc/+OQtPvl4\nFpnONlTh4rFnHyD0xnDat/LPO9a6pqXALigHDHcMuZ4YMth23ONGRoZS6fSyY1cVGWmBVFZ62bTV\nSXwdXgLBn+9MFBHrqVSJHKWv539BE2drooyDMz9lrhLmLZjrt6WquoSEOLhrytn0HTGLYQNC+XG5\nk07dWtO1e5bV0URELKFSJXKUHI4gXLgOvXYbVQQFB1uYyDoTLhtM+46ZrFq5jb5D4xg8tFOdvwvQ\nH3g8XuZ/u4YDB8ro3iOLlNS4I+8kItVOpUrkKJ035mKmPzmVclcJHqOKvKA9DB80xepYlunaPeuo\nZqfefuNbXnj6Y9weL2ed15+rrj3tHxUxr9fLjws3UlxcQecumcQnRB5P7FqrqsrNuLOmkZe9m0bp\ngdx+UwWvv30z3Xs2szqaSL2nUiVylLp16MWUW6bx7ff/h8Ph4NSB95CcmGp1rFrhvx8vYcZDb/Ov\nJ2IJCTYYf8McQoIdTLjs7x9943Z7uOi8R9i2eRtpqYFcv8bJO7Nup32HxjWU3H988N4PuMr2sPiz\nROx2gw/nlHLL9c8zb9EMq6OJ1HsqVSLHoHXz9rRu3v6I25mmyf6iAgIC7ERFRB/TsZwuJ2XlJURH\nxtb62/f/+/EP3HldOH26hwDw8F2R3P/090csVe+/s4DS/TtY+X9JBAYavPlBMTdf+xxfzptWE7H9\nyt69hfToZMduPzi717tbMHv3ZlucSkRApUqk2pRXlHPP9FvYvH0jXtND9459uPnKuwgIOPLHrqrK\nxVuzXmHBom/JK8zFHmAnMjKa+26bQWpyeg2krx6hYSFk53oOvd6b6yE07MjXo+3amU/f7nYCAw8W\nif59Qrlpam615TxWVVVu7rz1Nd57+3sCA21cdtVQbrhlpE+vM+vStSk3XDWHKy6somGKnUefL6ZL\n1/o3Yyfij2r3n70ifuyVt57mwPZielUNprd7CBtWreOjz9//R/tOf2oq87/8hqSCRjQ0MzHcNiIL\nE7h3xqRqTl29Lr3iVJ54uZxb7s1n8vQCbrm3iGtvHH3E/Tp0asIHnzrZl+/GNE2eea2Y9h0yaiDx\n0ZkxbTbb1i9n86KGLP0ymU9mzeW9t77z6TFOPKkN4y8bTsu+u4nK2s63i8OZ+cyVPj2GiBwbzVSJ\nVJP1m9aSWJWGzbABNuJdqazfsBaG/f1+lZUV/LhyAX29pxFgBBBHEsXmfkIIZUvuz7jdbuz22vnR\nzWqewmdf3cc7b3xLscfDBx/3pm27I5ejQUM6smrFADK7/5fQkAAapsXzxvtX1EDio/PdNyt58NYI\nEuLtJADXTQzly29XcPZY3y4Oe8XVp3LJZYOpKHcRGRXq07FF5NjVzt/MIrVASlIq2Tn7iDETME2T\n4sACWqc0P/KOv5wqMjEPfcnESxnFRIRF1dpC9avGTRKZNPmso97vlkmjufzqUykrq6RBgyi/vL4s\nNj6S1Rv2cWKvg6/XbHATExdVLccKDLQTGFW73wvHy+VyExgYoGU8xG/4328lkTpi4gXXUBJZwKrg\n71kZ/B2OxADGnH7+EfcLDgrmhB4DWOtYTK65m/XmckopJtuxnVuunFwDyf1XREQISUkxflmoAG6/\n+zzufayUi68v4KxL85n1Xw9XX3+61bGOSV5eEeeNfpCmDcfTp+v1LPhurdWRDtm5I49TTryNtAYX\n0bLJpXz232VWRxIBNFMlUm3iYxvw7PQ3WL95DQEBAbTMakugPfAf7XvdxNuYlfouq9esIC04jdFd\nzqFD687Exzao5tTyV9xuD9u37SMsPJjk5JjDbteqdRpz5z3Al5+vICAggAee6EpsXO18bM/4sTPo\n1vYA/3oklR9XVHLRuEeZO+9B0jMSrI7GhedO5+zTXCz6OJMlKysZfsEzNGt+P5lNk6yOJvWcSpVI\nNQoJDqVjm65HvV9AgJ0xw8cyZvjYakglR2PP7gLOGfUAZaUlFBe7GTm6Fw/NGH/YU04N0+K5+JKB\nNZzStyoqXCxbtp15/26CzWYwbEAYJ/d1smjhhr8tVeXlTlb/tIPgEAdt2qZXy4xiaWklGzfmcsuV\njTEMgx6dQzi5bzjLlm5WqRLLHdc73jCM0YZhrDEMw2sYRhdfhRKRmuH1ennhmc+48Jxp3HTtC2Tv\nLQRg754CPvnPYr6bvxav12txSmvddO1znDnUw5ZFKWxd3JAVi5cx698LrY5VrRwOOwEBNrbvcgPg\n8Zhs3V5FVFTYYffZvSufk3rdwp03zWT8eQ8w7qxpuFxun2cLDXUQaA9g7caDj4pyOr2sXu8kMfHY\n1oET8aXj/TNiNTASmO+DLCJSw6bc+Sb/ef9jxg7PIzFsDcMG3MWXn6+gd+fbmXz5R0wY8yznjXoM\nj6f+Fqt1a3Zz/uhwDMMgMiKAMwY7WLt6h9WxqlVAgI3JU8+h/5m53HpfAaectY/wmGROHtjusPtM\nuvllzh9lsOTzRNZ9lwLO3bz64v/5PJvNZmPaoxczYMw+LrqukB7DcmnZpgUn9Gvt82OJHK3jOv1n\nmuY6QHdeiPixn3/cAikhf/r65uK1vPLiV2xfkk5CvJ3Rp8G6zfu4YsLzNCnrQIKRgtf0snLhfF56\n90MGnt7q0L5NwlvW5I9gqcZNGvDp3GKuHh+N0+nly/lVjDov2epYv5OXV8TO7XmkN0ogIcE3dxuO\nv3QQzVulsWTRJkaNjeHMs3phtwccdvutW7K5/4aDyzsEBhoM6e9g1aZdPsnyR2PO6UOrNmksX7qV\nwWdGM+CU9vr/kPgFXVMlUod1yEpi5aYc9mzLg21Qnm5nZ6qN7cnRpEdG4fVy6HEnAAF2GyWlpcRw\n8LoZm2Ej1BnLkq12oooPrtqdGLAUWFdvitXDMy9lzOn38c6H+8jNr6J9x+ac4+N1p47HB+8tYNLN\nr9IoPYjtO508NGM8I0f38snYffq2ok/fVkfeEGjZKp03Z+1gWksHFRUms+Y4GT6m+lZ6b9M2gzZt\n/W8BWKnfjliqDMP4P+Cvrv67wzTN//zTAxmGMRGYCJAQl/iPA4rI8emQlUQHYOWmHLbsLKUcB7uI\nw3DH0O7Ufpx+8VJuvzKM5atdfLvITYMmTdi5dTONPS1wUkGePYfg9HHsyI8DYLs9E9hCfSlWWc1S\nmL94Bqt/2kFYeDBt22X4zaxIXl4Rt9/0KvM+SqR18yBWr3fS74yXOaFfG+ITIms0y/3Tx3POyPtp\n2nMvpaUe+g/swPkX9a/RDCJWO2KpMk1zgC8OZJrmC8ALAFlNWphH2FxEfKxDVhL8plh5cdD3vGtZ\n9uF73PDoMoKjYhl578XYAux8OPlu5u/7FK/ppc/Z55PasBPevIPj7CaOwpJyYiNC6R63gIywuDpf\nriIiQujZu4XVMf5k1458GqUH0bp5EABtWgSRkRbEzp15NV6qGjSI4otvH2Tb1lxCQhw0TIuv0eOL\n+AOd/hOphSqdlfy8bgUmJm2adyA05J89quTXYkUubNl5sCU1TR1I09SDSwCY28ADnDb2HpwVpQQ6\nggmwB7J/Yd6hMcKwUZ6eSVmq65ev1J9ZK3+TnpHAjl1OVq1x0r51EKvWONm520lGhjXrmdntAWQ1\nS7Hk2CL+4LhKlWEYZwBPAgnAfw3DWGma5iCfJBORv1RcUsSNky/FXeLBwIY32M2Mqc8TF/PPZgY6\nZB08m9/hGI//x9OIB6lYWSE+IZKHH7uEk898kbTUIHbtdTLj8YnExdfOBUdFarvjvfvvQ+BDH2UR\nkX/gjX+/ROD+EFq622EYBluq1vDK289w85V318jxf53tqgwIoRww3DHkemLIYFuNHF9+b8SoHpzQ\nrzU7d+aTnh5fa1dwF6kLdPpPpJbJyd1LpDvu0MXS0Z44cnOzLU4lVoqNi1CZEvED/vlUUhE5rNYt\n25Hr2IXHdOMxPeQE7qRlizaHvp9fuI/5i75i2U8/4vF6LEwqtZHTWcXDD/ybC8+ZxuQ73qC4qNzq\nSCK1hmaqRGqZM089jx27trFg2X8Bg06tujHuzAkArNu0msnTbiLaiKeCMlLTG3Lf7Y9ht+ujLkdm\nmiaXXPAoNvcuxo4K5vNvdnPm8LV8OvdeHA69h0SORJ8SkVrGbrdz69VTKK8owzRNwkLDD31v5vMP\n0sTZhkSjIaZp8tP2H7hnxi2kpzamf59BZDZqZmFyqQ4lJRWUllSQmBR93A8w3runkMWLNrJreRoO\nh8GZp4bTcUAuK5ZtpXtPvXd+tXTxZm678QWysw/QtVsWM564TDcHCKDTfyK1VmhI2O8KFUDhgQKi\nOXgXoGEYhLoi2bp6Kz99+TO33Xs1azf+bEVUqSYzH/mQNlmXc3Kfm+nX82Z278o/5rE2bdjLm69/\ni9fr5bfdzG436v1DtX9r754Cxp41jVsv97J4TgMaN9jF+HGPWB1L/IRKlUgd0rxJK3YFbMY0TSrN\ncnLYSWNa0IRWZLha8PYHr1odUXzk269/5q3XPmPD92nsXZXG2ad5uGrik8c01oLv1jJs4F3kb/8/\ngh1ezpqYzRfflHH9XYW4PKF07NzEx+lrr0ULN9K3ewhjhkfQMCWQR6fGsmzZdkpLK62OJn5ApUqk\nDrnxyjsJbGgwP+BjfuBzooknzji4LlUQwVRWVlicUHxl1YptnDE0mOREO4ZhcMWFkaxaufOYxrrn\njtd44ZFYXnosifU/NGLTNhfnXZ5LfmUzZn86meBgh4/T114RESHs3FOF13vwwSB7c9yYJgQHB1qc\nTPyBSpVIHRITFcvM+17k7Wc/5aYr7qbcUcx+M48is4DtQevpf6LW5q0r0jISWPBjFU7nwVNzXy0o\nJy0t5pjGys8roXXzg8UpLNTGOSMiCQsL4JyxA3St0B+cdHJbwiKTGDY2j8nTC/j/9u48vKryXvv4\n/duZE+YQkhACCRKZQygIjkdBRFAhh6F1qtbXCpVq1aPWVnFo7cHhYLWtM2+t1moPtlqtWlQEbAGB\nymBAMCCiSEDCTCAEMu3n/JGAIAlJyErWTvL9XFeuy52stXLnAbNvnmcNwyZs18/vnqjw8DC/oyEE\ncKI60AzFxsTp3DNGqKSkWK/+/c8KunJNuOByjR6e7Xc0eOQ/xw/VrDcXa8D565TWNVI5q4v10it3\nnNSxzji7t27/xWr98fEkbckv07N/KlDRoYA6xLeqeecWJjw8TDNfn6o/v/Qvbd2yRw/8OkMjRg7w\nOxZChDnX+M82zujey/32/uca/fsC8EbO+nxtKC5UUddwuZQSpSbv0tD4DeoWF3/C/XiMjbecc1r6\n7/Xas+eABg7qrk6d2p7UcYqKinXJBXdrbW6+YmJMrVtFaMSooXrkt5M9Tgw0TR1bf3+5c25wTdsx\nUwWgzg4/qubbzwDcVl798lNi2DLxfEBvmZmGnF7/Wx3ExkZp3ofTNW/OKn26Jk/dT0nS6Iu/40FC\noLPPrpwAABa1SURBVGWhVAE4Kd8uVpu3JCsvpeQEewypnNFaqG5x8ZSrEDR8RKaGj8j0OwbQZFGq\nAJy0rIwkZemb5cCUsMRqt11fvufIjJa0QcxaAWhuKFUA6u3wrJW+rv6WDbHFZccsFR4uVhLnWgFo\nHihVADyRlZF04g3W50vbpENh7VWkRH1U1kPbOu7SkDZfNk5AAGhg3KcKQKOosXQBQBNHqQIAAPAA\npQoAAB+VlZWrqKjY7xjwAKUKAACfPPHbt5Te+YfK6DpJ4y/+pXbv2l/ldnv3HNBTj8/Sw9Ne0/Kl\nnzdyStQWpQqAr746sEtfFOb6HQNodHNmr9SLv39Laxd20f4N3dW/xy7dfvOzx223d88BjRp+l3KX\nz1JY0b901WUPadbby31IjJpw9R+ARhX99UFt+bLiETebUgJKTT5F3LcKNQkGKx4cHQgEtOHzfM1+\n92NFRUdo3PjT1b5D7Z5RuG3bXm3auEPd0jud9CN9vLR0yTpdOSFaXTpHSJJun9JGZ4xZf9x2L734\nTw3NCurFxxMkSeefE6Ob7nlJF10yqFHzomaUKgBVyvv6K328eqniYuN01mnDFB0VXe9jHrkCsIpH\n3FCsUJVgMKhf3fdn/f7ZOQoGnUaM7K/FH+bqu2PitLfA6cnfvKF3P5imhIQTl6S/zlyoqXc8r+5p\n0fpi4yE9+Mi1mvC9sxrpp6haYucOmvdWuYJBp0DAtGTFISUntztuu/37ipSWakdep6VGaN++gsaM\nilqiVAE4Ts6aZZr26FQluM4qDhzUq2/+WY/dP0PR0TGeHL+6ZwdKG/TVAR5jg2+88NxcLf7nh/ri\no1RFRZrGXr1O550erqceqvg785O7dunZJ9/R3b+4rNpj7NhRoLt++rzmv5GoPj2jtHptsc4b9wed\nNzxT8R1bN9aPcpwrrzpXb762QGdesl2pKeGav+SgXnrlZ8dtN2Jkln5w+XsafnaM0lIjdMu9ezRy\n9LGzVMFgUIEAZ/T4jT8BAMd5+g+P6tSSLGWUDVDf4qEq3RXU7H+9Xadj7NtfoGUrF2vNupVHlm6O\nlpWRpAn9eqj/tmjFLQ5o87Jkvbp6iP696xTOs8IRixas1M2TYtWpY7jatgnTPbd2UN7WsiNf79Uj\nTHt37zvhMTZt3KH0blHq0zNKktSvV5S6donSpk07GjR7TaKiIvTXN+/RLXdO0shxl2nugoc0eEiP\n47Y7bWiGHn5ssn58V7HOyd6pTqlZ+tVDP5Ak7dyxTxPH3q/O8T9Qr/RJeu0vixr7x8BRmKkCcJx9\nhQXqpr6SJDNTTEmc9u7fW+v9N+Zt0J3/fZNiXRsVlReqVds4jR6RrQv+42K1btXmmG1PNGvFciAS\nOnXQx6vzdMX4itcrVhVr+86g8reXafeecv329wd0738PPOExuqV10sZNxVq5plgD+kbp408OadOW\nYnXrltAIP8GJRUSE68LRJ84vSWOyh2hM9pDjPn/D5N8ps8dOzXq+uz79rEQXff8POiUjWVkD0xsi\nLmpAqQJwnAF9B+vLnHXqUdpfh1Sk7ZF5GtDn+lrv/5tnHlTKwR5KUbqCLqgVO+brtVdm6s13X9Xj\nDzxf62L1713S0PiK5cCmghLorZtvH6eLR6zQ5xt3KirStGBJsc48J0v9zl2lyKhw3XzrOF089rQT\nHqNjQhtN/80knT/x/6tL50ht3lqiR3/3I3WI92/pzysLF6zX68+mKSoqoIH9ozXxkjgtWbSOUuUT\nShWA49w06Wd65Mn7tXD1LEVFROvaK6ZoQJ/v1Hr/bTvz1d+dIZkUsIA6uEQFg2Uq21+qWfPe0KVj\nrz5un6yMJGVJylmfrw2byrS5a7JcSomkinLVFAyNZ3bNa0lJ7TV3wcN6d9ZylZc7/fLRrJO6ci97\n/Ok659y+ysvbqa5dE2p9xWCoS+gYp5VrinXmaTEKBp0+yS1V5lltat4RDYJSBeA4sTGxuvf2h+Sc\nk5nVvMO3ZKT31NdrN6p7eR+VqkTblKfu6qMD5ftVWFj1zQ0P+/aslVOfk/0xGtVmbVPe1nilJu86\nMrtGufJGu/ZxuuzK/6j3cTrEt24Ws1NHe2D6tRp37TPKHhWn3M9KFR6dqOxxxy8TonFQqgBU62QK\nlSTdcv1duufBWzU//22VB0vVWWmKVJS+iFijIQNrXkY8uljFhp1UhEZ3qhK1vnwP54ShUV00ZrDS\nT7lPiz9cqzMuaK2LxwxWRARv7X5h5AF4rkO7eD3+4PPasTNff3r1OS3LWaxDkYWacvl/qX/vmk/K\nlY5dDmwqYovLONkeja53n1T17pPqdwyIUgWggQQCASV26qzbf3xPvY5z5IahTcFRy5abtyQrL+XY\n5cDmjvKIlo5SBQAeOeZk++Jjr2TcVt7e33ANLDFsGTdurYZzTjNfnq8P569UfEIH3XjLmBrvAI+m\niVIFAB6r6hYReVv9TtXQhig1eZdY8jze/zzwV7375jzddF2sVq75XBed/5HmzH9QbdvF+R0NHqNU\nAUADOLpYaVNAKen+32iyIXGSftWcc3rq8XeUu6CLUpIr3nI3XrND7/xjuSdXNCK0UKoAoIEcc7L9\n1wf9jtOgvn2S/tE3bm3J5co5p7KyoFrFfXMlbetWAZWUlPuY6nj79xXplf9dqP37DmrYiExuHnqS\nKFUA0MCa1Mn2J6m6G7cenrVqyUaN763LpnylqTe1Vc6aYr0/v0hXTo0NmedbFu47pEljntOAnk7p\nqQFdNv7vuvPX2Tpn5Kl+R2tyKFUAAE9U97ih5n6Sfk2G3XWj3nvib5p032rFxXfUj56/URvjUrTx\nxM+BbjTzXpitgb2lV57pJEm68LxY/XDqB4o6/UKfkzU9lCoAgGeqO0m/a0LLLlb9rp6ifpVPZyqR\n9NVOX+McIz/f6dz0b+6y2yMtQoUFBfpqZ/O/DYjXKFUAAE99+zmORV3DlbflgN+xUI3YDr317Atv\nafSwGKV3jdBP7tmrxF5Zysvhz6yuKFUAgAZxeNZK2/xOghOKy1TH86boe5P/qIMHD6nXqd/RpRdM\nUeS2KL+ThYyZtdyOUgWgyXPO6Z+L3tfK1cvVMb6Txl10qeJiW/kdC2oZJ+k3B1kZE3TVf07wO0aT\nR6kC0KQ553TPw7fp008/UbSLUXRYrOYvnqvfTXtO0dExfscD0IIE/A4AAPXx4l9maN2aXPV0WUpQ\nZ+0p36HighItXbnI72gAWhhmqgA0abPmvKEsnaVYq1juO+gOqLCsQCWlJTXsCQDeqtdMlZlNN7O1\nZrbKzF43s3ZeBQOAk+HkdDBwQFl9T/M7CoAWpr7Lf+9L6uecy5T0maQ76x8JAGrv4gvGKzdyuba7\nLfrS5Wp7YIvu/a8HFd++o9/RALQw9Vr+c87NPurlEkkT6xcHAOrmqu9ep3Zt22vJ0oXq3CZJd3x3\nqrokd/U7FkJUzvp8vyOgGfPynKprJb1S3RfNbLKkyZKUEJ/o4bcF0JKZmcZeOFFjL+TfdKhezvp8\nbSguVEp6gt9R0IzVWKrMbI6kqm40MtU59/fKbaZKKpP0cnXHcc7NkDRDkjK693InlRYAgDo6XKiK\nuobrsyTuRIqGU2Opcs6NONHXzewaSZdIOt85R1kCAISMowuVSylRavIupbVr2c8hRN1Vuwz3LfVa\n/jOzUZLukHSuc66oPscCAMArx5apoKSKQjU0foO6xfGgYDSM+p5T9YSkKEnvm5kkLXHOXV/vVAAA\n1FNKeoKKkqRAQom6ddylIW32qnurs/2OhWasvlf/9fAqCAAAXistPqQljz2jbSs/VlJilKY9cL2y\nBqb7HQvNFI+pAQA0Wx889YgSi5bqb0/FavLEMl02/gFtztvpdyw0UzymBgDQLAWD5cpd9JE+XJum\nuNiAsvpFad7CUn0w9xNddc0wv+OhGWKmCgDQLJkFFB4R0K7d5Uc+t3N3UNExkT6mQnPGTBUAoFn6\neuNO9R6ZreGXvqObronRitWl2rAloN7ntdIXhbl+x0MzRKkCADQ7WRlJ0vp8qeclWhufrGeXrFRE\n2/Ya9eQgrS7vLO3zOyGaI0oVAKBZyspIUpaknPWttKHjIBV1DdeOwhLF7OTmn2gYlCoAOAnbdmzV\njBd/p23b89W3V3/9vyt+rOioaL9joQqHZ602bCpUkSKVt+WA35HQTFGqAKCOCg/s1+33TVGHA8nq\nEOysFTtWaOv2u3X/zx7xOxqqcWQ5kEf/4STMrOV2lCoAqKNP1uYosjRaaa6nZFLb0ngtyH1bBfv2\nqk3rtqp8wgRCTFZGkt8R0MxRqgCgjsLDwlWucjnnZGYKqlxl5WW64oYxCguEqX+vLE0cc6UG9jvN\n76gAGhH3qQKAOsrs8x1Ft4vSZ+E5+tpt1MeBhYpTK7VSG3UIJqrg0yI98Ot7NGvuG35HBdCIKFUA\nUEdRkVF65BdPa8jIoWo/qLUOBQ4oSd0UpWhl6nSdYn2UWXaGXpj5rN9RATQilv8A4CS0imutay//\nsSTpR7ddqaLthYpW7JHzqaIVq0MlB48sEQJo/pipAoB6+smkn2p3RL7ylacd7msVuUKtD1+p0zLP\noFABLQgzVQBQT/16ZemJB1/QP+a+oYWL5qm0rFQD+g3SjT/8qd/RADQiShUAeCA5MUXXXXGDrrvi\nBr+jAPAJy38AAAAeoFQBAAB4gFIFAADgAUoVAACAByhVAAAAHqBUAQAAeIBSBQAhzDmnvQV7tL9w\nn99RANSA+1QBQIg6eKhIv5z+c63/IldBF9SZp52rW6dMVVggzO9oAKrATBUAhKjnXnpSe77cqzPL\nRuus8tFas+IT/f3dv/odC0A1KFUAEKLWrl+jxNJUBSygMAtXQkmK1n22xu9YAKpBqQKAEJWU2Fl7\nw3ZKqji3al/EbiUnpficCkB1KFUAEKJ+9IObVdBqh1ZFL1JO9AJFdArT97Kv9jsWgGpwojoAhKiE\n+EQ9Pf0l5a7/RGFhYep7aqYiIiL9jgWgGpQqAAhhsTGxGpQ51O8YAGqB5T8AAAAPUKoAAAA8QKkC\nAADwAKUKAADAA5QqAAAAD1CqAAAAPECpAgAA8AClCgAAwAOUKgAAAA9wR3UARzjn9PqsmVqwaJ5i\nYuJ01aXXqXdGP79jAUCTwEwVgCNmvvFHvf76XxS3qaNK10n3PnSbNuZt8DsWADQJzFQBOOK9eW8p\no3iAWls7SdLB0kL9a/FcpaWe4nMyAAh9zFQBOCIsEKagyo+8DlpQ4WFhPiYCgKajXqXKzH5lZqvM\nLMfMZptZZ6+CAWh8E7Ov1NrIFdrivtSXlqtdkVt1/jmj/Y4FAE1CfZf/pjvn7pEkM7tJ0r2Srq93\nKgC+GD08W61btdGCRfMUG5usn429W0md+LcSANRGvUqVc27fUS/jJLn6xQHgt7OHDNPZQ4b5HQMA\nmpx6n6huZtMkXS2pQFK1v4nNbLKkyZKUEJ9Y328LAAAQUmo8p8rM5pjZ6io+siXJOTfVOZcq6WVJ\nN1Z3HOfcDOfcYOfc4LZt2nn3EwAAGt3egj366OMP9elnq+QcixSAVIuZKufciFoe62VJsyTdV69E\nAICQtm7Dp7r34dvVWm1VFCxUr159NfXWaQoLcKUoWrb6Xv2XcdTLbElr6xcHABDqHnt6mtIO9lbf\nQ0M1qHiYNqxdr/mL5/odC/Bdfc+pesjMekoKSvpKXPkHAM3ejj3bla5MSVLAAmpV2l7bd+X7nArw\nX32v/pvgVRAAQNPQPTVDWzZ+qbTynipRsXZH5qtHWk+/YwG+447qAIA6ueMn96m4434tjnhXS8Jm\na8zoCRqUOdTvWIDvePYfAKBOEuIT9fT//El7CnYrJjpWsTGxfkcCQgKlCgBQZ4FAQPHtO/odAwgp\nLP8BAAB4gFIFAADgAUoVAACAByhVAAAAHqBUAQAAeIBSBQAA4AFKFQAAgAcoVQAAAB6gVAEAAHiA\nUgUAAOABShUAAIAHKFUAAAAeoFQBAAB4gFIFAADgAUoVAACAByhVAAAAHqBUAQAAeIBSBQAA4AFK\nFQAAgAcoVQAAAB6gVAEAAHiAUgUAAOABShUAAIAHKFUAAAAeoFQBAAB4gFIFAADgAUoVAACAByhV\nAAAAHqBUAQAAeIBSBQAA4AFKFQAAgAcoVQAAAB6gVAEAAHiAUgUAAOABShUAAIAHKFUAAAAeoFQB\nAAB4gFIFAADgAUoVAACAByhVAAAAHqBUAQAAeMCTUmVmt5mZM7OOXhwPAACgqal3qTKzVEkjJW2q\nfxwAAICmyYuZqsck3SHJeXAsAACAJqlepcrMsiVtcc6trMW2k81smZktK9i3tz7fFgAAIOSE17SB\nmc2RlFTFl6ZKuksVS381cs7NkDRDkjK692JWCwAANCs1lirn3IiqPm9m/SWlS1ppZpLURdIKMxvi\nnMv3NCUAAECIq7FUVcc594mkTodfm9lGSYOdczs9yAUAANCkmHPerMTVpVSZ2Q5JX3nyjZuOjpIo\nnFVjbKrGuFSPsakeY1M1xqV6jE3Vjh6Xbs65hJp28KxU4cTMbJlzbrDfOUIRY1M1xqV6jE31GJuq\nMS7VY2yqdjLjwh3VAQAAPECpAgAA8AClqvHM8DtACGNsqsa4VI+xqR5jUzXGpXqMTdXqPC6cUwUA\nAOABZqoAAAA8QKkCAADwAKWqEZnZr8xslZnlmNlsM+vsd6ZQYGbTzWxt5di8bmbt/M4UKszsu2a2\nxsyCZtbiL3k2s1Fmts7MPjezn/udJ5SY2R/MbLuZrfY7Sygxs1Qz+8DMPq38f+lmvzOFAjOLNrOP\nzGxl5bj80u9MocbMwszsYzN7u7b7UKoa13TnXKZzLkvS25Lu9TtQiHhfUj/nXKakzyTd6XOeULJa\n0nhJ8/0O4jczC5P0pKTRkvpIutzM+vibKqS8IGmU3yFCUJmk25xzfSSdLukG/t5IkoolDXfODZCU\nJWmUmZ3uc6ZQc7Ok3LrsQKlqRM65fUe9jJPEVQKSnHOznXNllS+XqOI5kpDknMt1zq3zO0eIGCLp\nc+fcF865EkkzJWX7nClkOOfmS9rtd45Q45zb6pxbUfnf+1XxJpnibyr/uQqFlS8jKj94T6pkZl0k\nXSzp93XZj1LVyMxsmpnlSbpSzFRV5VpJ7/gdAiEpRVLeUa83izdH1IGZpUkaKOnf/iYJDZXLWzmS\ntkt63znHuHzjN5LukBSsy06UKo+Z2RwzW13FR7YkOeemOudSJb0s6UZ/0zaemsalcpupqpiqf9m/\npI2vNmMDoH7MrJWk1yTd8q1VgxbLOVdeeTpKF0lDzKyf35lCgZldImm7c255XfcNb4A8LZpzbkQt\nN31Z0ixJ9zVgnJBR07iY2TWSLpF0vmthN0+rw9+Zlm6LpNSjXnep/BxwQmYWoYpC9bJz7m9+5wk1\nzrm9ZvaBKs7J40IH6SxJY83sIknRktqY2UvOue/XtCMzVY3IzDKOepktaa1fWUKJmY1SxTTrWOdc\nkd95ELKWSsows3Qzi5R0maQ3fc6EEGdmJuk5SbnOuUf9zhMqzCzh8JXWZhYj6QLxniRJcs7d6Zzr\n4pxLU8XvmXm1KVQSpaqxPVS5rLNK0khVXFkA6QlJrSW9X3m7iWf8DhQqzGycmW2WdIakf5jZe35n\n8kvlxQw3SnpPFScb/8U5t8bfVKHDzP5X0mJJPc1ss5n90O9MIeIsSVdJGl75+yWncgaipUuW9EHl\n+9FSVZxTVetbB6BqPKYGAADAA8xUAQAAeIBSBQAA4AFKFQAAgAcoVQAAAB6gVAEAAHiAUgUAAOAB\nShUAAIAH/g+I3yktfc9mKwAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "classifer = RandomForestClassifier().fit(X, y)\n", + "plot_boundary(classifer, X, y)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "# Значимост на feature-ите в random forest\n", + "\n", + "Сходно на теглата на параметрите при линейни модели, random forest може да ви каже кои feature-а намира за най-значими (т.е. носят най-много информация).\n", + "\n", + "![](http://scikit-learn.org/stable/_images/sphx_glr_plot_forest_importances_001.png)\n", + "\n", + "Може да видите повече тук:\n", + "http://scikit-learn.org/stable/auto_examples/ensemble/plot_forest_importances.html" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Прочетете документацията:\n", + "* http://scikit-learn.org/stable/modules/tree.html\n", + "* http://scikit-learn.org/stable/modules/generated/sklearn.tree.DecisionTreeClassifier.html\n", + "* http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestClassifier.html" + ] + } + ], + "metadata": { + "celltoolbar": "Slideshow", + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.6.1" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/lectures/index.yml b/lectures/index.yml index 3966008..2765b54 100644 --- a/lectures/index.yml +++ b/lectures/index.yml @@ -14,3 +14,7 @@ title: 04. Разглеждане на дата сет, трениране на модел и оптимизиране date: 2017-10-19 slug: 04-data-exploration +5: + title: 05. Decision trees и random forests + date: 2017-10-24 + slug: 05-decision-trees