{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## নেইবারের সংখ্যা কতো হলে মডেলের অ্যাক্যুরেসি ভালো\n", "জুপিটার নোটবুকের লিংক https://github.com/raqueeb/ml-python/blob/master/model-evaluation3.ipynb\n", "\n", "ডাউনলোড করে নিন নিজের ব্যবহারের জন্য, ধারণার জন্য ধন্যবাদ কেভিন মার্কামকে। ডেটাস্কুল। " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "নেইবারের সংখ্যা ৩ থেকে ৫ করার পর অ্যাক্যুরেসি 0.95 থেকে 0.96 হয়েছে। এখন নেইবারের সংখ্যা বার বার পাল্টে দেখা যেতে পারে কোথায় তার অ্যাক্যুরেসি সবচেয়ে বেশি। ম্যানুয়ালি না করে ফেলে দেই প্রোগ্রামিং লুপে। সেই বের করে দেবে কোথায় অ্যাক্যুরেসি ভালো। " ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# যোগ করে নেই আগের অংশগুলো \n", "# শুরুতে লোড করে নেই আইরিস ডেটাসেট \n", "from sklearn.datasets import load_iris\n", "iris = load_iris()\n", "\n", "# ফিচার আর টার্গেট রেসপন্স চলে যাচ্ছে X এবং y\n", "X = iris.data\n", "y = iris.target\n", "\n", "# STEP 1: split X and y into training and testing sets\n", "from sklearn.model_selection import train_test_split\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.4, random_state=4)\n", "\n", "from sklearn.neighbors import KNeighborsClassifier\n", "\n", "from sklearn import metrics" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# আমরা K=1 থেকে K=25 লুপ চালিয়ে সেটাকে রেকর্ড করি \n", "neighbors_settings = list(range(1, 26))\n", "scores = []\n", "for k in neighbors_settings:\n", " knn = KNeighborsClassifier(n_neighbors=k)\n", " knn.fit(X_train, y_train)\n", " y_pred = knn.predict(X_test)\n", " scores.append(metrics.accuracy_score(y_test, y_pred))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ম্যানুয়ালি না দেখে k_range এবং scoresকে x, y এক্সিসে প্লট করি। ভিজ্যুয়ালাইজেশন ইজ দ্য কিং!" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0,0.5,'Testing Accuracy')" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nnHOuJv8TqmvVgYiJk50AAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Matplotlibকে ইমপোর্ট করে নিয়ে আসি (আমাদের সাইন্টিফিক প্লটিং লাইব্রেরি)\n", "import matplotlib.pyplot as plt\n", "\n", "# আমাদের জুপিটার নোটবুকে ইনলাইনে দেখানোর জন্য \n", "%matplotlib inline\n", "\n", "# আমরা K এবং \"testing accuracy\" এর সম্পর্ক প্লট করছি \n", "plt.plot(neighbors_settings, scores)\n", "# লেবেলের জন্য \n", "plt.xlabel('Value of K for KNN')\n", "plt.ylabel('Testing Accuracy')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.983333333333\n" ] } ], "source": [ "# এখানে দেখছি ৭ থেকে ১৭ পর্যন্ত অ্যাক্যুরেসি ভালো, টেস্ট করছি ১০ দিয়ে \n", "knn = KNeighborsClassifier(n_neighbors=10)\n", "knn.fit(X_train, y_train)\n", "y_pred = knn.predict(X_test)\n", "print(metrics.accuracy_score(y_test, y_pred))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**কী বুঝলাম এখানে?**\n", "\n", "১. \"কে-নিয়ারেস্ট নেইবার্স\" মডেলের কমপ্লেক্সিটি নির্ভর করছে K এর ভ্যালুর ওপর। ভ্যালু কম হলে কমপ্লেক্সিটি বেশি। \n", "\n", "২. মডেলের ট্রেনিং অ্যাক্যুরেসি বাড়ে মডেলের কমপ্লেক্সিটি বাড়লে। \n", "\n", "৩. টেস্টিং অ্যাক্যুরেসি পেনাল্টি করে মডেল খুব বেশি কমপ্লেক্সিটি অথবা খুব সহজ হয়ে গেলে। " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### কেমন হয় ১৫০ রেকর্ড ডেটাসেটের বাইরের স্যাম্পল দিয়ে প্রেডিক্ট করলে?" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1])" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# নেইবার্স ১০ ধরলাম \n", "knn = KNeighborsClassifier(n_neighbors=10)\n", "\n", "# মডেলকে ট্রেইন করতে হবে X এবং y দিয়ে (X_train, y_train নয়)\n", "knn.fit(X, y)\n", "\n", "# প্রেডিক্ট করি নতুন স্যাম্পল দিয়ে \n", "knn.predict([[3, 5, 4, 2]])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "অথবা, যদি সরাসরি জানতে চাই আইরিস প্রজাতির নামটা?" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Predicted target name: ['versicolor']\n" ] } ], "source": [ "print(\"Predicted target name:\",\n", " iris['target_names'][knn.predict([[3, 5, 4, 2]])])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### মডেলের মধ্যে কমপ্লেক্সিটি আর জেনেরালাইজেশন এর সম্পর্ক \n", "\n", "মনে আছে \"মডেলের জেনারেলাইজেশন, ওভার-ফিটিং এবং আন্ডার-ফিটিং\" চ্যাপ্টারের আলাপগুলোর কথা? আমরা একটা সম্পর্ক বের করতে চাচ্ছিলাম মডেল কমপ্লেক্সিটির সাথে 'জেনেরালাইজেশন' নিয়ে। এখানে আমরা আইরিস ডেটাসেটের ট্রেনিং আর টেস্ট ডেটাসেটের পারফরম্যান্স দেখি \"কে-নিয়ারেস্ট নেইবার্স\" এর নেইবারের সংখ্যা নিয়ে। \n", "\n", "এখানে ট্রেনিং এবং টেস্ট সেটের অ্যাক্যুরেসি দেখতে 'অ্যাক্যুরেসি' ফেলেছি ওয়াই এক্সিসে। \"কে-নিয়ারেস্ট নেইবার্স\" এর নেইবারের সংখ্যাকে দেখানো হয়েছে এক্স এক্সিসে। মনে আছে তো কম নেইবার মানে বেশি কমপ্লেক্স মডেল? একটা নেইবার নিয়ে ট্রেনিং সেট একদম পারফেক্ট। যখন নেইবার বাড়ছে, মডেল আস্তে আস্তে সিম্পলার মানে সহজ হচ্ছে। ফলে অ্যাক্যুরেসি কমছে। \n", "\n", "টেস্ট সেটের অ্যাক্যুরেসি কিন্তু কম একটা নেইবারে। তবে বেশি নেইবার হওয়াতে সেটা আরো কমছে। একটা নেইবারে মডেল অনেক কমপ্লেক্স তবে যতো বেশি নেইবার বাড়ছে অ্যাক্যুরেসি কমছে। তবে মাঝামাঝি জায়গায় মডেল ভালো করছে। " ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYsAAAEKCAYAAADjDHn2AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4wLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvpW3flQAAIABJREFUeJzs3Xl4VOX1wPHvyUYIhJCEnQQyLMqW\nBEJAEAnggjsKuCFqta1aF2ptsXWrtlirVap1b7E/rVpRAdcqKopoQNkS9n1LgCQsYQ+E7O/vjzsT\nhpBkJslMZjI5n+fJ4+TOXc5NcE7uu5xXjDEopZRStQnydQBKKaX8nyYLpZRSLmmyUEop5ZImC6WU\nUi5pslBKKeWSJgullFIuabJQSinlkiYLpZRSLmmyUEop5VKIrwPwlHbt2pmEhARfh6GUUk1KZmbm\nAWNMe1f7BUyySEhIICMjw9dhKKVUkyIiO93ZT5uhlFJKuaTJQimllEuaLJRSSrkUMH0WSqn6KS0t\nJScnh6KiIl+HorwoPDycuLg4QkND63W8JgulmrmcnBwiIyNJSEhARHwdjvICYwwHDx4kJycHm81W\nr3N4rRlKRN4Qkf0isq6G90VEXhSRbSKyRkRSnN77mYhstX/9zFsxKqWgqKiI2NhYTRQBTESIjY1t\n0NOjN/ss/gNcUsv7lwK97V93AK8BiEgM8DhwDjAUeFxEor0Yp1LNniaKwNfQ37HXkoUxJh04VMsu\nVwFvG8sSoK2IdAYuBr4xxhwyxhwGvqH2pNMgRwpLeOHbrazLPeqtSyilVJPny9FQXYHdTt/n2LfV\ntP0MInKHiGSISEZ+fn69gggKEl6Yv4V5G/bV63ilVMMcOXKEV199tV7HXnbZZRw5cqTWfR577DG+\n/fbbep1fneLLZFHdM5GpZfuZG42ZYYxJNcaktm/vcrZ6tdqEhzKgaxRLth+s1/FKqYapLVmUl5fX\neuzcuXNp27ZtrftMmzaNCy+8sN7x+UJZWZmvQziDL5NFDhDv9H0ckFfLdq8Z3iOWVbuPcLKk9n+Y\nSinPe/DBB9m+fTsDBw7kgQce4Pvvv2fMmDHceOONJCYmAnD11VczePBg+vfvz4wZMyqPTUhI4MCB\nA2RnZ9O3b19uv/12+vfvz9ixYzl58iQAt956K3PmzKnc//HHHyclJYXExEQ2bdoEQH5+PhdddBEp\nKSnceeeddO/enQMHDpwR61133UVqair9+/fn8ccfr9y+fPlyzj33XJKTkxk6dCgFBQWUl5czdepU\nEhMTSUpK4qWXXjotZoCMjAxGjx4NwJ/+9CfuuOMOxo4dyy233EJ2djYjR44kJSWFlJQUfvrpp8rr\nPfPMMyQmJpKcnFz580tJqRwjxNatWxk8eHCDfzfOfDl09jPgXhF5H6sz+6gxZo+IfA381alTeyzw\nkDcDGdYzln+l72DFrsOM6NXOm5dSyq/9+X/r2ZB3zKPn7NelDY9f2b/G959++mnWrVvHqlWrAPj+\n++9ZtmwZ69atqxzm+cYbbxATE8PJkycZMmQIEydOJDY29rTzbN26lffee4/XX3+d6667jg8//JCb\nbrrpjOu1a9eOFStW8OqrrzJ9+nT+/e9/8+c//5nzzz+fhx56iK+++uq0hOTsySefJCYmhvLyci64\n4ALWrFlDnz59uP766/nggw8YMmQIx44do2XLlsyYMYOsrCxWrlxJSEgIhw7V1oVryczMZNGiRbRs\n2ZLCwkK++eYbwsPD2bp1K5MmTSIjI4Mvv/ySTz75hKVLlxIREcGhQ4eIiYkhKiqKVatWMXDgQN58\n801uvfVWl9erC68lCxF5DxgNtBORHKwRTqEAxph/AnOBy4BtQCFwm/29QyLyBLDcfqppxhjXP+UG\nGJIQQ3CQsGTHQU0WSvmBoUOHnjYf4MUXX+Tjjz8GYPfu3WzduvWMZGGz2Rg4cCAAgwcPJjs7u9pz\nT5gwoXKfjz76CIBFixZVnv+SSy4hOrr6AZizZs1ixowZlJWVsWfPHjZs2ICI0LlzZ4YMGQJAmzZt\nAPj222/51a9+RUiI9TEbExPj8r7HjRtHy5YtAWuy5L333suqVasIDg5my5Ytlee97bbbiIiIOO28\nv/zlL3nzzTd57rnn+OCDD1i2bJnL69WF15KFMWaSi/cNcE8N770BvOGNuKrTukUIiV2jWKz9FqqZ\nq+0JoDG1atWq8vX333/Pt99+y+LFi4mIiGD06NHVzhdo0aJF5evg4ODKZqia9gsODq7sG7A+jmqX\nlZXF9OnTWb58OdHR0dx6660UFRVhjKl2WGpN20NCQqioqAA44z6c7/v555+nY8eOrF69moqKCsLD\nw2s978SJEyufkAYPHnxGMm0orQ1lN6xHLKtzjlBY4n8dS0oFssjISAoKCmp8/+jRo0RHRxMREcGm\nTZtYsmSJx2M477zzmDVrFgDz5s3j8OHDZ+xz7NgxWrVqRVRUFPv27ePLL78EoE+fPuTl5bF8udUY\nUlBQQFlZGWPHjuWf//xnZUJyNEMlJCSQmZkJwIcfflhjTEePHqVz584EBQXxzjvvVHb2jx07ljfe\neIPCwsLTzhseHs7FF1/MXXfdxW233dbgn0lVmizshveMpbTckLnzzH8kSinviY2NZcSIEQwYMIAH\nHnjgjPcvueQSysrKSEpK4o9//CPDhg3zeAyPP/448+bNIyUlhS+//JLOnTsTGRl52j7JyckMGjSI\n/v378/Of/5wRI0YAEBYWxgcffMCUKVNITk7moosuoqioiF/+8pd069aNpKQkkpOTmTlzZuW17rvv\nPkaOHElwcHCNMd1999289dZbDBs2jC1btlQ+dVxyySWMGzeO1NRUBg4cyPTp0yuPmTx5MiLC2LFj\nPf0jQtx5/GoKUlNTTUMWPzpRXEbyn+dx56gePHBxHw9GppR/27hxI3379vV1GD5VXFxMcHAwISEh\nLF68mLvuuquyw70pmT59OkePHuWJJ56o9v3qftcikmmMSXV1bi0kaNeqRQhJcdpvoVRztGvXLq67\n7joqKioICwvj9ddf93VIdTZ+/Hi2b9/Od99955Xza7JwMqxHLDPSd3CiuIxWLfRHo1Rz0bt3b1au\nXOnrMBrEMZrLW7TPwsnwnrGUVRgytN9CKaVOo8nCyeDu0YQGizZFKaVUFZosnESEhZAc15YlOzRZ\nKKWUM00WVQzrEcva3KMcL9b5Fkop5aDJoorhPWMprzAsz/ZqhRGllF1DSpQD/OMf/6icoKa8R5NF\nFSndrH4LLVmuVOMIhGThjyXFPU2TRRUtw4IZFB+t/RZKNZKqJcoBnn32WYYMGUJSUlJlKfATJ05w\n+eWXk5yczIABA/jggw948cUXycvLY8yYMYwZM+aMc0+bNo0hQ4YwYMAA7rjjjsoaUNu2bePCCy8k\nOTmZlJQUtm/fDpxZ+htg9OjROCb8HjhwgISEBAD+85//cO2113LllVcyduxYjh8/zgUXXFBZ/vzT\nTz+tjOPtt9+unMl98803U1BQgM1mo7S0FLBKiSQkJFR+7490MkE1hvWM5eXvtnKsqJQ24aG+Dkep\nxvPlg7B3rWfP2SkRLn26xrerliifN28eW7duZdmyZRhjGDduHOnp6eTn59OlSxe++OILwKqdFBUV\nxXPPPceCBQto1+7MitH33nsvjz32GAA333wzn3/+OVdeeSWTJ0/mwQcfZPz48RQVFVFRUVFt6W9X\nFi9ezJo1a4iJiaGsrIyPP/6YNm3acODAAYYNG8a4cePYsGEDTz75JD/++CPt2rXj0KFDREZGMnr0\naL744guuvvpq3n//fSZOnEhoqP9+3uiTRTWG9YihwkCG9lso1ejmzZvHvHnzGDRoECkpKWzatImt\nW7eSmJjIt99+yx/+8AcWLlxIVFSUy3MtWLCAc845h8TERL777jvWr19PQUEBubm5jB8/HrAK8EVE\nRNRY+rs2F110UeV+xhgefvhhkpKSuPDCC8nNzWXfvn189913XHPNNZXJrGpJcYA333zTK8X/PEmf\nLKqR0i2asJAgFm8/yPl9Ovo6HKUaTy1PAI3FGMNDDz3EnXfeecZ7mZmZzJ07l4ceeoixY8dWPjVU\np6ioiLvvvpuMjAzi4+P505/+VFlSvKbrNqSk+Lvvvkt+fj6ZmZmEhoaSkJBQawnzESNGkJ2dzQ8/\n/EB5eTkDBgyo8V78gT5ZVCM8NJhB8W1ZrP0WSnld1RLlF198MW+88QbHjx8HIDc3l/3795OXl0dE\nRAQ33XQTU6dOZcWKFdUe7+D4YG/Xrh3Hjx+vXFq1TZs2xMXF8cknnwBWEcHCwsIaS387lxR3nKM6\nR48epUOHDoSGhrJgwQJ27twJwAUXXMCsWbM4ePDgaecFuOWWW5g0aZLfP1WAJosaDe8Zy/q8Yxw9\n6b8dTkoFgqolyseOHcuNN97I8OHDSUxM5JprrqGgoIC1a9cydOhQBg4cyJNPPsmjjz4KwB133MGl\nl156Rgd327Ztuf3220lMTOTqq6+uXMkO4J133uHFF18kKSmJc889l71799ZY+nvq1Km89tprnHvu\nudWuy+0wefJkMjIySE1N5d1336VPH6t6df/+/XnkkUcYNWoUycnJ/Pa3vz3tmMOHDzNpUq1rxfkF\nLVFegyU7DnLDjCW8fksqF/XTpigVuLREue/MmTOHTz/9lHfeeadRrqclyr1gYHxbWoQEsWTHQU0W\nSimPmzJlCl9++SVz5871dShu0WRRg/DQYFK6RWtRQaWUV7z00ku+DqFOtM+iFsN7xrJx7zGOFJb4\nOhSlvCpQmqNVzRr6O9ZkUYthPWIxBpZm6XwLFbjCw8M5ePCgJowAZozh4MGDhIeH1/sc2gxVi+T4\nKMJDrX6Li/t38nU4SnlFXFwcOTk55Ofn+zoU5UXh4eHExcXV+3hNFrVoERLM4O7ab6ECW2hoKDab\nzddhKD+nzVAuDO8Ry6a9BRw+of0WSqnmS5OFC8N6xAKwNEufLpRSzZcmCxeS4trSMjSYJTu0k1sp\n1XxpsnAhLCSI1ATtt1BKNW9eTRYicomIbBaRbSLyYDXvdxeR+SKyRkS+F5E4p/eeEZH1IrJRRF6U\n6so2NpJhPWLZvK+Ag8eLfRWCUkr5lNeShYgEA68AlwL9gEki0q/KbtOBt40xScA04Cn7secCI4Ak\nYAAwBBjlrVhdGd7T0W+hTVFKqebJm08WQ4FtxpgdxpgS4H3gqir79APm218vcHrfAOFAGNACCAX2\neTHWWiV2jSIiLFibopRSzZY3k0VXYLfT9zn2bc5WAxPtr8cDkSISa4xZjJU89ti/vjbGbPRirLUK\nDQ5iSEKMrsutlGq2vJksqutjqFpPYCowSkRWYjUz5QJlItIL6AvEYSWY80Uk7YwLiNwhIhkikuHt\n2afDesSydf9x8gu030Ip1fx4M1nkAPFO38cBec47GGPyjDETjDGDgEfs245iPWUsMcYcN8YcB74E\nhlW9gDFmhjEm1RiT2r59e2/dB+Dcb6FPF0qp5sebyWI50FtEbCISBtwAfOa8g4i0ExFHDA8Bb9hf\n78J64ggRkVCspw6fNUMBDOjShtYtQrTfQinVLHktWRhjyoB7ga+xPuhnGWPWi8g0ERln3200sFlE\ntgAdgSft2+cA24G1WP0aq40x//NWrO4ICQ5iSEK09lsopZolrxYSNMbMBeZW2faY0+s5WImh6nHl\nwJ3ejK0+hvWIZcHmfPYfK6JDm/qX+lVKqaZGZ3DXgaPfYonOt1BKNTOaLOqgX+c2RGq/hVKqGdJk\nUQchwUEMtcWwVPstlFLNjCaLOhrWI5YdB06w71iRr0NRSqlGo8mijhz9FtoUpZRqTnRZVYATByE4\nFMLbuNy1b+c2tAkPYcmOg1w9qGr1klpUlENhIySY0JbQItL711FKNSuaLA5nwwvJcMU/IPU2l7sH\nBwlDbbEsrmu/xUe3w7oP6xdjXQS3gF+vgKj6L8zuypHCEqJahuLDqvEec/hECdGtwnwdhlJ+T5NF\n2+4Q2Rmy0t1KFgAjesXy7cZ9LNyaz8jebpQZKS+FLV9Dj9HQ90q3rrHrUCH/tyiL5Li2TEhx8wnm\n5GH47i+wfQGk3OzeMXV09GQpac8sIO2s9rw0aVCTThjpW/L52ZvLeGp8IjcM7ebrcJTya5osRMCW\nBtu/A2Os7124fkg8M5fu4jfvr2LufSPp6GqCXt4qKDkOg2+F/uNdnv/wiRImvbSIfNObt7IqKBuc\nxHWp8S6PwxhY+i8r8XkpWfxvdR7Hisr4fM0ehtpiuGV4gleu0xjeXboTY+Cxz9aTGBdF/y5Rvg5J\nKb+lHdwACSPhRD7kb3Jr94iwEF67KYXCknKmvLeSsvKK2g/ITj91HRcqKgy/m72a/IJiPrhjGMN7\nxPLYp+vYvLfAdWCOxJe90EocXjA7M4c+nSK5oE8Hnvh8A2tyjnjlOt528Hgx8zfuZ2JKHNERodzz\n7goKikp9HZZSfkuTBVgfsGD9Re6mXh0i+euEASzLOsRz32ypfeesdOjQH1q1c3neGQt38N2m/Tx6\nRV8GdYvmhUkDiQwP5a53MzlRXOY6sISRULAHDm5z807ct3VfAat3H+GawXH8/bpkOkSGc/e7Kzha\n2PQ+ZD9ZlUdZheHOUT14aVIKuw+f5MEP12K8lGSVauo0WQBEd7f6LuqQLADGD4pj0tB4Xv1+Ows2\n7a9+p7Ji2LXkVEKqxbKsQzz79WYuT+zMzcO6A9AhMpwXbxhE9oETPPyxGx9mlYnvh7rciltmZ+YQ\nEiRcPagrbSPCePnGQew7VsTUOaub1IesMYbZGbtJjovirI6RDLXFMHXs2Xyxdg/vLNnp6/CU8kua\nLBxsaZC9yBriWgePX9mfvp3bcP+sVeQdOXnmDjkZUFbkMlkcOF7MlPdWEB/dkqcnJp7WcTy8Zyy/\nvegsPl2Vx3vLdtdyFiCmB7SJg6yFdboPV0rLK/hoRS5j+nSgXesWAAzqFs1Dl/blmw37+L9FWR69\nnjetzzvGpr0FXDP41IixO9N6cH4Tb1pTyps0WTjY0qDoCOxdW6fDwkODeXVyCmXlhntmrqCkrEr/\nRVY6SBB0P7fGc5RXGO7/YBWHC0t5dfJgIsNDz9jn7tG9SDurPX/633rW5R6tOSARsI20+i0qXPSl\n1EH6lnwOHC/m2sGnD8m9bUQCl/TvxNNfbiJz52GPXc+b5mTmEBYSxLjkU6PMgoKEv1/btJvWlPIm\nTRYOjs7nOjZFAdjateLpiYms3HWEZ76q0kmelQ6dk6Fl2xqPf2XBNhZuPcC0cf3p16X6iYFBQcI/\nrh9ITEQY98xcwbHaOmNtadYEwP0b6nwvNZmdkUO71mGM6dPhtO0iwjPXJtGlbUumzFzB4RMlHrum\nNxSXlfPJqlzG9utIVMTpSTm6VRgv3TiIvUebXtOaUt6mycKhTWdod5b1F3k9XJHUhZ8N786/F2Ux\nb/1ea2NJIeQsr7UJ6sdtB3j+2y2MH9SV64fUPjw2ppXVT5Bz+CQPfrim5g+zBiS+6hw6UcL8Tfu4\nemBXQoPP/CfTJjyUVyencOB4Cb+dtYqKCv/9kJ2/cT9HCku5toahyCndonnosqbXtKaUt2mycJYw\nEnb+ZE2iq4eHL+9LUlwUv5u9ml0HC2H3EqgohYTqk8X+Y0Xc9/5KerZvzV+uHuDWBLfUhBh+f/HZ\nzF27l7d+yq5+p7bxVt9FPRNfVZ+szKW03NT4AQswoGsUj13ZjwWb8/ln+naPXNcbZmfsplObcM7r\nVfPItJ+PSODi/h2bVNOaUt6mycKZLc2aPJe3sl6HtwgJ5pUbUwC4Z+YKyrb/AEEh0G3YGfuWlVcw\n5b2VnCgu57XJKbRq4f78yNtH9uDCvh14cu5GVu+uoTM2YaTVYV/uxnBbF2Zn5pAUF8XZnWqvOTX5\nnG5cmdyF6V9v9ssy7vuOFfHDlnwmpHQlOKjmxCwiPHNNMp3bhjeJpjWlGoMmC2ceaL6Jj4ng79cm\nszb3KHtWzYOuqdCi9Rn7/ePbrSzNOsRfrh5A7451K/wXFCRMd9UZa0uD4mOwd3V9bwWAdblH2bjn\n2Gkjh2oiIjw1IZGE2FZMeW8lB44XN+janvbRilwqDG7dS1TLUF69cXCTaFpTqjFosnDWKhY6Dmhw\nW//Y/p24Z1h7upzYyJaIgWe8v2Dzfl5esI3rU+OZ6MYHV3XaRoTxyuQU9hcU8bvZ1XTGVs63aFhT\n1JzMHMKCgxiX3MWt/Vu3COGVySkcPVnKb95fRbmffMgaY5iTuZvU7tH0aH9m8q5OYlwUf7yir983\nrSnVGDRZVGVLg91LobRhixvdf/YBgsXw1KYOZB04Ubk978hJfvvBKvp0iuTPV/Vv0DUGxrfl4cv6\n8u3Gffx7YZXO2NYdoH2fBiW+krIKPl2Vy0X9O9I2wv3KrH07t+GJqwawaNsBXvpua72v70krdx9h\ne/4Jrk2tW3K+aVh3rkjq7LdNa0o1Fk0WVdnSrEl0OcsbdJqQXT9igluwIehs7n53BUWl5ZTa+ylK\nyip4dXIK4aHBDQ731nMTuHRAJ57+ahMZ2YdOf9OWBrsWQ1n92tznb9zH4cLSM+ZWuOPa1DgmpsTx\nwvyt/LjtQL2u70mzM3IIDw3issTOdTpORHh6YpLfNq0p1Vg0WVTV/VxrEl1DRxJl/YDED+XpG4ay\ncc8x/vy/9Tz79WYydx7m6YlJbjeFuCIi/O2aJOKiW3LvzJUccu6MtaVBaSHkZtbr3LMzc+jYpoV7\nZdirieuJq/vTq31r7nt/pU+XoT1ZUs7nq/O4bEDnaic8uuKvTWtKNSYtUV5VeBR0Hmg134x5uH7n\nKDxkzQQf8yhjzu7A3aN78ur3Vpv3zcO6c6Wb7f/uahMeyis3pjDhtZ+4/4NVvHnrEIKCBLqPAMRK\nfN2H1+mc+48V8f3m/dw5qmetI4dq46jOe+VLP/Kr/2ZyRVLd7jspLoohCTH1urazr9fvpaC4jGvq\n2ATlrG/nNky7qj9/+HAtv5+zpsbJk9UR4KJ+HYmPiaj39V3ZX1DEzoOFHvl51cQYw/eb8xnWI5aW\nYQ1/KlZNiyaL6tjSYPErUHICwlrV/XjHU4m9k/m3F53FurxjFBaX8egVfT0Y6CkDukbx+JX9eOTj\ndbz2w3buGdMLImKgU6KV+Eb9vk7n+3ilNXKoPk1Qznp1iOTpiYlMnb2albvqVnMpOEiYdecwBndv\n2AfgnMwc4qJbMswW26DzXJcaz+qco8xcuosPV9Tt2Dd+zOKLKSPPmDXuCYUlZUx+fSnb84+z+KEL\nXK+vUk/fbdrPL97K4PKkzrzcxBe+UnWnyaI6tjT48R9WtdheF9T9+KyFENoKulpzLkKCg3jrtiEY\nYw179ZYbh3Zj6Y5D/H3eZgZ3j2ZYj1jrXpbNgNKT1vrcbjDGMDszh8F1GDlUm6sGdmVsv06UuFr3\nw8nJknKu+9di7p25ki9+PZKYei59mnvkJD9uP8B9F/Ru8M9eRPjr+EQevLRPnZYL2bjnGDf9eylT\n56xmxs2DPfoha4zh0U/WsS3/OMZYw4PvGt3TY+d3NitjN0ECX6zZwzBbDDc34YWvVN1pn0V1ug2D\noND6jyTKSreafYJP/RUpIl5NFI5r/HVCIgntrM7Y/IJisI2C8hLYvczt86zafYRt+483+KnCWcuw\nYKJahrr91SkqnFcnp3DweAn3f1D/eQ4fZuZgDExM8dy9tAl3/z6iWoYyrEes10qIzM7I4aMVudx3\nQW9Su0czJ3O3V2paORaLum2EjTFnt+eJzzdqdd5mRpNFdcJaQVxq/ZJFwV44sNmt9Su8oXWLEF6d\nnEJBUSn3vb+S8vhhIMF1upfZmdbIocuT6jZyyNMGdI3ij1f244ct+bz2Q93nOVRUGOZk5jC8R6xX\n+wvc4Y0SIhv3HOOPn67jvF7tmHJ+b65NjWN7/glW1jSrvwE+tS8WdV1qPM9dN5B2ra2ClkdPanXe\n5kKTRU1sabBnFRTVUg68OtmLTh3vI306tWHaVQP4aftBXly012oOczNZFJWW878GjBzytJvsJUT+\nPm8zS+o4z2FZ9iF2HSqs89wKb3AuIXLvzBWnj1qrh+PFZdzz7gqiWoby/PUDCQ4SLk/qQsvQYGZn\n5Hgo6lOcS75Y1XlT2HOkiAeqmxCqApJXk4WIXCIim0Vkm4g8WM373UVkvoisEZHvRSTO6b1uIjJP\nRDaKyAYRSfBmrGewpYGpsAoL1kXWD9aIqk5J3onLTdelxnPN4Dhe/G4ru6JSIW8FFLtex/vr9Xsp\nKCpzqyRGY6haQiS/wP15DrMzcmjdIoRLB/j2CcnBUULkYANLiBhjeOijtWQfPMFLkwbRPtJajKp1\nixAuTezE56vzOFlSt0W8auMo+eLcLDm4ezQPXtqHeVqdt9nwWrIQkWDgFeBSoB8wSUT6VdltOvC2\nMSYJmAY85fTe28Czxpi+wFCghnVLvSRuCISE170pKisdup8HQb4fWvjEVQPo3aE1T21sDxVlVoe9\nC5Ujh3o0bOSQJznmORw7WcpvPljp1jyHE8VlfLluD1ckdfarYZ6OEiLfN6CEyH+X7uJ/q/P43diz\nOafK7+nawfEUFJfxtaNMvgc4Sr5UHfL9i/NsjO1nNa2t2KXVeQOdN58shgLbjDE7jDElwPvAVVX2\n6QfMt79e4HjfnlRCjDHfABhjjhtjCr0Y65lCWkD8OXVLFkd2weFsnzZBOWsZZq3it7SsF6WEUrHj\n+1r3zz1ykkXbDjAxJc7rnfF15Sgh8uO2g7w433UJkS/W7qGwpNxvnpCcNaSEyLrcozzxvw2MPrs9\nd406c9TTObYY4qJbMifTM01RjsWiqiv5IiI862hae1er8wY6byaLroDzgtE59m3OVgMT7a/HA5Ei\nEgucBRwRkY9EZKWIPGt/UjmNiNwhIhkikpGfn+/5O7Clwb51cMLN/6EdRftsIz0fSz316hDJ4xNS\nyazoxf4139S670f2kUP++AELp0qIvPjdVhZtrb2EyJyMHHq0a8Xg7tGNFJ376ltC5OjJUu5+dwWx\nrcN47rqB1Sb0oCDhmsFx/Lj9ALnVrQlfR985Fouq4d9EVIQ1IVSr8wY+byaL6v40rfovaSowSkRW\nAqOAXKAMa/7HSPv7Q4AewK106GeyAAAgAElEQVRnnMyYGcaYVGNMavv2dS9J4ZLjCcHd0h9Z6RDR\nDtp7Z+JdfV01sCsFnc+lw/EtpK/ZUu0+xhjmrPCPkUM1cbeESPaBEyzLPsTEwXF+O3GsriVEjDH8\nfs5q8o6c5OUbB9U672RiShzGWMOGG2p2Zg6d2oTXWvIlKa4tj9qr8/4rfUeDr6n8kzeTRQ7gvLRa\nHJDnvIMxJs8YM8EYMwh4xL7tqP3YlfYmrDLgEyDFi7FWr8sgCGvtXlOUMVZSsY2EIP8bZJY2dgJB\nYvj441nV/sW5LOsQOw8W+u1ThYOjhEhhSTlTZq6krJqJfnMycwgSz86t8AZHCRF3qvO++WM2X6/f\nx4OX9nE5oz0+JoJze8YyJzOnQX/pO0q+uFosCqwyNpcndWb6PK3OG6hcfqqJyL0iUp9n+eVAbxGx\niUgYcAPwWZVztxMRRwwPAW84HRstIo4/Z84HNtQjhoYJDrUKC7qTLA7tgGO5pxZQ8jMtug+lIiSc\n1Iq13DtzBSVlp3/IzsnMqRxN4+96dYjkrxMGsCz7EM99c/qTUnmF4cMVOZzXuz2dorxT9sKTrkuN\nZ8KgrrVW512x6zB/nbuRi/p15Bfn2dw677Wpcew6VMiyqpWI6+Cjle4vFiUiPD0hkW4xEVqdN0C5\n8ydwJ2C5iMyyD4V167ne/kRwL/A1sBGYZYxZLyLTRGScfbfRwGYR2QJ0BJ60H1uO1QQ1X0TWYjVp\nvV6H+/IcWxoc3ArH9tS+X9YP9v1HeT+m+ggJI6j7uYyL2s7KXUd45qtNlW+dKC7ji7V7uDyxMxFh\nTaMCzPhBcUwaGs+r329nwaZTA+V+2n6APUeLPDr73JtEhL+MH1DZtLa/StPakcISpsxcSaeocKZf\nk+x2s9ol/TvTukVIvedcGGOYnbG7TiVfIu0FLY9odd6A5DJZGGMeBXoD/4fVb7BVRP4qIi4L0Bhj\n5hpjzjLG9DTGOBLBY8aYz+yv5xhjetv3+aUxptjp2G+MMUnGmERjzK32EVWNz/Gk4KrfImshRHaB\nWO/U5fGIhJFEHtvKPUPa8O9FWXy1zhpeOdc+csgfJq/VxeNX9qdv5zbcP2sVefamtdkZObQJD+Gi\nfh19HJ37IsKsWfcnisuZ8t6pprWKCsPvZq0mv6CYVyen1KkIYcuwYK5I6syX6/Zworju67CvciwW\nVcek269LG6aNs5rWXv5uW52vq/yXW43rxpqiudf+VQZEA3NE5BkvxuYfOiVCeNtTTw7VMcZqqrKN\nBD/tUAUqn3p+02svyXFRPDBnNbsOFjI7039HDtUmPNQaGlxWbrh35goOHi/m6/V7uWpgV48sLNWY\neneM5MnxA1iadYjnv7Wa1mYs3MH8Tft55PK+JMW1rfM5r02No7CknC/WungqrkZDSr5cPySe8YO6\n8o/5W/xi4SvlGe70WfxaRDKBZ4AfgURjzF3AYE4New1cQcGQcF7ta1nv3wiFB/xmfkWNOidDizaE\n7lrEyzemIMBt/1nGsiz/HjlUG1u7Vjw9MZEVu45w/YwlFJdVNLknJIcJKXHcMCSeVxZs5/lvtvDs\n15u5PLEztwzvXq/zpXSLpkf7VsypY1NUQ0u+iAh/uXoAPWtoWlNNkzsN1O2ACcaYnc4bjTEVInKF\nd8LyM7Y02PS5NeEuOuHM96usX+G3gkPsHfYLib8ygr9fN5Db384gSGBCStUpME3HFUldWJ51iLcW\n7+Ssjq1J7Brl65Dq7U/j+rNq9xFemL+VhNgInp6YWO8kLmLNuXjmq81kHzhBQjv31mbxRMmXVi1C\neG1yCuNe/pFJry/hrI6RdTr+yuQudV4C198UlZbz/LdbmDAojrM71e3+/ZE7yWIuUDmkQkQigX7G\nmKXGmI1ei8yfOJJA1sLqk0VWOrTtDm27NWpY9WJLgy1fwdEcLuoXx6OX9+XoyVI6R7m31oW/evjy\nvhQUl3HZgM5N8gnJITw0mNduGswTn2/ggYvPbnAxx4kpcUz/ejNzMnOYevHZbh0zO8MzJV96d4zk\n+esH8sL8rWzPP+72cUdPlvLNhn10bBPe5JpGnU37fAMzl+5i7to9fD5lJFEtfV+YsyHEVcVI+4S5\nFHu/BfahrhnGmMaf91CL1NRUk5GR4Z2TGwPTe0OPMTCxyqCsinJ4xgZ9x8FVL3vn+p60dy388zy4\n+p8wcJKvo1GN4NY3l7F5bwGL/nC+y/kSuUdOct7fvuPX5/fm/ovOaqQIT3f0ZClXvLSQ8nLDF78e\nSXQ9F77ypU9X5XLf+6u4dEAnvtmwjwv6duCfN3l24StPEZFMY0yqq/3c6eAW45RRjDEVNLcV9kSs\nv8izF3LGEml711hlzP11yGxVHfpDyxj3Z6WrJu+awXHsOVrET9tddzb7Q8mXqJZNu4TItv3Heeij\ntQxNiOGlSYN48NI+fL1+H2/8mO3r0BrEnWSxw97JHWr/ug9ofnP6E0ZCwR44WGU4oB/Wg6pVUJC9\nwz79zMSnAtKFfTsS1TLU5ZwLfyr5khTXlj/aS4jUtzqvL5wsKefudzNpGRrMi5MGERIcVFmd96m5\nG5t0dV53ksWvgHOx6jblAOcAd3gzKL9U2W9RZQhtVjq0Owsi/X/mcyVbGhzdDYd1HYLmIDw0mKsG\nduHr9XtrXdnO30q+NKQ6r6/88dN1bN1/nOevH1hZQSBQqvO6MylvvzHmBmNMB2NMR2PMjcaYxl1b\nwh/E9IA2cacPoS0vtRZH8vdRUFU5mszqu8a4anKuHRxPcVkF/1udV+M+s/2s5Itj4avudazO6yuz\nMnYzJzOHKWN6kXbW6YUXA6E6rzvzLMJF5B4ReVVE3nB8NUZwfkXEamrKXggV9rpKeSuh9ETTSxbt\nekPrjrXPHVEBZUDXNvTpFFnjOhcnisuY64clXxwlRNytzusrm/Ye47FP1zG8Ryz3XVj9wICmXp3X\nnWaod7DqQ10M/IBVPdb1+pyByJYGhQdhv72moaNJqvt5voupPhwd9tpv0Ww45lys2n2EbfvP/N/X\nn0u+9OvShj+Pc686ry8cLy7j7ndXEBkeyguTBtY64sy5Ou+yrPoXefQFd5JFL2PMH4ETxpi3gMuB\nRO+G5accdaIczTdZ6dAxEVr5zxKkbrOlwYn9kL/Z15GoRnL1oK6EBEm1Hd2zM3Ow+XHJl+uHuK7O\n6wvGGB75eC3ZB07w4g2D6BBZe6Xj06vzrvD7pjVn7iQLR4/YEREZAEQBCV6LyJ+1jYdom9UUVVoE\nu5c1vSYoh7ou7KSavHatWzCmTwc+Wpl72jogOw+eYFnWIa7x45IvVavz1rTwVWObuWwXn67K47cX\nncXwnu790ehoWjtc6N9Na1W5kyxm2NezeBRrPYoNwN+8GpU/s6VB9iLYtRjKiprOkNmqohMgqlvt\nBRJVwLl2cBz5BcX8sOXUMsSOxaL8veRLTdV5fWVd7lH+/L8NpJ3VnrtH96rTsc5Na02lOm+tycI+\nW/uYMeawMSbdGNPDPirqX40Un/+xpUHxMVj8CkiQVWupqbKlWZ3cFb79n041njF9OtCudVhlU1R5\nheHDTGuxqKZQ8sVRnXeZU3VeXzhWVMo9M1cQExHG89clV7seuis3NLHqvLUmC/ts7XsbKZamwdF8\ns+0ba9nV8KZbtA5bGhQdgX1rfR2JaiShwUFcPbAr8zft49CJEhZvP0heE1osCqzqvNenWtV5F2xu\n/FH8xhj+MGcNOYet9dBjW7eo13maWnVed5qhvhGRqSISLyIxji+vR+avWneA9n2s1366hKrbHE1o\nOoS2WbkmNY7ScsOnq3KZnbm7yS0WBfDnq/rTp1Mkv/3g1MJXjeWtn7L5ct1efn/x2aQmNOyjsFUL\n/2paq407A6p/bv/vPU7bDNDD8+E0EbY0yN/UdDu3Hdp0gdhesPRfsHupr6MJbEN+AT1G+zoKAPp0\nakNi1yj+u2QnOYdPcl1qvHuLRZUWwfxpMOI+iPRtcnEsfHXlS4u4d+YKPrhzOKHBbq3l1iCrdh/h\nybkbubBvB24f6ZmPwLM6RvLE1QOYOns1z3+7hQcu7uOR83qay2RhjHFvhfjmZOBkOJrTtPsrHM75\nFSz/Pzjgf+PXA8aRXVY/V4/Rvo6k0rWpcTz26XqgDkUDt38HS16xEsWI+7wYnXt6tG/N0xOTmPLe\nSp75ahOPXN7Pq9c7UljCPe+uoENkONOvrV8/RU2uGRzHsqyDvLJgO6kJMYw5u4PHzu0p7pQov6W6\n7caYt70SUT15tUS5Ug3x5YOQ+SY8uAtC6te+7WlHCksY+uR8EtpF8PVv0twbMvvlg7D0Neh1Idz0\nofeDdNMfP1nHO0t20q6efQfuKi4tp6isnFl3DmdQN8/PRzlZUs74V39k37Eivvj1SLq0bZwBB+6W\nKHenGWqI0+tw4AJgBeBXyUIpv2VLsz5kc5ZbFX/9QNuIMJ69NonOUS3dn1vhmIy6c7FVFy3YPxbz\nefSKvsS0CiO/ESa4Xdi3g1cSBUDLsGBemZzCuJcWMeW9lbx/x7BGaVpzlzvNUFOcvxeRKKwSIEop\nd3Q/1xpmnbXQb5IFwFUD6zCv4sQB2L/eGgGYtxJyV0C3c7wXXB20CAn22UJNntazfWuempjEr99b\nybNfb+bhy/r6OqRK9UlbhUBvTweiVMBq2RY6D2zaVX4dM/1HPwxI074XPzcuuQs3DevGjPQdfLNh\nn6/DqeRO1dn/ichn9q/Pgc3Ap94PTakAYhtpNUOVnPB1JPWTlQ5hkdDzfOg0QGf+e9mjl/djQNc2\n/G7WKnYfKvR1OIB7TxbTgb/bv54C0owxD3o1KqUCjS0NKkph1xJfR1I/WelWc1pwiLUeyu5l1lBa\n5RXhocG8cmMKxsC9M1dQUub7+RfuJItdwFJjzA/GmB+BgyKS4NWolAo03YZDUEjTLNx4LM9aTtgx\nr8iWBuXFkLPMt3EFuO6xrXj22iRW5xzlr3M3+joct5LFbMA5rZXbtyml3BXWCrqmNs22/qrrzHcb\nDhLcNO+liblkQGd+PsLGf37KZu7aPT6NxZ1kEWKMqVw01v46zHshKRWgbGnWSKKio76OpG6y0iG8\nrbV2C0B4G2tUlCaLRvHgpX1Ijm/L7+esIfuA7/q83EkW+SIyzvGNiFwFuFUiUUQuEZHNIrJNRM7o\n5xCR7iIyX0TWiMj3IhJX5f02IpIrIi+7cz2l/JotDUyFNU+hKclOt54qgpw+LmxpkJsJxcd9F1cz\nERYSxCs3DiI4SLj73RUUlZb7JA53ksWvgIdFZJeI7AL+ANzp6iARCQZeAS4F+gGTRKTqfPzpwNvG\nmCRgGlYHurMnsJZyVarpixsCwS2a1l/kh7OtciUJVeqg2UZCRVnT7bBvYuKiI3juumQ27DnGtM83\n+CQGl8nCGLPdGDMM6wO/vzHmXGOMO6t1DAW2GWN22Juu3geuqrJPP2C+/fUC5/dFZDDQEZjnxrWU\n8n+h4dZEtqaULByxVi2aGT8MgkJ1CG0juqBvR+4c1YOZS3fx6arcRr++O/Ms/ioibY0xx40xBSIS\nLSJ/cePcXYHdTt/n2Lc5Ww1MtL8eD0SKSKx90aW/Aw+4cR2lmg5bmrV+SOEhX0finqx0aNUB2p99\n+vawCIgf2jRHdzVhU8eezZCEaB76aC3b9jduE6A7zVCXGmOOOL4xxhwGLnPjuOoKzlStWjgVGCUi\nK4FRQC5QBtwNzDXG7KYWInKHiGSISEZ+fn5tuyrlHxKa0NrnxlgjoWxpUF39qISRsGc1nDzc+LE1\nU6HBQbw0KYXw0GDueXcFJ0sar//CnWQRLCKV5RxFpCXgTnnHHCDe6fs4IM95B2NMnjFmgjFmEPCI\nfdtRYDhwr4hkY/Vr3CIiT1e9gDFmhjEm1RiT2r59ezdCUsrHuqZAaKum0RR1YCsc31vzOvOVHfY/\nNW5czVynqHD+cf1Atuwv4LFP1zXadd1JFv8F5ovIL0TkF8A3wFtuHLcc6C0iNhEJA24APnPeQUTa\n2ZucAB4C3gAwxkw2xnQzxiRgPX28rbPGVUAIDrVmQjeF1Qkd/RE1LfIVlwohLZvGvQSYtLPaM2VM\nL2Zn5jA7o9YGGI9xp4P7GeAvQF+sDumvgO5uHFeGtX7318BGYJYxZr2ITHMaijsa2CwiW7A6s5+s\nz00o1aTYRsKBzVCw19eR1C57IUTFQ3QN65+FtGh6HfYB5L4Lz2J4j1j++Ok6Nu8t8Pr13K06uxdr\nFvdErPUs3Jp7boyZa4w5yxjT0xjzpH3bY8aYz+yv5xhjetv3+aUx5oyC9MaY/xhj7nUzTqX8n+Mv\ndX/+i7yiwl5SfWT1/RUOtjSrdPkJt6ZeKQ8KDhJemDSQ1i1Cue/9lVRU1L6QXUPVuJ6FiJyF1XQ0\nCTgIfIC1st4Yr0akVKDrlAThUdZkt6RrfR1N9favh5OHXK8zbxtl/Td7IfQf7/241Gk6RIbz6uQU\nQoLFo8u8Vqe2xY82AQuBKx3zKkTkfq9Go1RzEBQM3c/z7+abyvkVNXRuO3QeaJUuz0rXZOEjQ20x\njXKd2pqhJmI1Py0QkddF5AKqHw6rlKorW9qp2dH+KGshxPSEqLja9wsOsXfY+3HiUx5RY7Iwxnxs\njLke6AN8D9wPdBSR10RkbCPFp1Rg8ud+i/Iy2Pmj66cKB1uaVcL8WJ7rfVWT5c5oqBPGmHeNMVdg\nzZVYBegwVqUaokNfiGjnn3+R71kNxcdc91c4OJKKPyY+5TF1WoPbGHPIGPMvY8z53gpIqWZBxPqQ\nzUq3Zkr7k2x7Aktw88miY6JVwtwfE5/ymDolC6WUB9nSoCAPDm73dSSny0qH9n2hdQf39g8KOpX4\nVMDSZKGUr1QOO/WjD9myEqvsuLtNUA62UXB0l9VprwKSJgulfCWmB0R28a+/yHMzobSw7snC0WTl\nT/eiPEqThVK+ImJ9KGct9J9+i6x0QCBhRN2Oa3+2Vcpck0XA0mShlC/Z0qDwAOx3q4KO92WlQ+ck\naBldt+P8MfEpj9JkoZQv2fyo+ab0JOQsq3sTlINtpFXS/MBWz8al/IImC6V8qW03iE7wj2SxeymU\nl5zqeK+ryomGutRqINJkoZSv2dJg5yKoaLxVz6qVlQ4SDN2G1e/4aJtV0rwprAKo6kyThVK+lpAG\nRUdh7xrfxpGVDl0HQ4vI+h0vYo2KylpolThXAUWThVK+5g/9FsUFkLui/v0VDrY0q7T5/vWeiUv5\nDU0WSvlaZCdod7ZvayvtXAym3P3igTXROlEBS5OFUv7ANhJ2/gTlpb65ftYPEBwG8ec07DxRcdZk\nQ3/osFcepclCKX9gS4PSE1ZTkC9kL7QSRWjLhp/LlmaVOC8va/i5lN/QZKGUP3CUy/BFnajCQ7Bn\nTcP7KxxsaVaJ872rPXM+5Rc0WSjlDyJirFLfvmi+2fkjYNwvSe6K1okKSJoslPIXtjTYtRRKixr3\nulnpEBphDZv1hNYdrBLnmiwCiiYLpfyFLQ3KiyFneeNeN2shdBsOIWGeO6ctzSp1XlbiuXMqn9Jk\noZS/6D4cJKhx/yI/vh/yNzZ8yGxVtpFWqfPcTM+eV/mMJgul/EV4FHQZ1LjJwnEtT3VuO3QfAYg2\nRQUQTRZK+RNbGuRmQPHxxrle9kJoEQWdkj173ogYq9S5JouAoclCKX9iS4OKMti9pHGul5UO3c+F\n4BDPn9uWZpU8Lz3p+XOrRqfJQil/Ej8MgkIb5y/yI7vh0A7PN0E5JKRZJc93L/XO+VWj0mShlD8J\ni4C4IY2TLBylxL2VLLoPt0qea1NUQPDCs+cpInIJ8AIQDPzbGPN0lfe7A28A7YFDwE3GmBwRGQi8\nBrQByoEnjTEfeDNWpfyGLQ3Sn4Ft30JwC+9dZ8NnEBELHfp55/wtIq25G1vnQY8x3rlGQ7TuYK0d\n7k37N8KJA969Blg/6y4DvXoJryULEQkGXgEuAnKA5SLymTFmg9Nu04G3jTFvicj5wFPAzUAhcIsx\nZquIdAEyReRrY8wRb8WrlN/oeT788DT8d6L3rzXgGgjyYgNDrwvg+6fgrSu8d436CgqB326C1u29\nc/5jefDaCKuar7d1TYXb53v1Et58shgKbDPG7AAQkfeBqwDnZNEPuN/+egHwCYAxZotjB2NMnojs\nx3r60GShAl+3c+CO7xtnRFTnJO+e/7z77Z32Pl4FsKrDWfDZFKspbsAE71xjxw9Worj6n1Y1Xm+q\n74JVdeDNZNEV2O30fQ5Qtf7xamAiVlPVeCBSRGKNMQcdO4jIUCAM2F71AiJyB3AHQLdu3TwavFI+\n1WWQryPwjJAW1mgrf9NtOHz1sHeTRfZCaBkDSdd79+mtkXjzDqSababK91OBUSKyEhgF5AKVdY1F\npDPwDnCbMeaMdRqNMTOMManGmNT27b30KKmUCjzBIVYS81bnuzHWuRPOC4hEAd5NFjlAvNP3cUCe\n8w7GmDxjzARjzCDgEfu2owAi0gb4AnjUGNNIg86VUs2GLQ0ObrP6FjztcBYc3e29kWY+4M1ksRzo\nLSI2EQkDbgA+c95BRNqJiCOGh7BGRmHf/2Oszu/ZXoxRKdVcOT7IvbEErOOctlGeP7ePeC1ZGGPK\ngHuBr4GNwCxjzHoRmSYi4+y7jQY2i8gWoCPwpH37dUAacKuIrLJ/eXdcmFKqeek4AFpGe6cpKisd\nWneEdr09f24f8eo8C2PMXGBulW2POb2eA8yp5rj/Av/1ZmxKqWYuKMjqU8j6wepjkOq6WevB0V/R\nY5TnzukHAqPnRSml6sM2yupbOJztuXMe2AIn9gdUfwVoslBKNWeVa597sN/C0azlqWVq/YQmC6VU\n89X+bGjVwbP9Flk/QFQ3iE7w3Dn9gCYLpVTzJWI1F2WlW30NDVVRAdmLrHMGUH8FaLJQSjV3tjQ4\nvg8ObG34ufatg5OHA66/AjRZKKWaO8f641k/NPxclcvUBlZ/BWiyUEo1d9E2iIr3TL9FVjrE9oI2\nXRp+Lj+jyUIp1bw5+i2yF1p9DvVVXgY7fwrIJijQZKGUUtYw15OHYf/6+p9jzyooKQi4IbMOmiyU\nUqqy36IBTVGOPg9NFkopFaCi4iCmZwOTxULo0N97K+/5mCYLpZQCq69h509W30NdlRXDriUB218B\nmiyUUspiGwnFx2DP6rofm5MBZScDcsisgyYLpZSCU30N9Zlvkb0QJAi6j/BsTH5Ek4VSSgG07gAd\n+tWv3yIrHTonQ8u2no/LT2iyUEoph4SRVt9DWYn7x5QUwu5lATsKykGThVJKOdjSrL6H3Az3j9m9\nFCpKA2oJ1eposlBKKYeEEYDUrSkqKx2CQqDbMK+F5Q80WSillEPLaKvvIasOiyFlpUPXVGjR2ntx\n+QFNFkop5cw2EnKWWX0RrhQdg7yVAT1k1kGThVJKObONgvISqy/ClV2LwZQH9GQ8B00WSinlrNsw\nqw/CnXW5s9IhuAXEDfV+XD6myUIppZy1iIQuKe51cmf9APFDITTc+3H5mCYLpZSqypYGuSusPoma\nFB6CvesCfsisgyYLpZSqypZm9UXsWlzzPtmLANMs+itAk4VSSp0pfigEh9XeFJWVDqGtoGtK48Xl\nQ5oslFKqqtCWEH9O7ckieyF0Hw7BoY0Xlw9pslBKqerY0mDvWqtvoqqCfZC/qdk0QYGXk4WIXCIi\nm0Vkm4g8WM373UVkvoisEZHvRSTO6b2fichW+9fPvBmnUkqdwZYGGNj545nvOYbVarJoOBEJBl4B\nLgX6AZNEpF+V3aYDbxtjkoBpwFP2Y2OAx4FzgKHA4yIS7a1YlVLqDF1SIDSi+qaorHQIj4JOSY0f\nl49488liKLDNGLPDGFMCvA9cVWWffsB8++sFTu9fDHxjjDlkjDkMfANc4sVYlVLqdCFh0G14zcmi\n+3kQFNz4cfmIN5NFV2C30/c59m3OVgMT7a/HA5EiEuvmsUop5V22NKtvomDfqW1HdsPhrGbVBAXe\nTRZSzTZT5fupwCgRWQmMAnKBMjePRUTuEJEMEcnIz89vaLxKKXU6R4FA59Iflf0VgV880Jk3k0UO\nEO/0fRyQ57yDMSbPGDPBGDMIeMS+7ag7x9r3nWGMSTXGpLZv397T8SulmrtOydAi6vSmqKx0iGgH\n7fv6Li4f8GayWA70FhGbiIQBNwCfOe8gIu1ExBHDQ8Ab9tdfA2NFJNresT3Wvk0ppRpPcIi1IJIj\nWRhjvbaNhKDmNfPAa3drjCkD7sX6kN8IzDLGrBeRaSIyzr7baGCziGwBOgJP2o89BDyBlXCWA9Ps\n25RSqnHZ0qw+iiO74dAOOJbb7PorAEK8eXJjzFxgbpVtjzm9ngPMqeHYNzj1pKGUUr6R4NRvUVZs\n36bJQimllLMO/SAi1mp+KiuGyC4Q29PXUTU6TRZKKVWboCDr6SIr3VpBr+cFINUN2AxszauHRiml\n6sM20uqrOJHf7IbMOmiyUEopV5wXOGqGndugzVBKKeVabC+I7AwhLaBtN19H4xOaLJRSyhURuPhJ\nCGq+H5nN986VUqouBkx0vU8A0z4LpZRSLmmyUEop5ZImC6WUUi5pslBKKeWSJgullFIuabJQSinl\nkiYLpZRSLmmyUEop5ZIYc8bS1k2SiOQDO+3ftgMO+DAcX2rO9w7N+/6b871D877/htx7d2OMy3Wp\nAyZZOBORDGNMqq/j8IXmfO/QvO+/Od87NO/7b4x712YopZRSLmmyUEop5VKgJosZvg7Ah5rzvUPz\nvv/mfO/QvO/f6/cekH0WSimlPCtQnyyUUkp5UEAlCxG5REQ2i8g2EXnQ1/E0NhHJFpG1IrJKRDJ8\nHY+3icgbIrJfRNY5bYsRkW9EZKv9v9G+jNFbarj3P4lIrv33v0pELvNljN4iIvEiskBENorIehG5\nz7494H/3tdy713/3AdMMJSLBwBbgIiAHWA5MMsZs8GlgjUhEsoFUY0yzGGsuImnAceBtY8wA+7Zn\ngEPGmKftfzBEG2P+4EpRc7IAAAajSURBVMs4vaGGe/8TcNwYM92XsXmbiHQGOhtjVohIJJAJXA3c\nSoD/7mu59+vw8u8+kJ4shgLbjDE7jDElwPvAVT6OSXmRMSYdOFRl81XAW/bXb2H9jxRwarj3ZsEY\ns8cYs8L+ugDYCHSlGfzua7l3rwukZNEV2O30fQ6N9EP0IwaYJyKZInKHr4PxkY7GmD1g/Y8FdPBx\nPI3tXhFZY2+mCrhmmKpEJAEYBCylmf3uq9w7ePl3H0jJQqrZFhhtbO4bYYxJAS4F7rE3Vajm4zWg\nJzAQ2AP83bfheJeItAY+BH5jjDnm63gaUzX37vXffSAlixwg3un7OCDPR7H4hDEmz/7f/cDHWE1z\nzc0+e7uuo313v4/jaTTGmH3GmHJjTAXwOgH8+xeRUKwPy3eNMR/ZNzeL3311994Yv/tAShbLgd4i\nYhORMOAG4DMfx9RoRKSVvcMLEWkFjAXW1X5UQPoM+Jn99c+AT30YS6NyfFDajSdAf/8iIsD/ARuN\nMc85vRXwv/ua7r0xfvcBMxoKwD5c7B9AMPCGMeZJH4fUaESkB9bTBEAIMDPQ719E3gNGY1Xc3Ac8\nDnwCzAK6AbuAa40xAdcRXMO9j8ZqhjBANnCnow0/kIjIecBCYC1QYd/8MFbbfUD/7mu590l4+Xcf\nUMlCKaWUdwRSM5RSSikv0WShlFLKJU0WSimlXNJkoZRSyiVNFkoppVzSZKH8hogYEfm70/dT7cXx\nPHHu/4jINZ44Vz2u3cdeCXSliPRs4LnGuaqoLCKjReTzGt7LFpF2DYlBNU+aLJQ/KQYm+NuHmb2i\ncUNcDXxqjBlkjNnekBMZYz4zxjzdwHjqRURCfHFd5R80WSh/Uoa1POT9Vd+o+mQgIsft/x0tIj+I\nyCwR2SIiT4vIZBFZZl/bw/kv+QtFZKF9vyvsxweLyLMistxehO1Op/MuEJGZwFr7DPkvRGS1iKwT\nkeuriXGgiCyxn+djEYm2TxT9DfBLEVlQzTHHReRJ+3mXiEhH+/b2IvKhPa7lIjLCvv1WEXnZ/rqn\n/ZjlIjLN8TOxay0ic0Rkk4i8a5/56/CA/eezTER62c/VXUTm22OfLyLdnH7uz9lj/5uIjJJTayas\ndFQNUIFPk4XyN68Ak0Ukqg7HJAP3AYnAzcBZxpihwL+BKU77JQCjgMuBf4pIOPAL4KgxZggwBLhd\nRGz2/YcCjxhj+gGXAHnGmGT7+hFfVRPH28AfjDFJWDNsHzfGzAX+CTxvjBlTzTGtgCXGmGQgHbjd\nvv0F+zFDgIn2e6nqBeAF+z5V66ANwkpS/YAewAin947Zfz4vY1U8wP76bXvs7wIvOu1/FnChMeZ3\nwFTgHmPMQGAkcLKauFQA0mSh/Iq9gubbwK/rcNhye53/YmA7MM++fS1WgnCYZYypMMZsBXYAfbBq\naN0iIquwykXEAr3t+y8zxmQ5netCEfmbiIw0/9/evbtGEUVxHP/+AioqiJ2glQpiIwRTLWgh+C+I\nBhFRLBLQEBBbWxUfWGgnghgMmEpBRMEi4iMGFVEQYmVhZ6EpfOZxLO5dvVk2zGZBzMbfB8LOzt7c\nOTMkc+bOXc5ETJYB5OS2NiJG86prQCtVf38C9fmFF0W8u4FLOa7bwJomV/E1YCQv32j4bDwiPuTC\ncq8ajsNw8Vor+qr3cR3YUbQfiYiZvPwYuCBpgLS/0y3soy0BTha2GF0kXfGvLtZNk/9e8y2V5cVn\nP4rl2eL9LKlOVl1jbZsglbY/FhHd+WdjRNSTzZffDSPeAT2kpHFK0sl2dqyJqfhTc2emiLcLqBVx\nbcgPu2lVeUzKfmHucZiv3k+5vjwOp4EjwEpgTNLWBcRkHczJwhadXPztJilh1L0nnawhPRFtWRtd\n75HUlecxNgETwD2gP5d9RtKWXLV3Dknrga8RMQScA7Y3xDwJfJK0M686AIzSvvvA0WL73U3ajJFu\nUUGqstyqvcXr07z8pOhjP/Co2S9K2hwRbyLiDPCcNDqz/4C/3WCL1XmKkyWpRv8tSePAA4qr3QWY\nIJ3A1wF9EfFd0hXSLZqXecTykeaP49wGnJU0C0wB/U3aHCTNhawi3eY61EaMdQPAZUmvSf+nD4G+\nhjaDwJCk48AdYJLWrJD0jHSx2Fts76qkE6RjMF/sg5J2kUYrb4G7LW7TOpyrzpp1qJyUvkVESNoH\n9EaEnztvf4VHFmadq4c0CS7gM3D4H8djS5hHFmZmVskT3GZmVsnJwszMKjlZmJlZJScLMzOr5GRh\nZmaVnCzMzKzSL/z3bP7jX36cAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "# আগের সব গল্প, শুধু বাড়িয়েছি n_neighbors এর সংখ্যা - ২৫ পর্যন্ত \n", "\n", "from sklearn.datasets import load_iris\n", "iris = load_iris()\n", "\n", "X = iris.data\n", "y = iris.target\n", "\n", "from sklearn.model_selection import train_test_split\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(\n", " X, y, stratify=y, random_state=4)\n", "\n", "from sklearn.neighbors import KNeighborsClassifier\n", "training_accuracy = []\n", "test_accuracy = []\n", "# try n_neighbors from 1 to 25\n", "neighbors_settings = range(1, 26)\n", "\n", "for n_neighbors in neighbors_settings:\n", " # build the model\n", " knn = KNeighborsClassifier(n_neighbors=n_neighbors)\n", " knn.fit(X_train, y_train)\n", " # record training set accuracy\n", " training_accuracy.append(knn.score(X_train, y_train))\n", " # record generalization accuracy\n", " test_accuracy.append(knn.score(X_test, y_test))\n", "\n", "#নিচের প্লটটা দেখাচ্ছে ট্রেনিং এবং টেস্ট সেটের অ্যাক্যুরেসি \n", "import matplotlib.pyplot as plt\n", "\n", "plt.plot(neighbors_settings, training_accuracy, label=\"training accuracy\")\n", "plt.plot(neighbors_settings, test_accuracy, label=\"test accuracy\")\n", "plt.ylabel(\"Accuracy\")\n", "plt.xlabel(\"Numbers of neighbors\")\n", "plt.legend()" ] } ], "metadata": { "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.3" } }, "nbformat": 4, "nbformat_minor": 1 }