{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["# Classification multi-classe et jeu mal balanc\u00e9\n", "\n", "Plus il y a de classes, plus la classification est difficile car le nombre d'exemples par classe diminue. Voyons cela plus en d\u00e9tail sur des jeux artificiels produits mar [make_blobs](http://scikit-learn.org/stable/modules/generated/sklearn.datasets.make_blobs.html)."]}, {"cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [{"data": {"text/html": ["
run previous cell, wait for 2 seconds
\n", ""], "text/plain": [""]}, "execution_count": 2, "metadata": {}, "output_type": "execute_result"}], "source": ["from jyquickhelper import add_notebook_menu\n", "add_notebook_menu()"]}, {"cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": ["%matplotlib inline"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## d\u00e9couverte"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Le premier jeu de donn\u00e9es est une simple fonction lin\u00e9aire sur deux variables d'ordre de grandeur diff\u00e9rents."]}, {"cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": ["from sklearn.datasets import make_blobs\n", "from sklearn.model_selection import train_test_split\n", "X, y = make_blobs(2000, cluster_std=2, centers=5)"]}, {"cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [{"data": {"text/plain": ["Text(0.5,1,'Nuage de point avec 5 classes')"]}, "execution_count": 5, "metadata": {}, "output_type": "execute_result"}, {"data": {"image/png": "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\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["import matplotlib.pyplot as plt\n", "fig, ax = plt.subplots(1, 1, figsize=(3,3))\n", "for i, c in zip(range(0,5), \"rgbyc\"):\n", " ax.plot(X[y==i, 0], X[y==i, 1], c + '.', label=str(i))\n", "ax.set_title(\"Nuage de point avec 5 classes\")"]}, {"cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": ["X_train, X_test, y_train, y_test = train_test_split(X, y)"]}, {"cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [{"data": {"text/plain": ["0.8"]}, "execution_count": 7, "metadata": {}, "output_type": "execute_result"}], "source": ["from sklearn.linear_model import LogisticRegression\n", "model = LogisticRegression()\n", "model.fit(X_train, y_train)\n", "score = model.score(X_test, y_test)\n", "score"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Mettons le jour dans une fonction pour plusieurs mod\u00e8les :"]}, {"cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [{"data": {"text/plain": ["{'LR_score': 0.8,\n", " 'LR_time_test': 0.00019950617283950867,\n", " 'LR_time_train': 0.004796839506172837,\n", " 'OvO-LR_score': 0.828,\n", " 'OvO-LR_time_test': 0.001883654320987655,\n", " 'OvO-LR_time_train': 0.017101432098765433,\n", " 'OvR-LR_score': 0.8,\n", " 'OvR-LR_time_test': 0.0004175802469135806,\n", " 'OvR-LR_time_train': 0.011554370370370368}"]}, "execution_count": 8, "metadata": {}, "output_type": "execute_result"}], "source": ["from time import perf_counter as clock\n", "\n", "def evaluate_model(models, X_train, X_test, y_train, y_test):\n", " res = {}\n", " for k, v in models.items():\n", " t1 = clock()\n", " v.fit(X_train, y_train)\n", " t2 = clock() - t1\n", " res[k + \"_time_train\"] = t2\n", " t1 = clock()\n", " score = v.score(X_test, y_test)\n", " t2 = clock() - t1\n", " res[k + \"_time_test\"] = t2\n", " res[k + \"_score\"] = score\n", " return res\n", "\n", "from sklearn.multiclass import OneVsOneClassifier, OneVsRestClassifier\n", "models = {'OvO-LR': OneVsOneClassifier(LogisticRegression()),\n", " 'OvR-LR': OneVsRestClassifier(LogisticRegression()),\n", " 'LR': LogisticRegression()}\n", "\n", "res = evaluate_model(models, X_train, X_test, y_train, y_test)\n", "res"]}, {"cell_type": "markdown", "metadata": {}, "source": ["La strat\u00e9gie *OneVsOne* a l'air d'\u00eatre plus performante. La r\u00e9gression logistique impl\u00e9mente la strat\u00e9gie *OneVsRest*. On ne l'\u00e9value plus."]}, {"cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OvO-LR_scoreOvO-LR_time_testOvO-LR_time_trainOvR-LR_scoreOvR-LR_time_testOvR-LR_time_traincenters
00.9520.0005320.0020630.9520.0002690.0009242
10.9920.0005440.0044260.9840.0022380.0018053
20.9160.0008990.0073950.9000.0001790.0020214
30.8360.0011920.0111770.8240.0002560.0026945
40.9120.0015610.0151920.8880.0001710.0028066
50.6720.0024080.0202030.6680.0002570.0037147
60.6520.0028340.0254390.6280.0002180.0034638
70.7080.0032600.0323780.6520.0002830.0040349
80.6760.0039470.0410430.6400.0001880.00415810
90.7280.0063530.0481260.6880.0002740.00452611
100.6920.0072130.0547500.6360.0002300.00498412
110.6120.0066200.0636010.5760.0002570.00624213
120.4840.0076320.0703980.4440.0003210.00665814
130.5720.0087040.0762790.5360.0001850.00617215
140.6120.0097270.0864370.5840.0002490.00641716
150.6120.0125950.0997120.5680.0002200.00689417
160.5200.0153900.1712090.4080.0002560.00719318
170.5120.0140820.1325710.4160.0002130.00761119
180.4800.0181060.1833000.4200.0002300.00778620
190.5080.0168900.1502320.4400.0002780.00918021
200.5440.0192700.1551510.3960.0001990.00876622
210.4440.0416130.1741260.3720.0003820.01092223
220.5360.0228670.2485100.4320.0002770.00986224
230.3880.0240000.2032560.3000.0002100.00988125
240.3600.0282090.2728290.3240.0002620.01044126
250.3720.0308690.2816280.3480.0002200.01064527
260.3760.0334550.3118800.2760.0003140.01111228
270.4360.0343570.2746450.4000.0003160.01174229
280.3560.0338320.2903940.2400.0002110.01147530
290.3360.0415730.3189970.2560.0003830.01516831
300.3280.0438510.3860170.2560.0003550.01308032
310.4000.0453280.4256020.2360.0003860.01329733
320.3120.0505370.4233470.2280.0003170.01667634
330.3600.0543850.5280770.2680.0003080.01539035
340.3360.0553240.4903420.2480.0003340.01525636
350.3400.0542050.5074380.2280.0002740.01489037
360.3400.0568710.4545360.2920.0002900.01521038
370.2760.0601690.4779940.1960.0002570.01535639
380.2960.0634600.5039310.2440.0002180.01563540
390.2920.0677720.5302220.2440.0002240.01649741
400.2600.0698900.5565230.1520.0002370.01685642
410.2680.0713580.5734570.2440.0002230.01634443
420.3040.0748070.5912760.2320.0002310.01726344
430.2320.0828370.6193940.1480.0002990.01798945
440.3040.0848380.6685220.1800.0002190.01823446
450.2840.0878330.6934360.2200.0002350.01900547
460.2240.0924930.7578650.1680.0002190.01896248
470.2400.0928960.7373480.1640.0002750.01949149
480.1880.0971610.7629050.1080.0002520.01916450
\n", "
"], "text/plain": [" OvO-LR_score OvO-LR_time_test OvO-LR_time_train OvR-LR_score \\\n", "0 0.952 0.000532 0.002063 0.952 \n", "1 0.992 0.000544 0.004426 0.984 \n", "2 0.916 0.000899 0.007395 0.900 \n", "3 0.836 0.001192 0.011177 0.824 \n", "4 0.912 0.001561 0.015192 0.888 \n", "5 0.672 0.002408 0.020203 0.668 \n", "6 0.652 0.002834 0.025439 0.628 \n", "7 0.708 0.003260 0.032378 0.652 \n", "8 0.676 0.003947 0.041043 0.640 \n", "9 0.728 0.006353 0.048126 0.688 \n", "10 0.692 0.007213 0.054750 0.636 \n", "11 0.612 0.006620 0.063601 0.576 \n", "12 0.484 0.007632 0.070398 0.444 \n", "13 0.572 0.008704 0.076279 0.536 \n", "14 0.612 0.009727 0.086437 0.584 \n", "15 0.612 0.012595 0.099712 0.568 \n", "16 0.520 0.015390 0.171209 0.408 \n", "17 0.512 0.014082 0.132571 0.416 \n", "18 0.480 0.018106 0.183300 0.420 \n", "19 0.508 0.016890 0.150232 0.440 \n", "20 0.544 0.019270 0.155151 0.396 \n", "21 0.444 0.041613 0.174126 0.372 \n", "22 0.536 0.022867 0.248510 0.432 \n", "23 0.388 0.024000 0.203256 0.300 \n", "24 0.360 0.028209 0.272829 0.324 \n", "25 0.372 0.030869 0.281628 0.348 \n", "26 0.376 0.033455 0.311880 0.276 \n", "27 0.436 0.034357 0.274645 0.400 \n", "28 0.356 0.033832 0.290394 0.240 \n", "29 0.336 0.041573 0.318997 0.256 \n", "30 0.328 0.043851 0.386017 0.256 \n", "31 0.400 0.045328 0.425602 0.236 \n", "32 0.312 0.050537 0.423347 0.228 \n", "33 0.360 0.054385 0.528077 0.268 \n", "34 0.336 0.055324 0.490342 0.248 \n", "35 0.340 0.054205 0.507438 0.228 \n", "36 0.340 0.056871 0.454536 0.292 \n", "37 0.276 0.060169 0.477994 0.196 \n", "38 0.296 0.063460 0.503931 0.244 \n", "39 0.292 0.067772 0.530222 0.244 \n", "40 0.260 0.069890 0.556523 0.152 \n", "41 0.268 0.071358 0.573457 0.244 \n", "42 0.304 0.074807 0.591276 0.232 \n", "43 0.232 0.082837 0.619394 0.148 \n", "44 0.304 0.084838 0.668522 0.180 \n", "45 0.284 0.087833 0.693436 0.220 \n", "46 0.224 0.092493 0.757865 0.168 \n", "47 0.240 0.092896 0.737348 0.164 \n", "48 0.188 0.097161 0.762905 0.108 \n", "\n", " OvR-LR_time_test OvR-LR_time_train centers \n", "0 0.000269 0.000924 2 \n", "1 0.002238 0.001805 3 \n", "2 0.000179 0.002021 4 \n", "3 0.000256 0.002694 5 \n", "4 0.000171 0.002806 6 \n", "5 0.000257 0.003714 7 \n", "6 0.000218 0.003463 8 \n", "7 0.000283 0.004034 9 \n", "8 0.000188 0.004158 10 \n", "9 0.000274 0.004526 11 \n", "10 0.000230 0.004984 12 \n", "11 0.000257 0.006242 13 \n", "12 0.000321 0.006658 14 \n", "13 0.000185 0.006172 15 \n", "14 0.000249 0.006417 16 \n", "15 0.000220 0.006894 17 \n", "16 0.000256 0.007193 18 \n", "17 0.000213 0.007611 19 \n", "18 0.000230 0.007786 20 \n", "19 0.000278 0.009180 21 \n", "20 0.000199 0.008766 22 \n", "21 0.000382 0.010922 23 \n", "22 0.000277 0.009862 24 \n", "23 0.000210 0.009881 25 \n", "24 0.000262 0.010441 26 \n", "25 0.000220 0.010645 27 \n", "26 0.000314 0.011112 28 \n", "27 0.000316 0.011742 29 \n", "28 0.000211 0.011475 30 \n", "29 0.000383 0.015168 31 \n", "30 0.000355 0.013080 32 \n", "31 0.000386 0.013297 33 \n", "32 0.000317 0.016676 34 \n", "33 0.000308 0.015390 35 \n", "34 0.000334 0.015256 36 \n", "35 0.000274 0.014890 37 \n", "36 0.000290 0.015210 38 \n", "37 0.000257 0.015356 39 \n", "38 0.000218 0.015635 40 \n", "39 0.000224 0.016497 41 \n", "40 0.000237 0.016856 42 \n", "41 0.000223 0.016344 43 \n", "42 0.000231 0.017263 44 \n", "43 0.000299 0.017989 45 \n", "44 0.000219 0.018234 46 \n", "45 0.000235 0.019005 47 \n", "46 0.000219 0.018962 48 \n", "47 0.000275 0.019491 49 \n", "48 0.000252 0.019164 50 "]}, "execution_count": 9, "metadata": {}, "output_type": "execute_result"}], "source": ["import pandas\n", "\n", "models = {'OvO-LR': OneVsOneClassifier(LogisticRegression()),\n", " 'OvR-LR': LogisticRegression()}\n", "\n", "rows = []\n", "for centers in range(2, 51):\n", " X, y = make_blobs(1000, centers=centers, cluster_std=2.)\n", " X_train, X_test, y_train, y_test = train_test_split(X, y)\n", " res = evaluate_model(models, X_train, X_test, y_train, y_test)\n", " res['centers'] = centers\n", " rows.append(res)\n", "\n", "df = pandas.DataFrame(rows)\n", "df"]}, {"cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [{"data": {"image/png": "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\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["fix, ax = plt.subplots(1, 1, figsize=(6, 3))\n", "for c, col in zip('rgb', [_ for _ in df.columns if '_score' in _]):\n", " df.plot(x=\"centers\", y=col, label=col.replace(\"_score\", \"\"), ax=ax, color=c)\n", "x = list(range(2, 51))\n", "ax.plot(x, [1./_ for _ in x], label=\"constante\")\n", "ax.legend()\n", "ax.set_title('Pr\u00e9cision en fonction du nombre de classes');"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## \u00e9volution en fonction du nombre de classes"]}, {"cell_type": "markdown", "metadata": {}, "source": ["On pourrait se dire que c'est parce que le nombre d'exemples par classes d\u00e9cro\u00eet. Voyons cela."]}, {"cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OvO-LR_scoreOvO-LR_time_testOvO-LR_time_trainOvR-LR_scoreOvR-LR_time_testOvR-LR_time_traincenters
01.0000000.0005870.0017341.0000000.0010300.0021072
10.7200000.0017790.0069960.6666670.0004230.0066873
20.8900000.0007170.0105890.9000000.0002890.0045994
31.0000000.0010160.0088641.0000000.0003180.0052345
40.7266670.0014100.0114710.6666670.0004070.0062236
50.7657140.0020080.0158820.7542860.0003930.0078087
60.7100000.0026060.0208890.6450000.0004240.0089698
70.5822220.0031130.0308270.5200000.0004600.0110139
80.7920000.0039280.0335260.7760000.0004910.01244410
90.5745450.0049210.0409220.4800000.0006050.01410011
100.6466670.0057690.0499650.6300000.0005780.01575212
110.5846150.0069900.0588260.5200000.0006500.01782613
120.6571430.0080570.0676610.5714290.0006750.01969014
130.6293330.0095680.0775280.5893330.0007190.02238015
140.6375000.0109950.0954330.5950000.0007510.02443416
150.5717650.0124610.1015950.5223530.0007980.02674317
160.5133330.0140720.1150110.4711110.0008540.02898318
170.5031580.0159380.1310940.4378950.0008530.03149019
180.4920000.0179520.1399390.4620000.0008910.03445720
190.4780950.0209300.1537350.4247620.0009910.03768721
200.5090910.0236130.1725290.4381820.0010320.04065422
210.4521740.0265700.1880200.4313040.0010810.04339623
220.4800000.0287760.2051420.4300000.0010970.04588024
230.4320000.0320360.2218920.3680000.0011330.05014925
240.4353850.0349690.2413840.3938460.0011650.05323926
250.3600000.0388250.2594410.3422220.0012110.05726427
260.4357140.0430340.2798040.3971430.0013690.06077828
270.4482760.0462520.3042050.3793100.0012840.06498429
280.4346670.0498110.3232540.4013330.0013510.06752030
290.4322580.0538860.3453510.3767740.0014290.07306831
300.3525000.0593830.3679270.3175000.0014940.07664532
310.3721210.0631150.3921520.3309090.0015450.08026433
320.2847060.0688550.4148580.2588240.0015180.08604634
330.3840000.0733360.4437690.3097140.0015980.08895735
340.3411110.0791970.4676650.2877780.0016630.09339836
350.3156760.0856060.4947930.2616220.0016420.09737637
360.3852630.0902790.5245470.3305260.0017150.10564638
370.3405130.0969590.5515730.2738460.0017470.10800639
380.3520000.0985220.5781780.2810000.0017770.10762140
390.3258540.1135060.6368880.2839020.0020850.13661941
400.3361900.1257840.6965000.2857140.0020340.14500842
410.3451160.1262220.7701640.3041860.0019720.12948243
420.3136360.1456380.8045990.2954550.0020440.14973644
430.3022220.1433760.7897310.2693330.0020620.14448445
440.2982610.1490310.8557410.2469570.0021050.14499046
450.3608510.1603480.8936160.2834040.0021420.16448847
460.3016670.1689280.8742580.2908330.0022080.16112648
470.2995920.1740860.9576260.2506120.0022270.16608149
480.3056000.1805010.8915760.2632000.0022180.17183250
\n", "
"], "text/plain": [" OvO-LR_score OvO-LR_time_test OvO-LR_time_train OvR-LR_score \\\n", "0 1.000000 0.000587 0.001734 1.000000 \n", "1 0.720000 0.001779 0.006996 0.666667 \n", "2 0.890000 0.000717 0.010589 0.900000 \n", "3 1.000000 0.001016 0.008864 1.000000 \n", "4 0.726667 0.001410 0.011471 0.666667 \n", "5 0.765714 0.002008 0.015882 0.754286 \n", "6 0.710000 0.002606 0.020889 0.645000 \n", "7 0.582222 0.003113 0.030827 0.520000 \n", "8 0.792000 0.003928 0.033526 0.776000 \n", "9 0.574545 0.004921 0.040922 0.480000 \n", "10 0.646667 0.005769 0.049965 0.630000 \n", "11 0.584615 0.006990 0.058826 0.520000 \n", "12 0.657143 0.008057 0.067661 0.571429 \n", "13 0.629333 0.009568 0.077528 0.589333 \n", "14 0.637500 0.010995 0.095433 0.595000 \n", "15 0.571765 0.012461 0.101595 0.522353 \n", "16 0.513333 0.014072 0.115011 0.471111 \n", "17 0.503158 0.015938 0.131094 0.437895 \n", "18 0.492000 0.017952 0.139939 0.462000 \n", "19 0.478095 0.020930 0.153735 0.424762 \n", "20 0.509091 0.023613 0.172529 0.438182 \n", "21 0.452174 0.026570 0.188020 0.431304 \n", "22 0.480000 0.028776 0.205142 0.430000 \n", "23 0.432000 0.032036 0.221892 0.368000 \n", "24 0.435385 0.034969 0.241384 0.393846 \n", "25 0.360000 0.038825 0.259441 0.342222 \n", "26 0.435714 0.043034 0.279804 0.397143 \n", "27 0.448276 0.046252 0.304205 0.379310 \n", "28 0.434667 0.049811 0.323254 0.401333 \n", "29 0.432258 0.053886 0.345351 0.376774 \n", "30 0.352500 0.059383 0.367927 0.317500 \n", "31 0.372121 0.063115 0.392152 0.330909 \n", "32 0.284706 0.068855 0.414858 0.258824 \n", "33 0.384000 0.073336 0.443769 0.309714 \n", "34 0.341111 0.079197 0.467665 0.287778 \n", "35 0.315676 0.085606 0.494793 0.261622 \n", "36 0.385263 0.090279 0.524547 0.330526 \n", "37 0.340513 0.096959 0.551573 0.273846 \n", "38 0.352000 0.098522 0.578178 0.281000 \n", "39 0.325854 0.113506 0.636888 0.283902 \n", "40 0.336190 0.125784 0.696500 0.285714 \n", "41 0.345116 0.126222 0.770164 0.304186 \n", "42 0.313636 0.145638 0.804599 0.295455 \n", "43 0.302222 0.143376 0.789731 0.269333 \n", "44 0.298261 0.149031 0.855741 0.246957 \n", "45 0.360851 0.160348 0.893616 0.283404 \n", "46 0.301667 0.168928 0.874258 0.290833 \n", "47 0.299592 0.174086 0.957626 0.250612 \n", "48 0.305600 0.180501 0.891576 0.263200 \n", "\n", " OvR-LR_time_test OvR-LR_time_train centers \n", "0 0.001030 0.002107 2 \n", "1 0.000423 0.006687 3 \n", "2 0.000289 0.004599 4 \n", "3 0.000318 0.005234 5 \n", "4 0.000407 0.006223 6 \n", "5 0.000393 0.007808 7 \n", "6 0.000424 0.008969 8 \n", "7 0.000460 0.011013 9 \n", "8 0.000491 0.012444 10 \n", "9 0.000605 0.014100 11 \n", "10 0.000578 0.015752 12 \n", "11 0.000650 0.017826 13 \n", "12 0.000675 0.019690 14 \n", "13 0.000719 0.022380 15 \n", "14 0.000751 0.024434 16 \n", "15 0.000798 0.026743 17 \n", "16 0.000854 0.028983 18 \n", "17 0.000853 0.031490 19 \n", "18 0.000891 0.034457 20 \n", "19 0.000991 0.037687 21 \n", "20 0.001032 0.040654 22 \n", "21 0.001081 0.043396 23 \n", "22 0.001097 0.045880 24 \n", "23 0.001133 0.050149 25 \n", "24 0.001165 0.053239 26 \n", "25 0.001211 0.057264 27 \n", "26 0.001369 0.060778 28 \n", "27 0.001284 0.064984 29 \n", "28 0.001351 0.067520 30 \n", "29 0.001429 0.073068 31 \n", "30 0.001494 0.076645 32 \n", "31 0.001545 0.080264 33 \n", "32 0.001518 0.086046 34 \n", "33 0.001598 0.088957 35 \n", "34 0.001663 0.093398 36 \n", "35 0.001642 0.097376 37 \n", "36 0.001715 0.105646 38 \n", "37 0.001747 0.108006 39 \n", "38 0.001777 0.107621 40 \n", "39 0.002085 0.136619 41 \n", "40 0.002034 0.145008 42 \n", "41 0.001972 0.129482 43 \n", "42 0.002044 0.149736 44 \n", "43 0.002062 0.144484 45 \n", "44 0.002105 0.144990 46 \n", "45 0.002142 0.164488 47 \n", "46 0.002208 0.161126 48 \n", "47 0.002227 0.166081 49 \n", "48 0.002218 0.171832 50 "]}, "execution_count": 11, "metadata": {}, "output_type": "execute_result"}], "source": ["import pandas\n", "\n", "models = {'OvO-LR': OneVsOneClassifier(LogisticRegression()),\n", " 'OvR-LR': OneVsRestClassifier(LogisticRegression())}\n", "\n", "rows = []\n", "for centers in range(2, 51):\n", " X, y = make_blobs(100 * centers, centers=centers, cluster_std=2.)\n", " X_train, X_test, y_train, y_test = train_test_split(X, y)\n", " res = evaluate_model(models, X_train, X_test, y_train, y_test)\n", " res['centers'] = centers\n", " rows.append(res)\n", "\n", "df2 = pandas.DataFrame(rows)\n", "df2"]}, {"cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [{"data": {"image/png": "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\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["fix, ax = plt.subplots(1, 1, figsize=(8, 4))\n", "for c1, c2, col in zip('rg', 'cy', [_ for _ in df2.columns if '_score' in _]):\n", " df.plot(x=\"centers\", y=col, label=col.replace(\"_score\", \" N const\"), ax=ax, color=c1)\n", " df2.plot(x=\"centers\", y=col, label=col.replace(\"_score\", \" cl const\"), ax=ax, color=c2)\n", "x = list(range(2, 51))\n", "ax.plot(x, [1./_ for _ in x], label=\"constante\")\n", "ax.legend()\n", "ax.set_title('Pr\u00e9cision en fonction du nombre de classes');"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## \u00e9volution en fonction de la variance"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Un peu mieux mais cela d\u00e9cro\u00eet toujours. Peut-\u00eatre que la courbe d\u00e9pend de la confusion entre les classes ?"]}, {"cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OvO-LR_scoreOvO-LR_time_testOvO-LR_time_trainOvR-LR_scoreOvR-LR_time_testOvR-LR_time_trainstd
00.6560.0634830.5390990.2960.0015470.0505130.5
10.6400.0652590.5333240.2760.0013620.0515360.6
20.7120.0700780.5246690.3000.0014410.0532370.7
30.5280.0668540.5679660.3200.0014250.0498790.8
40.6160.0630020.5053050.2480.0014040.0486610.9
50.4960.0662950.5340650.2920.0014110.0489411.0
60.4960.0615400.5125480.3520.0014100.0462351.1
70.5040.0636300.5032140.3040.0014840.0478971.2
80.4880.0765490.5521050.2280.0014360.0568061.3
90.4080.0710630.6027700.2480.0018880.0500141.4
100.3640.0722320.5790400.2000.0016750.0544151.5
110.3240.0667670.5131200.2720.0017080.0516051.6
120.4040.0618200.5221130.2360.0013520.0458841.7
130.3040.0625750.5294310.2200.0016060.0473401.8
140.3440.0615570.5100100.2160.0013560.0457921.9
150.3120.0610250.4875580.1680.0013390.0455062.0
160.2680.0612190.4896220.1880.0013930.0457332.1
170.2520.0661590.5135250.2080.0015300.0493782.2
180.2880.0665870.5547970.2120.0014110.0497612.3
190.2360.0619220.5208510.1800.0013880.0500292.4
200.2080.0682960.5097620.1880.0013920.0461062.5
210.2240.0819530.6400190.1640.0023660.0538132.6
220.2000.0705160.6234450.1600.0020540.0477542.7
230.1880.0829610.5469830.1640.0026330.0841882.8
240.1960.0870730.8600340.1520.0015170.0717252.9
250.2200.0703570.5679260.1680.0016980.0529873.0
\n", "
"], "text/plain": [" OvO-LR_score OvO-LR_time_test OvO-LR_time_train OvR-LR_score \\\n", "0 0.656 0.063483 0.539099 0.296 \n", "1 0.640 0.065259 0.533324 0.276 \n", "2 0.712 0.070078 0.524669 0.300 \n", "3 0.528 0.066854 0.567966 0.320 \n", "4 0.616 0.063002 0.505305 0.248 \n", "5 0.496 0.066295 0.534065 0.292 \n", "6 0.496 0.061540 0.512548 0.352 \n", "7 0.504 0.063630 0.503214 0.304 \n", "8 0.488 0.076549 0.552105 0.228 \n", "9 0.408 0.071063 0.602770 0.248 \n", "10 0.364 0.072232 0.579040 0.200 \n", "11 0.324 0.066767 0.513120 0.272 \n", "12 0.404 0.061820 0.522113 0.236 \n", "13 0.304 0.062575 0.529431 0.220 \n", "14 0.344 0.061557 0.510010 0.216 \n", "15 0.312 0.061025 0.487558 0.168 \n", "16 0.268 0.061219 0.489622 0.188 \n", "17 0.252 0.066159 0.513525 0.208 \n", "18 0.288 0.066587 0.554797 0.212 \n", "19 0.236 0.061922 0.520851 0.180 \n", "20 0.208 0.068296 0.509762 0.188 \n", "21 0.224 0.081953 0.640019 0.164 \n", "22 0.200 0.070516 0.623445 0.160 \n", "23 0.188 0.082961 0.546983 0.164 \n", "24 0.196 0.087073 0.860034 0.152 \n", "25 0.220 0.070357 0.567926 0.168 \n", "\n", " OvR-LR_time_test OvR-LR_time_train std \n", "0 0.001547 0.050513 0.5 \n", "1 0.001362 0.051536 0.6 \n", "2 0.001441 0.053237 0.7 \n", "3 0.001425 0.049879 0.8 \n", "4 0.001404 0.048661 0.9 \n", "5 0.001411 0.048941 1.0 \n", "6 0.001410 0.046235 1.1 \n", "7 0.001484 0.047897 1.2 \n", "8 0.001436 0.056806 1.3 \n", "9 0.001888 0.050014 1.4 \n", "10 0.001675 0.054415 1.5 \n", "11 0.001708 0.051605 1.6 \n", "12 0.001352 0.045884 1.7 \n", "13 0.001606 0.047340 1.8 \n", "14 0.001356 0.045792 1.9 \n", "15 0.001339 0.045506 2.0 \n", "16 0.001393 0.045733 2.1 \n", "17 0.001530 0.049378 2.2 \n", "18 0.001411 0.049761 2.3 \n", "19 0.001388 0.050029 2.4 \n", "20 0.001392 0.046106 2.5 \n", "21 0.002366 0.053813 2.6 \n", "22 0.002054 0.047754 2.7 \n", "23 0.002633 0.084188 2.8 \n", "24 0.001517 0.071725 2.9 \n", "25 0.001698 0.052987 3.0 "]}, "execution_count": 13, "metadata": {}, "output_type": "execute_result"}], "source": ["import pandas\n", "\n", "models = {'OvO-LR': OneVsOneClassifier(LogisticRegression()),\n", " 'OvR-LR': OneVsRestClassifier(LogisticRegression())}\n", "\n", "rows = []\n", "for std_ in range(5, 31):\n", " X, y = make_blobs(1000, centers=40, cluster_std=std_/10.)\n", " X_train, X_test, y_train, y_test = train_test_split(X, y)\n", " res = evaluate_model(models, X_train, X_test, y_train, y_test)\n", " res['std'] = std_/10.\n", " rows.append(res)\n", "\n", "df3 = pandas.DataFrame(rows)\n", "df3"]}, {"cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [{"data": {"image/png": "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\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["fix, ax = plt.subplots(1, 1, figsize=(8, 4))\n", "for c1, col in zip('rg', [_ for _ in df3.columns if '_score' in _]):\n", " df3.plot(x=\"std\", y=col, label=col.replace(\"_score\", \" cl const\"), ax=ax, color=c1)\n", "x = [_/10. for _ in range(5, 31)]\n", "ax.plot(x, [1/40. for _ in x], label=\"constante\")\n", "ax.set_title('Pr\u00e9cision en fonction de la variance de chaque classe')\n", "ax.legend();"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## \u00e9volution en fonction de la dimension"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Et en fonction du nombre de dimensions :"]}, {"cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OvO-LR_scoreOvO-LR_time_testOvO-LR_time_trainOvR-LR_scoreOvR-LR_time_testOvR-LR_time_trainnf
00.2800.0724150.5712670.1880.0014860.0547092
10.5520.0776300.5853550.4080.0020460.0587753
20.7080.0847960.6938220.6480.0013850.0629644
30.8920.0924990.9669110.8400.0014470.0792825
40.9600.0882300.8406740.9160.0016850.0861476
50.9360.0914630.6786900.8720.0014800.0869317
60.9720.1253360.7081100.9520.0027390.1768118
70.9920.0732570.7767470.9960.0015350.1063439
80.9960.0711920.7810090.9880.0015110.11551610
\n", "
"], "text/plain": [" OvO-LR_score OvO-LR_time_test OvO-LR_time_train OvR-LR_score \\\n", "0 0.280 0.072415 0.571267 0.188 \n", "1 0.552 0.077630 0.585355 0.408 \n", "2 0.708 0.084796 0.693822 0.648 \n", "3 0.892 0.092499 0.966911 0.840 \n", "4 0.960 0.088230 0.840674 0.916 \n", "5 0.936 0.091463 0.678690 0.872 \n", "6 0.972 0.125336 0.708110 0.952 \n", "7 0.992 0.073257 0.776747 0.996 \n", "8 0.996 0.071192 0.781009 0.988 \n", "\n", " OvR-LR_time_test OvR-LR_time_train nf \n", "0 0.001486 0.054709 2 \n", "1 0.002046 0.058775 3 \n", "2 0.001385 0.062964 4 \n", "3 0.001447 0.079282 5 \n", "4 0.001685 0.086147 6 \n", "5 0.001480 0.086931 7 \n", "6 0.002739 0.176811 8 \n", "7 0.001535 0.106343 9 \n", "8 0.001511 0.115516 10 "]}, "execution_count": 15, "metadata": {}, "output_type": "execute_result"}], "source": ["import pandas\n", "\n", "models = {'OvO-LR': OneVsOneClassifier(LogisticRegression()),\n", " 'OvR-LR': OneVsRestClassifier(LogisticRegression())}\n", "\n", "rows = []\n", "for nf in range(2, 11):\n", " X, y = make_blobs(1000, centers=40, cluster_std=2., n_features=nf)\n", " X_train, X_test, y_train, y_test = train_test_split(X, y)\n", " res = evaluate_model(models, X_train, X_test, y_train, y_test)\n", " res['nf'] = nf\n", " rows.append(res)\n", "\n", "df4 = pandas.DataFrame(rows)\n", "df4"]}, {"cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [{"data": {"image/png": "iVBORw0KGgoAAAANSUhEUgAAAecAAAEWCAYAAABcw1/oAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzs3Xd4VMUawOHfRwiEjiShVwHpIQgIFhDpIM0YmtIRBEVsWAC7V1SQq3JRLIB0ASFAKKJUEQQ0ohJ6L5HQOySkzf3jbMISQtiE3ewm+d7n2Se7e+bMzDmb5NuZM2dGjDEopZRSynPkcHcFlFJKKXUjDc5KKaWUh9HgrJRSSnkYDc5KKaWUh9HgrJRSSnkYDc5KKaWUh9HgrDKUiOQQkVARGeBg+u0i0uQ2acqKyGUR8XJKJV1ERB4TkaO2utbJwHJ/FJHeGVBOHxFZn85914rIU06qR1JeIvKkiPzsjHydxZHfaaVyursCKnMSkUNAMSAeuAIsA54zxly+za4fAKuMMd86Uo4xpoYDaY4A+R3Jz80+AYYYYxa5qgAReQeoZIzpkfieMaaNq8rzdMaYmcBMd9fDniO/00ppy1ndifbGmPzAvUB94I3kCcSS9HtmjBlujPk8A+voScoB291dCaWU59PgrO6YMeZf4EegJiR1K34gIhuAq8DdIlJIRCaJSKSI/Csi/7HvhhaRASKyU0QuicgOEbnX9v4hEWlue36fiISJyEUROSEi/7W9X15EjIjktL0uaes6Pysi++y70EXkHRGZKyLTbGVtF5F6tzo2EakqIitsee0WkS5226aIyBcistSW12YRqZhCHrlF5DLgBfwjIvtt71eznavztnp0cDRvEalhV68TIjJCRFoDI4Cutq7zf+w+j8Ru3hwi8oaIHBaRk7bzUCjZeewtIkdE5LSIjEzl3PjazvNFEfkdqJhs+y3PXWpEpKKIrBaRM7Y6zBSRwqmkbyEiu0TkgoiMB8Ru2w1d7bbje0ZE9trO6/u28jbajmOuiOSyS99ORP62fUa/iUiA3bZDIjJMRLbayp4jIj62bX4issS231kR+VVsX1KT/U7nFpHPROSY7fGZiOS2bWsiIhEi8rLts4oUkb6OnEOVBRhj9KGPND+AQ0Bz2/MyWC3C922v1wJHgBpYl068gYXA10A+oCjwO/C0LX1n4F+s1rcAlYByKZSzEehpe54faGh7Xh4wQE7b61+ALwEfIBA4BTSzbXsHiAbaYgXLD4FNtzjGfMBRoK/tOO4FTgM1bNunAGeB+2zbZwKzUzlnBqvLGds52YcVTHMBTYFLQJXb5Q0UACKBl23HWABoYHd8M5KVuxZ4yva8n63cu23nMASYnuw8fgvkAWoD14Bqtzie2cBc23mqafsM1zty7lLIy76OlYAWQG7AH1gHfHaL/fyAi0Cw7Zy+CMTZ5dUnsU52n0EoUBDr9/MasMp2PgoBO4DetrT3AieBBrbfld5Yv4+57X43fwdKAkWAncAg27YPga9sdfIGGgGSwu/0e8AmrL8Jf+A3rv8dNbEdy3u2PNpifdm9y91///pw/cPtFdBH5nzY/sFcBs4Dh7GCYR7btrXAe3Zpi9n+Ceaxe687sMb2/Cfg+VTKSfxHtg54F/BLlqa87Z9uTqwvCvFAAbvtHwJTbM/fAVbabasORN2i7K7Ar8ne+xp42/Z8CjDRbltbYFcq58w+ODcCjgM57LZ/D7xzu7xt5+6vW5TxDqkH51XAM3bbqgCxtnOXeB5L223/HeiWQjletv2q2r03iuvBOdVzl0J+SXVMYVunVI63F3ZfrrC+3EWQenB+0O71n8Brdq/HYvsiAEzAFijttu8GHrb73exht2008JXt+XvAosTPO5Xf6f1AW7ttrYBDtudNgChsXzpt753E9qVUH1n7od3a6k50MsYUNsaUM8Y8Y4yJstt21O55Oaxv/pG2br7zWP+oi9q2l8H6J3U7/YF7gF0i8oeItEshTUngrDHmkt17h4FSdq+P2z2/CvgkdoknUw5okFhnW72fBIqnkpejA9NKAkeNMQlpqGdi3o6er1uVezhZmTmxvkDdrlx7/rb97D9n+3wdOXcpEpGiIjJbrMsfF4EZWC3kWx1PUh2MMSZZnVJywu55VAqvE4+3HPBysmMoYysz0a3O1RisHoqfReSAiLyeSv2Tfx72+Z8xxsTdogyVhelobeUq9sudHcVqOfsl+0djv/2ma7U3ZWjMXqC77dpdEDBPRHyTJTsGFBGRAnYBuixWl2taHQV+Mca0SMe+t3MMKCMiOewCdFlgj4P16n6LbbdbZu4YVtBJVBar6/QEUNqBshOdsu1XBthll5d9HdN77j7EOo4AY8wZEekEjL9F2khbHQBrAKL96zt0FPjAGPNBWne0/e69jBXcawBrROQPY8yqZEkTP4/EgYJlbe+pbE5bzsrljDGRwM/AWBEpaBuUVFFEHrYlmQgME5G6YqkkIuWS5yMiPUTE3xbMztvejk9W1lGs63YfioiPbQBPf9J3O80S4B4R6Ski3rZHfRGplo68ktuMdQvaq7Z8mwDtsa7jOlKv4iLygm1AUQERaWDbdgIoL3Yj5JP5HnhRRCqISH6srug5t/jSdEvGmHis69XviEheEamOdU3Wvo7pPXcFsF0yEZFSwCuppF0K1BCRIFvvx1AcaJ076FtgkIg0sP1e5hORR0WkwO12tA0kq2T7snAR6/c0PoWk3wNviIi/iPgBb2H1FKhsToOzyii9sAY+7QDOAfOAEgDGmB+w7n+ehTUoaiHWAJvkWgPbxRr5/DnWtdDoFNJ1x7p+egxYgHWdc0VaK2xr/bQEutnyOg58jDVQ6Y4YY2KADkAbrIFSXwK9jDG7Ut3xer1aYAXz48Be4BHb5h9sP8+IyJYUdp8MTMe6fn8Qa3Dcc+k8jCFYXazHsa6Rf5esjuk9d+9iDca6gBV8Q26V0BhzGmtA4UfAGaAysCHNR5Jy3mHAAKxW+zmsbuo+Du5eGViJ9SVjI/ClMWZtCun+A4QBW4FwYIvtPZXNJY4eVEoppZSH0JazUkop5WE0OCullFIeRoOzUkop5WE0OCullFIexm33Ofv5+Zny5cu7q3illFIqQ/3555+njTH+jqR1W3AuX748YWFh7ipeKaWUylAicvj2qSzara2UUkp5GA3OSimllIfR4KyUUkp5GI9a+CI2NpaIiAiio1OakVFlFj4+PpQuXRpvb293V0UppTKl2wZnEZkMtANOGmNqprBdsOY5TlwIvI8xJqU5fW8rIiKCAgUKUL58eaxsVWZjjOHMmTNERERQoUIFd1dHKaUyJUe6tadgLThwK22wJnmvDAzEWqA8XaKjo/H19dXAnImJCL6+vtr7oZRSd+C2wdkYsw44m0qSjsA0Y9kEFBaREumtkAbmzE8/Q6WUujPOuOZcCmtR8kQRtvcikycUkYFYrWvKli2bfLNSSqlMKCY+ht2nd7P1xFb2n9tPzhw58cnpk/TIkzPPja+989xyey6vXNe/4BsD8fEQF2c9YmOvP0/pcbvtaU2TKxeMGOGWc+qM4JxSMynFdSiNMd8A3wDUq1fPI9eqjIiI4Nlnn2XHjh0kJCTQrl07xowZQ65cuVLdb+HChbz11lvExMTg7e3N+++/T6dOnVJMmz9/fi5fvnzDe++88w7ffvst/v7+xMTE8Oabb9K9e3eH651Snq42atQoRrjpF1cplfFMQgJH/91B+IGNbP13C+GndxB+eT+7YiOJI8EpZYgBn7gbH3liU3jvNmnSut0nDnLHJQtoRYpk6uAcAZSxe10aa3H1TMcYQ1BQEIMHD2bRokXEx8czcOBARo4cyZgxY2653z///MOwYcNYsWIFFSpU4ODBg7Ro0YK7776bgIAAh8t/8cUXGTZsGHv37qVu3boEBwd79IhnDc5KZXKxsXD6tPU4deqGn+dPR7Dt8gHCYyPY6nWa8DyX2HZXLBd8ru9e9jzUOgntTkCtszmpFedLlRz+GJ/cROfKYT28cxCVS4j2tj1yQrS3EOUN0V4QndNYP70MUV4JRHslEJ3DEJ0rgSifeKJzJBAt8UmPKOK4QBzRiQ8TS5SJtf2MwaTcNnSYfYveP68/W+/wFKeXM4JzKDBERGYDDYALxpiburQzg9WrV+Pj40Pfvn0B8PLy4tNPP6VChQq8++67PPLII0yePJkaNWoA0KRJE8aOHctnn33GiBEjkkYnV6hQgeHDhzNmzBimT5+e5npUrlyZvHnzcu7cOYoWLXrDthMnTjBo0CAOHDgAwIQJE3jggQdumde0adP45JNPEBECAgKYPn06hw8fpl+/fpw6dQp/f3++++47ypYtS58+fShYsCBhYWEcP36c0aNHExwcTGRkJF27duXixYvExcUxYcIEli5dSlRUFIGBgdSoUYOZM2em+TiVUk5kDFy6lGKgTfHnqVNw4QIxXrDbF8KLQXhR2FrMen7UD/Czsi4Yn5OAOF+e8CpJrdwVqFWkGjWLB1C4RAXw8wN/f8iXD+zGm+QGCmX4KTDEJcQRHRdNVFwU0XHRSY+o2Btfp5QmebqcOdx3t7Ejt1J9DzQB/EQkAngb8AYwxnwFLMO6jWof1q1UfZ1SsxdegL//dkpWSQID4bPPbrl5+/bt1K1b94b3ChYsSNmyZdm3bx/dunVj7ty5vPvuu0RGRnLs2DHq1q3L9u3bGTZs2A371atXjy+++CJd1dyyZQuVK1e+KTADDB06lIcffpgFCxYQHx+falf29u3b+eCDD9iwYQN+fn6cPWuN6xsyZAi9evWid+/eTJ48maFDh7Jw4UIAIiMjWb9+Pbt27aJDhw4EBwcza9YsWrVqxciRI4mPj+fq1as0atSI8ePH87ezPyOllCUuDs6ccTzQnj4NMTEp5+XtjfH342jZwoSXzkV4nbyEFyrG1ty52c0ZYokHIKfkpOpdlWhUIpBaxWtTq2gtahWrRZmCZTLFQE8RwdvLG28vbwrkLuDu6tyR2wZnY0yqFz6NMQZ41mk1ciNjTIq/gInvd+nShRYtWvDuu+8yd+5cOnfufMv9bpVXaj799FO+/fZbDhw4wPLly1NMs3r1aqZNmwZYLftChW793XT16tUEBwfj52d9/S1SpAgAGzduJCQkBICePXvy6quvJu3TqVMncuTIQfXq1Tlx4gQA9evXp1+/fsTGxtKpUycCAwPTdFxKqWSio2H/fti713rs2wcnTtwYcM+du/X+hQpZrVU/PyhbFurWvd6C9fPjwl15Cc99jnBzkvDow4Sf2034yXAuXLveqVmmYBlqFatHu6IB1CpWi1pFa1HFrwq5vFIfX6MyhkfNEHaDVFq4rlKjRg3mz59/w3sXL17k6NGjVKxYkbx58+Lr68vWrVuZM2cOX3/9ddJ+YWFhN1xf3rJlC9WrV+fo0aO0b98egEGDBjFo0KBblp94zTkkJIRevXqxf/9+fHx8bpn+dhz9gmCfJnfu3DfsD9C4cWPWrVvH0qVL6dmzJ6+88gq9evVKd72UyhZiYuDAgesB2P5x9KjVDZ3I1xdKlrSCa2Cg9TMx+Cb/6etrjSLm+ijp8JPhhJ8IJ/zkWsJPhnPk8JGkrAvmLkitorXoXrM7AcWsQFyzaE0K+xTO6DOi0sBzg7MbNGvWjNdff51p06bRq1cv4uPjefnll+nTpw958+YFoFu3bowePZoLFy5Qq1YtAIYNG0bnzp1p2rQp5cuX59ChQ4waNYp58+ZRpkyZNHf9BgUFMXXqVKZOncrTTz99Ux0nTJjACy+8QHx8PFeuXKFgwYK3PJ7HHnuMF198EV9fX86ePUuRIkV44IEHmD17Nj179mTmzJk89NBDqdbn8OHDlCpVigEDBnDlyhW2bNlCr1698Pb2JjY21qMHralkoqLgyBEoWhQKF77hGqFKh9hYOHQo5QB8+DAk2I1gvusuqFwZGjWyfiY+KlWytqXCGEPExQi2nthC+P7wpGC86/QuYhNiAciZIydV/aryYJkHGVxvcKbrklY30uBsR0RYsGABzzzzDO+//z4JCQm0bduWUaNGJaUJDg7m+eef580330x6LzAwkI8//pj27dsnBavRo0ffsvv36tWrlC5dOun1Sy+9dFOat956iyeeeIIBAwaQI8f1uWI+//xzBg4cyKRJk/Dy8mLChAncf//9KZZTo0YNRo4cycMPP4yXlxd16tRhypQpjBs3jn79+jFmzJikAWGpWbt2LWPGjMHb25v8+fMndasPHDiQgIAA7r33Xh0Q5qmMgfBwWLECfv4Z1q2zulQBcueG4sWhRInrP1N6XqwY5MzG/yri461Am1IAPnTIujacqGBBK+A2aAA9etwYhH19HSruQvQFtp3cxtYTW60gbAvEF65dSEpjdUnXom3ltlZrWLuksxwxxj23G9erV8+EhYXd8N7OnTupVq2aW+qjnEs/Szc6fhxWrrSC8YoV1muA6tWhZUur2/TsWYiMtB7Hj19/fjaFyQBFrC7V1AJ44vN8+TL2WJ0lIcHqak4pAB84YLWQE+XLd2PQtX/4+6epN8IYw1/H/yJ0dyhhx8KsLukLN3dJJ7aCA4oFaJd0JiYifxpj6jmSNht/HVYqi4iKgvXrrwfjf/6x3vfzg+bNrYDcogXY9dbc0rVr1sCk5EHb/vn27dZr+xZjovz5bx/Aixe3WpE5MnjF2oQEOHYs5QC8f7917Iny5LG6m2vUgE6dbgzAxYvf0eWABJPAxqMbCdkZQsiuEA6dP0QOyUF1/+o8WOZBBtUdlBSItUs6+9LgrFRmYwxs22YFY/uuam9veOgh+PDD6y3ktAbA3Lmt0b+3m143IcG6zScxaKcUyP/6C3780br3NrmcOa0gd7vWePHiSYOfHD43x4+nHID37bO+yNgfa8WKVsBt2/bGAFyypFO/PMTGx7L20FpCdoawcPdCjl8+Ti6vXLSs2JK3Gr9F+yrt8cvr57TyVOanwVmpzODEievXjZN3VT/9tBWMH34447qVc+S4PqLYNjDylq5cSb0lfuQIbN5s3T6U0mW2IkVuHcCvXbs5ANvf++/tDXffbQXc5s1vDMBlyri09R4VG8WKAysI2RlC6O5QzkWfI593PtpWbktQtSDaVm5LwdwpD+ZUSoOzUp4oOvp6V/XPP1/vqvb1tbqo09JV7W758lldxJUqpZ4uLg5Onkw9kK9fb/2074L28oIKFayA27jxjQG4bNkMHcx26dollu1dxvyd81m2dxlXYq9Q2KcwHap0IKhqEC0rtiSPd54Mq4/KvDQ4K+UJHOmqbtEC6tTJ+Gu1GSVnTqs7uWTJ1NMZA+fPW0Ha2xvKl7d+usmZq2cI3R1KyK4Qft7/MzHxMRTLV4yeAT0JqhZEk/JN8PbS2w1V2mhwVspdTpy4cVR1pG32pmrVrndVN25sDbJS14lY9wXf5t5gVzp26RgLdy1k/s75/HLoF+JNPOUKlePZ+s8SVC2I+0vfj1cOL7fVT2V+WfQrePpFRETQsWNHKleuTMWKFXn++eeJudV8tTZTpkzB39+fwMBAqlatyqeffnrLtOXLl+f06dPp3t/RPF3ts88+4+rVqxlaZqYXHW0F41dftVrAxYtb98IuXWpdL540ybr+umOHNUNe27ZOD8yXrl0i/EQ40XHRTs03Ozhw7gCf/PYJD0x6gFL/LcWzy57l34v/8tqDr/HnwD85+PxB/tvqvzxU9iENzOqOacvZTnqXjATo2rUr48eP58yZM1SpUoXg4GDKlCmT6j7O3D+jffbZZ/To0SNp5jSVAmOs244Su6p/+eV6V/WDD8KoUVbr2MVd1REXI1i8ezGhe0JZfXA1MfExeIkXlX0r33QPbfnC5ckh+p0drP8HO07tSLrl6e/j1kx/dYrX4T+P/IegakFU89d7+ZVraHC2k94lI+35+vpSqVIlIiMj0xVcU9v/8uXLPPfcc4SFhSEivP322zz++OO3zGv58uWMGDGC+Ph4/Pz8WLVqFWfPnqVfv34cOHCAvHnz8s033xAQEMA777zDkSNHOHDgAEeOHOGFF15g6NChXLlyhS5duhAREUF8fDxvvvkmJ06c4NixYzzyyCP4+fmxZs2aNB9nlpXYVZ04sjp5V3WLFlYr2YVd1cYY/j7+N6G7QwndE8qWyC0AVLyrIkPqD6FOiTrsObOH8JPh/Bn5Jz/s+CFp33ze+ahZtOYNAbtW0Vr45nVsdqvMzhhD2LGwpIC858weBOGBMg8wtuVYHqv6GBXuquDuaqpswGOD8wvLX0j6puosgcUD+ay185eMDA8PT0p/5MgRoqOjb1gEIy1S2//999+nUKFCSeWdS2XVmlOnTjFgwADWrVtHhQoVkpaLfPvtt6lTpw4LFy5k9erV9OrVK2nu7127drFmzRouXbpElSpVGDx4MMuXL6dkyZIsXboUgAsXLlCoUCH++9//smbNmqQVr7Kt6GjYsOF66zhxHnVf3xsnAHFxL8i1uGusPbSW0N2hLN6zmKMXjyII95e5n4+afUSHKh2o6lc1xQktLsdcZvvJ7YSfDE+aMnLBrgVM/GtiUpoS+UskrVxUq6gVtKv5V8MnZ/oXZvEU8QnxbDi6wQrIO0M4evEoXuLFIxUe4cWGL9KxSkdKFCjh7mqqbMZjg7M7pHfJSIA5c+awZs0adu/ezbfffpvm1aQc2X/lypXMnj076fVdqQyI2bRpE40bN6ZCBetbfuJykevXr09aeatp06acOXOGCxesOXsfffRRcufOTe7cuSlatCgnTpygVq1aDBs2jNdee4127drRqFGjNB1XlmPfVb1ihdVVHRWV4V3VAGejzrJs7zIW7V7E8n3LuRxzmbzeeWlZsSXvNnmXR+95lKL5bl4TPLn8ufLToHQDGpRukPSeMYbjl4/fELDDT4Qz/vfxXIu3bmNK3jWeuOJRZugaj4mPYfXB1dakILsWcurqKXJ75aZVpVa8/8j7tK/SniJ5iri7miob89jgnFoL11XSu2QkXL9mvHHjRh599FHatGmDv79/Uku8Q4cOvPfee7csO6X9ixcvfkOatKwRndoXjeQS09kvF+nl5UVcXBz33HMPf/75J8uWLWP48OG0bNmSt956y6E6ZBnx8TB/PixbdmNXddWqMGDA9QlAMmBU9b6z+6zu6t2hrD+ynngTT/H8xXmi5hN0qNKBphWaOuU+WhGhRIESlChQgpYVWya9H5cQx76z+6yAfSL8tl3jiQHbE7rGr8Ze5ad9PxGyK4TFuxdz4doF8ufKz6OVHyWoWhBtKrWhQO4Cbq2jUok8Nji7Q3qXjLR3//3307NnTz7//HM+/PDDNC8XmXx/ey1btmT8+PF8Zlvr+ty5c7dsPd9///08++yzHDx4MKlbu0iRIjRu3JiZM2fy5ptvsnbtWvz8/G655CTAsWPHKFKkCD169CB//vxMmTIFgAIFCnDp0qWs360dGWmNqF692pqpyn4CkAwYsBefEM/mfzcnBeSdp3cCEFAsgOEPDadDlQ7ULVk3w1qqicsSVvWrSpcaXZLev3TtEttPbU8K2Kl1jQcUvR6wXd01fiH6Akv2LCFkVwg/7v2RqLgoiuQpQlC1IIKqBdH87uZZomteZT0anO2kd8nI5F577TXuvfdeRowYQYECN38TDwgISFoGskuXLjddX77V/m+88QbPPvssNWvWxMvLi7fffpugoKAU6+Dv788333xDUFAQCQkJFC1alBUrVvDOO+/Qt29fAgICyJs3L1OnTk31nISHh/PKK6+QI0cOvL29mTBhAmAtF9mmTRtKlCiRdQeE/fQT9OxpTT85aRL07m3NRuViV2KusOLACkJ3h7JkzxJOXT1Fzhw5ebjcwwyqN4j297T3uEFJBXIXoGHphjQs3TDpPWMMkZcjbwjY4SfC+d/v/0uxazxx8Nmddo2funKKRbsXEbIzhJUHVhKbEEuJ/CXoG9iXoGpBNC7XWCcFUR5Pl4xULpGpP8vYWHjjDRg9GmrWhLlzrdHWLhR5KZIle5YQuieUlQdWEh0XTaHchWhbuS0dqnSgdaXWWWaZwLiEOPae2ZsUrBOvax88fzApTf5c+anhX8PhrvGjF46yYNcCQnaG8OuRX0kwCVQoXIGgakE8Xu1xGpRu4PHXwVXWp0tGKpVehw5B9+6waZN169Onn1rLBzqZMYZtJ7cl3e70+7+/A1C+cHmervs0Hap0oFHZRlmyhZczR06q+Vejmn+1VLvGt57YSsiukFS7xiMvRRKyKyTp/FX3r87IRiMJqhZE7WK1dblFlWlpcFYqUUgI9O9vLYc4Zw506XL7fdIgNj6WdYfXJQXkQ+cPAXBfqfv4zyP/oWPVjtTwr5FtA4ojXeOJI8fH/T6OmHhr5r56JesxqukoHqv2GFX9qrqr+ko5lQZnpaKjYdgw+OILqF8fZs+2lhl0gvPR51m+bzmLdi/ix70/cuHaBXxy+tD87uaMeGgE7e5pp/fQpkJEKFmgJCULlKRVpVZJ7yd2jefPlZ8yhTx3Jj2l0kuDs8re9uyxWsj//AMvv2zdp5wr1x1lefDcQRbvWUzo7lB+OfwLcQlx+Of15/Fqj9OhSgea392cfLkyaN3lLCqxa1yprEqDs8q+pk+HwYPBxweWLIFHH01XNgkmgbBjYUm3O4WftGZwq+5fnWH3D6NDlQ7cV+o+XQxBKeUwDc4q+7l8GYYMgalTrSUZZ86E0qXTlEVUbBSrDq5Kmi7z+OXj5JAcNCrbiLEtx9L+nvZU9q3sogNQSmV1Gpwz0KhRoxgxYkS691+4cCH33HMP1atXd2KtspmtW61u7D174O234c03Hb53+eSVkyzds5TQPaH8vP9nrsZepUCuArSu1JoOVTrQplIbt8+CpZTKGjQ4ZyBnBOd27dppcE4PY+Crr+DFF62ZvlatgkcecWjXf47/w3M/Psf6I+sxGMoULEPfwL50qNKBh8s9TO6cuW+fiVJKpYHelZ+CadOmERAQQO3atenZsyeHDx+mWbNmBAQE0KxZM44cOQJAnz59GDp0KA888AB333038+bNAyAyMpLGjRsTGBhIzZo1+fXXX3n99deJiooiMDCQJ598EoBOnTpRt25datSowTfffJNUfv78+RkkJy/FAAAgAElEQVQ5ciS1a9emYcOGnDhxgt9++43Q0FBeeeUVAgMD2b9/P/v376d169bUrVuXRo0asWvXrow/WZnB+fPQuTM884wVkP/+2+HAPOXvKTSc1JC9Z/fy9sNv89fTf3H4hcOMbzuelhVbamBWSrmEx84Q9u7i7ew4dtGpZVYvWZC329dINc327dsJCgpiw4YN+Pn5cfbsWXr37k1wcDC9e/dm8uTJhIaGsnDhQvr06cOVK1eYM2cOu3btokOHDuzbt4+xY8cSHR3NyJEjiY+P5+rVqxQoUID8+fNz+fLlpLIS57uOioqifv36/PLLL/j6+iIihIaG0r59e1599VUKFizIG2+8QZ8+fWjXrh3BwcGANRf4V199ReXKldm8eTPDhw9n9erVTj1n6eUxM4Rt3gzdukFEBHz4Ibz0kkOrRUXHRTP0x6F8u+VbHin/CN8//j3F8hfLgAorpbIqnSHsDqxevZrg4OCkBR2KFCnCxo0bCQkJAaBnz568+uqrSek7depEjhw5qF69OidOnACgfv369OvXj9jYWDp16kRgYGCKZY0bN44FCxYAcPToUfbu3Yuvry+5cuWiXbt2ANStW5cVK1bctO/ly5f57bffbli28tq1a044A1lEQgKMHQsjRliDvdavhwYNbr8f1q1QwT8EsyVyC68/+DrvN32fnDn0T0UplXE89j/O7Vq4ruLIsoz22+2XWUzshWjcuDHr1q1j6dKl9OzZk1deeYVevXrdkMfatWtZuXIlGzduJG/evDRp0oTo6GgAvL29k8pIXLoxuYSEBAoXLpzmVa+yhVOnrEUqfvwRHn8cJk6Ewo7NS71kzxJ6LuiJMYZF3RbRoUoHF1dWKaVupteck2nW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\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["fix, ax = plt.subplots(1, 1, figsize=(8, 4))\n", "for c1, col in zip('rg', [_ for _ in df4.columns if '_score' in _]):\n", " df4.plot(x=\"nf\", y=col, label=col.replace(\"_score\", \" cl const\"), ax=ax, color=c1)\n", "x = list(range(2, 11))\n", "ax.plot(x, [1/40. for _ in x], label=\"constante\")\n", "ax.set_title('Pr\u00e9cision en fonction de la dimension')\n", "ax.legend();"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## retour sur le nombre de classes"]}, {"cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
OvO-LR_scoreOvO-LR_time_testOvO-LR_time_trainOvR-LR_scoreOvR-LR_time_testOvR-LR_time_traincenters
00.5700000.0051700.0380760.5100000.0005210.01023210
10.3600000.0540920.5133620.2885710.0013380.04924035
20.2366670.1923281.3565380.1983330.0023570.12987360
30.1682350.5594403.1230640.1352940.0039810.29663485
40.1563641.0208114.4996950.1100000.0063380.467511110
50.1007411.4697436.9708330.0874070.0055460.527650135
\n", "
"], "text/plain": [" OvO-LR_score OvO-LR_time_test OvO-LR_time_train OvR-LR_score \\\n", "0 0.570000 0.005170 0.038076 0.510000 \n", "1 0.360000 0.054092 0.513362 0.288571 \n", "2 0.236667 0.192328 1.356538 0.198333 \n", "3 0.168235 0.559440 3.123064 0.135294 \n", "4 0.156364 1.020811 4.499695 0.110000 \n", "5 0.100741 1.469743 6.970833 0.087407 \n", "\n", " OvR-LR_time_test OvR-LR_time_train centers \n", "0 0.000521 0.010232 10 \n", "1 0.001338 0.049240 35 \n", "2 0.002357 0.129873 60 \n", "3 0.003981 0.296634 85 \n", "4 0.006338 0.467511 110 \n", "5 0.005546 0.527650 135 "]}, "execution_count": 17, "metadata": {}, "output_type": "execute_result"}], "source": ["import pandas\n", "\n", "models = {'OvO-LR': OneVsOneClassifier(LogisticRegression()),\n", " 'OvR-LR': OneVsRestClassifier(LogisticRegression())}\n", "\n", "rows = []\n", "for centers in range(10, 151, 25):\n", " X, y = make_blobs(40 * centers, centers=centers, cluster_std=2.)\n", " X_train, X_test, y_train, y_test = train_test_split(X, y)\n", " res = evaluate_model(models, X_train, X_test, y_train, y_test)\n", " res['centers'] = centers\n", " rows.append(res)\n", "\n", "df5 = pandas.DataFrame(rows)\n", "df5"]}, {"cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [{"data": {"image/png": "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hg1MnToVgCFDhpCUlMSpU6cAGD16NAEBATRu3JgmTZpw9OhRunfvzqpVq7jvvvtYv3499evXL9dnOhs1qyadp3t32LQJRoyAYcNg4UKrdq2UUtVJKTXeytK1a1c++eSTQttOnz7NgQMHaNeuHUFBQTRq1Ihff/2VBQsW8MYbb+Sft3nzZsLDw/PP27JlC126dOHAgQOMdfwPvummm7jppptKzP+OO+7g7rvv5tNPP2XatGns3r2bwMBAl8eec845XHvttbz++usu95d2w1FU3nEBAQH523x8fMjJyaFDhw78/PPPLFu2jAceeIDhw4fz8MMPl/gZ3Knm1aTztG5t1aK7d4crroC33/Z0iZRSyusNHTqUtLQ03n33XQByc3O56667iIqKIigoCIBJkybxzDPPcOrUKbp37w7A3XffzZNPPsnevXsB2Lt3L0888QR33XUXLVu2JDY2ltjY2FIDtLMJEybQu3dv3nnnnVKPu/POO3njjTfIyckptu+CCy5g7dq1/PnnnwD5zd0DBw7kgw8+AODbb7+lcePG1KtXr8Q8EhISCAoK4rrrruPuu+9my5YtAISEhJCcnFymz1NRNTdIA4SGwurVMHSo1bHsqaesZnCllFIuiQifffYZH3/8Me3bt6dDhw4EBgbyxBNP5B9z1VVXMX/+fK655pr8bRERETz99NOMHTuWTp06MXbsWJ555hkiIiJc5pOWlkZYWFj+1wsvvFDsmIcffpgXXngBu91eYnkbN27MFVdcQWZmZrF9oaGhvPnmm0yYMIEePXowceJEwOogllfrv//++894I/Dbb7/Rt29fIiIiePzxx/nnP/8JwI033sioUaMqteOYuKr2V4XevXubzZs3V01mWVkQFQUffWR1xHj+ebDV7PsTpVT1tH37djp37uzpYqiz5OrnKCI/G2N6lyedmvlMuih/f3j/fatm/dJLcOwYzJ1rbVdKKaW8VO0I0mDVnF96CZo1gwcfhKQkWLQIPDBLjVJKKVUWtavNVwQeeEBnJ1NKKVUt1K4gnUdnJ1NKKVUN1M4gDQWzkx09as1O9vvvni6RUkopVUjtDdKgs5MppZTyarU7SEPB7GRNmlizk33xhadLpJRSHlWRpSrnzZtHaGgoERERdOrUiRdffLHEY1u3bs3x48crdP68efOw2WyFVtfq1q1b/iQqVWXevHkkJCRU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\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["fix, ax = plt.subplots(1, 1, figsize=(8, 4))\n", "for c1, col in zip('rgcy', [_ for _ in df5.columns if '_score' in _]):\n", " df5.plot(x=\"centers\", y=col, label=col.replace(\"_score\", \" N const\"), ax=ax, color=c1)\n", "x = df5.centers\n", "ax.plot(x, [1./_ for _ in x], label=\"constante\")\n", "ax.legend()\n", "ax.set_title('Pr\u00e9cision en fonction du nombre de classes');"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## un dernier jeu s\u00fbr\n", "\n", "On construit un dernier jeu pour lequel le taux de classification devrait \u00eatre 100%."]}, {"cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [{"data": {"text/plain": ["((400, 2), (400,))"]}, "execution_count": 19, "metadata": {}, "output_type": "execute_result"}], "source": ["import numpy\n", "\n", "def jeu_x_y(ncl, n):\n", " uni = numpy.random.random(n*2).reshape((n, 2))\n", " resx = []\n", " resy = []\n", " for i in range(ncl):\n", " resx.append(uni + i * 2)\n", " resy.append(numpy.ones(n) * i)\n", " X = numpy.vstack(resx)\n", " y = numpy.hstack(resy)\n", " return X, y\n", "\n", "X, y = jeu_x_y(4, 100)\n", "X.shape, y.shape"]}, {"cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [{"data": {"text/plain": ["Text(0.5,1,'Nuage de point avec 5 classes')"]}, "execution_count": 20, "metadata": {}, "output_type": "execute_result"}, {"data": {"image/png": "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\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["fig, ax = plt.subplots(1, 1, figsize=(3,3))\n", "for i, c in zip(range(0,5), \"rgbyc\"):\n", " ax.plot(X[y==i, 0], X[y==i, 1], c + '.', label=str(i))\n", "ax.set_title(\"Nuage de point avec 5 classes\")"]}, {"cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
DT_scoreDT_time_testDT_time_trainOvO-LR_scoreOvO-LR_time_testOvO-LR_time_trainOvR-LR_scoreOvR-LR_time_testOvR-LR_time_traincenters
01.00.0005990.0005721.0000000.0006950.0018781.0000000.0007760.0023922
11.00.0002130.0005220.8750000.0007730.0030080.6250000.0004340.0046273
21.00.0002990.0003590.3000000.0008530.0044490.3000000.0004070.0035474
31.00.0001760.0002510.5384620.0018520.0153440.5384620.0003350.0072005
41.00.0001640.0002520.5333330.0013400.0117360.5333330.0004180.0046426
51.00.0001990.0002740.5000000.0018280.0144970.5000000.0003730.0058867
61.00.0001670.0002590.3500000.0026990.0187430.3000000.0005030.0064138
71.00.0001680.0002740.1739130.0027290.0242210.2173910.0004430.0071089
81.00.0001840.0003210.3200000.0036070.0288230.3200000.0005000.00779710
91.00.0001730.0003030.2500000.0043060.0365630.1785710.0006360.00854611
101.00.0001710.0002920.2666670.0050140.0422340.2333330.0005140.00943612
111.00.0001710.0003050.3333330.0059010.1334610.3030300.0005410.01060413
121.00.0001770.0003740.2571430.0064790.0630740.2000000.0005730.01175814
131.00.0001800.0003500.2631580.0075580.0657640.2894740.0006060.01197115
141.00.0002150.0003880.2000000.0091210.0957040.1500000.0007040.01361416
151.00.0001790.0003990.2093020.0095300.0918940.1860470.0006980.01397817
161.00.0001790.0003690.1555560.0108270.0968010.1111110.0006840.01453018
171.00.0002050.0004920.2083330.0191190.1254010.2500000.0017000.02025619
181.00.0001850.0004760.0800000.0141040.1266770.0800000.0008040.01751320
\n", "
"], "text/plain": [" DT_score DT_time_test DT_time_train OvO-LR_score OvO-LR_time_test \\\n", "0 1.0 0.000599 0.000572 1.000000 0.000695 \n", "1 1.0 0.000213 0.000522 0.875000 0.000773 \n", "2 1.0 0.000299 0.000359 0.300000 0.000853 \n", "3 1.0 0.000176 0.000251 0.538462 0.001852 \n", "4 1.0 0.000164 0.000252 0.533333 0.001340 \n", "5 1.0 0.000199 0.000274 0.500000 0.001828 \n", "6 1.0 0.000167 0.000259 0.350000 0.002699 \n", "7 1.0 0.000168 0.000274 0.173913 0.002729 \n", "8 1.0 0.000184 0.000321 0.320000 0.003607 \n", "9 1.0 0.000173 0.000303 0.250000 0.004306 \n", "10 1.0 0.000171 0.000292 0.266667 0.005014 \n", "11 1.0 0.000171 0.000305 0.333333 0.005901 \n", "12 1.0 0.000177 0.000374 0.257143 0.006479 \n", "13 1.0 0.000180 0.000350 0.263158 0.007558 \n", "14 1.0 0.000215 0.000388 0.200000 0.009121 \n", "15 1.0 0.000179 0.000399 0.209302 0.009530 \n", "16 1.0 0.000179 0.000369 0.155556 0.010827 \n", "17 1.0 0.000205 0.000492 0.208333 0.019119 \n", "18 1.0 0.000185 0.000476 0.080000 0.014104 \n", "\n", " OvO-LR_time_train OvR-LR_score OvR-LR_time_test OvR-LR_time_train \\\n", "0 0.001878 1.000000 0.000776 0.002392 \n", "1 0.003008 0.625000 0.000434 0.004627 \n", "2 0.004449 0.300000 0.000407 0.003547 \n", "3 0.015344 0.538462 0.000335 0.007200 \n", "4 0.011736 0.533333 0.000418 0.004642 \n", "5 0.014497 0.500000 0.000373 0.005886 \n", "6 0.018743 0.300000 0.000503 0.006413 \n", "7 0.024221 0.217391 0.000443 0.007108 \n", "8 0.028823 0.320000 0.000500 0.007797 \n", "9 0.036563 0.178571 0.000636 0.008546 \n", "10 0.042234 0.233333 0.000514 0.009436 \n", "11 0.133461 0.303030 0.000541 0.010604 \n", "12 0.063074 0.200000 0.000573 0.011758 \n", "13 0.065764 0.289474 0.000606 0.011971 \n", "14 0.095704 0.150000 0.000704 0.013614 \n", "15 0.091894 0.186047 0.000698 0.013978 \n", "16 0.096801 0.111111 0.000684 0.014530 \n", "17 0.125401 0.250000 0.001700 0.020256 \n", "18 0.126677 0.080000 0.000804 0.017513 \n", "\n", " centers \n", "0 2 \n", "1 3 \n", "2 4 \n", "3 5 \n", "4 6 \n", "5 7 \n", "6 8 \n", "7 9 \n", "8 10 \n", "9 11 \n", "10 12 \n", "11 13 \n", "12 14 \n", "13 15 \n", "14 16 \n", "15 17 \n", "16 18 \n", "17 19 \n", "18 20 "]}, "execution_count": 21, "metadata": {}, "output_type": "execute_result"}], "source": ["from sklearn.tree import DecisionTreeClassifier\n", "\n", "models = {'OvO-LR': OneVsOneClassifier(LogisticRegression()),\n", " 'OvR-LR': OneVsRestClassifier(LogisticRegression()),\n", " 'DT': DecisionTreeClassifier()}\n", "\n", "rows = []\n", "for centers in range(2, 21):\n", " X, y = jeu_x_y(centers, 10)\n", " X_train, X_test, y_train, y_test = train_test_split(X, y)\n", " res = evaluate_model(models, X_train, X_test, y_train, y_test)\n", " res['centers'] = centers\n", " rows.append(res)\n", "\n", "df5 = pandas.DataFrame(rows)\n", "df5"]}, {"cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [{"data": {"image/png": "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\n", "text/plain": [""]}, "metadata": {}, "output_type": "display_data"}], "source": ["fix, ax = plt.subplots(1, 1, figsize=(8, 4))\n", "for c1, col in zip('rgycbp', [_ for _ in df5.columns if '_score' in _]):\n", " df5.plot(x=\"centers\", y=col, label=col.replace(\"_score\", \" N const\"), ax=ax, color=c1)\n", "x = df5.centers\n", "ax.plot(x, [1./_ for _ in x], label=\"constante\")\n", "ax.legend()\n", "ax.set_title('Pr\u00e9cision en fonction du nombre de classes\\njeu simple');"]}, {"cell_type": "markdown", "metadata": {}, "source": ["La r\u00e9gression logistique n'est pas le meilleur mod\u00e8le lorsque le nombre de classes est \u00e9lev\u00e9 et la dimension de l'espace de variables faible."]}, {"cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": []}], "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.4"}}, "nbformat": 4, "nbformat_minor": 2}