786 lines
91 KiB
Plaintext
786 lines
91 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {
|
|
"toc": true
|
|
},
|
|
"source": [
|
|
"# WS 09 Tune AdaBoostRegressor"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"* es wurde festgestellt, dass z.B. AdaBoostRegressor unter Standard-Parametrisierung ein unbrauchbares Ergebnis liefert\n",
|
|
"* untersuchen Sie das Potential von Parameter-Tuning für diesen Regressor\n",
|
|
"* konzentrieren Sie sich auf folgende Parameter\n",
|
|
" * learning_rate, Parameter von AdaBoostRegressor\n",
|
|
" * max_depth, interner Parameter des Basis-Estimators, hier DecisionTreeRegressor\n",
|
|
"* falls Zeit übrig, untersuchen Sie noch andere Regressoren Ihrer Wahl dahingehend"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"## prepare env, read and prepare data\n",
|
|
"import pandas as pd\n",
|
|
"import numpy as np\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"import seaborn as sns; sns.set()\n",
|
|
"\n",
|
|
"#codepath = '../2_code' ## for import of user defined module\n",
|
|
"#datapath = '../3_data'\n",
|
|
"codepath = '.././2_code' ## for import of user defined module\n",
|
|
"datapath = '../../3_data'\n",
|
|
"\n",
|
|
"from sys import path; path.insert(1, codepath)\n",
|
|
"from os import chdir; chdir(datapath)\n",
|
|
"\n",
|
|
"from bfh_cas_pml import prep_data\n",
|
|
"X_train, X_test, y_train, y_test = prep_data('melb_data_prep.csv', target='Price', seed=1234)\n",
|
|
"\n",
|
|
"from bfh_cas_pml import test_regression_model"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {
|
|
"ExecuteTime": {
|
|
"end_time": "2020-04-08T10:06:45.098899Z",
|
|
"start_time": "2020-04-08T10:06:44.257283Z"
|
|
}
|
|
},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"R2 = -0.3023\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## baseline\n",
|
|
"from sklearn.ensemble import AdaBoostRegressor\n",
|
|
"this_model = test_regression_model(\n",
|
|
" AdaBoostRegressor(random_state=1234), \n",
|
|
" X_train, y_train, X_test, y_test,\n",
|
|
" show_plot=False)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"0.05 0.5221143978043213\n",
|
|
"0.060000000000000005 0.5240912532917807\n",
|
|
"0.07 0.5255798946120415\n",
|
|
"0.08000000000000002 0.5204059905040977\n",
|
|
"0.09000000000000001 0.522828809581406\n",
|
|
"0.1 0.5141772439961587\n",
|
|
"0.11000000000000001 0.5146383601832738\n",
|
|
"0.12000000000000001 0.5140298684772102\n",
|
|
"0.13 0.5113124946735497\n",
|
|
"0.14 0.5030628610086694\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"C:\\Users\\werne\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
|
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
|
"C:\\Users\\werne\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
|
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAGgCAYAAABWo0bIAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAABOX0lEQVR4nO3deXhU5d0+8PvMTCaZLJN9I2EJIQsBkgAJASExiGAFq4haAamgAq19X2h961J/VavSFnertVJbRaSVpVSkUFxQFAEJIQlLWLKxBBKyk2XIMjOZmfP7I2QkJkgGZnJmztyf68qFnpxz5jv5knDnnOc8jyCKoggiIiIimVBIXQARERGRPTHcEBERkaww3BAREZGsMNwQERGRrDDcEBERkaww3BAREZGsMNwQERGRrDDcEBERkayopC5ACqIowmLh3IU/RKEQ+DVyIuyHc2E/nA974lwc0Q+FQoAgCP3a1y3DjcUiorGxTeoynJZKpUBgoA90unaYTBapy3F77IdzYT+cD3viXBzVj6AgHyiV/Qs3vC1FREREssJwQ0RERLLCcENERESywnBDREREssJwQ0RERLLCcENERESywnBDREREssJwQ0RERLLCcENERESywnBDREREssJwQ0RERLLCcENERESywnBDREREssJwQ0RERLKikroAInvrNJmRc7wWX+ZXok3ficfnjUV4kLfUZRER0QBhuCHZaGkz4uuDlfj60HlcbO+0bl/zaTEemz8WCkGQsDoiIhooDDfk8irrW7EjrwL7j9fCZLYAAIK1nshMGYRP9p9FSUUzdh+uQvbYKIkrJSKigcBwQy7JIoo4droRX+Sdw/HyJuv24YO0mJE+GOMTQqFUKKBRq7B+Zxn+9fVJJMcGI0jrJWHVREQ0EBhuyKUYO83IOV6DHXkVqL7QDgAQBGB8QhhmpA/GiCj/HvtPGx+NA0W1OFWlw9rPS/DLu5Mh8PYUEZGs2RxuLBYL3nrrLWzatAkXL15Eeno6nnnmGQwePLjP/bdu3YrHHnus1/adO3ciOjoaFosFq1evxqZNm1BbW4uoqCgsWrQI99xzj3XfVatW4U9/+lOvc5SUlNhaPrmollYDdh48j12HzqO1o2s8jZdaiayUQbh5fDRCAjR9HqdQCFg0cySee/8ACk9dQO6JWkwcFTGQpRMR0QCzOdy8/fbbWLduHV544QVERETg5ZdfxuLFi7Ft2zao1epe+5eUlGDChAl47bXXemwPCgoCALzzzjtYvXo1nnvuOYwePRo5OTl49tln4eHhgdmzZ1vPcccdd/QZkkjeztVexBd5FcgtqoXJLAIAQvy9cHPaYGQmR0LjefW/wlEhPrjthmHYsucM1n1ZhqSYIGi9e/9dJSIiebAp3BiNRqxevRqPPvoosrOzAQCvv/46MjMzsWPHDtx22229jiktLUVCQgJCQ0P7POf69evx4IMPYubMmQCAIUOG4MiRI9i0aZM13JSWluInP/nJFc9B8mIRRRw9dQE78ipQdPa78TQjovwxI30wxsaHQKmwbYqmmROHIr+4HpX1rVj/ZRl+dvsoe5dNREROwqZwU1xcjLa2NkyaNMm6TavVIikpCXl5eX2Gm5KSEtx00019ns9iseDFF19ETExMj+0KhQI6nQ5AV6AqLy/H8OHDbSmVXJCh04x9x2rwRV4Fahq7xtMoBAFpiaGYnj4YsYP8r3KGK1MpFXhgZiJ+vzYfuSdqkTEyHKlxIfYqnYiInIhN4aampgYAEBkZ2WN7WFiY9XOXa2lpQW1tLfLz87Fu3To0NTUhOTkZjz32GGJiYqBQKHoEJQCoqqrC9u3bMXfuXADAyZMnYTab8fnnn+MPf/gDDAYD0tPT8dhjjyEsLMymN3s5lYqTM1+JUqno8aejNV004Mv8Cnx18DzaLo2n0XgqkT02GtPTByPE3z5POMUNDsCtE4fik5yz+MeOEiTFBMHby/nH1A90P+iHsR/Ohz1xLs7QD5t+snd0dABAr7E1np6eaGlp6bV/WVkZAEAURaxcuRJ6vR6rVq3C/PnzsW3bNoSE9PzNuaGhAUuWLEFwcDAefvhhAF23pABAo9HgjTfewIULF/Daa6/h/vvvx5YtW+DlZfs/fAqFgMBAH5uPczdabd+DdO3lVGUz/rP7FPYcPm8dTxMR7I0fZw7HzelD4O3lYffXfOD20ThU1oDqhjZs+bYc/3N3it1fw1Ec3Q+yDfvhfNgT5yJlP2wKN91Bwmg09ggVBoMBGk3vN5GWloacnBwEBgZaH7996623kJ2djc2bN2Pp0qXWfU+fPo2lS5fCbDZj7dq10Gq1AIDZs2cjKyvLOgAZAOLi4pCVlYWvvvrKOlbHFhaLCJ2u3ebj3IVSqYBWq4FO1wHzpUnx7MUiijhS1oDPcs/1GE+TMDgAt2QMwbj4UCgUAgwdRhg6jHZ97W6LfpSAlf88iM9yyjE2NggjhwVd/SAJObIfZDv2w/mwJ87FUf3QajX9vhpkU7jpvh1VV1eHIUOGWLfX1dUhISGhz2MuDyVA1xWY6Oho1NbWWrcVFBTg4YcfRnh4ON59912Eh4f/4DnCwsIQEBDQ562w/jKZ+A1wNWazxW5fJ4PRjL1Hq/FlfgVqm7quACoEAekju+aniYnsCrMWiwiLRbTLa15JXHQAslMHYdfhKry3vQjPPTgBnh5Kh76mPdizH3T92A/nw544Fyn7YdMNscTERPj6+iI3N9e6TafT4cSJE0hPT++1/8aNG5GRkYH29u+ukrS2tqK8vBwjRowAABQWFmLx4sWIi4vDhx9+2CvYvP7667jlllsgit/9g1dZWYmmpibrOch5Ner02LTrJB59+1t8+EUpaps64O2pwq0ZQ/DSw5Pws9tHWYPNQLo7ewQC/TxR19SB/+w9M+CvT0REjmNTuFGr1ViwYAFeeeUV7Ny5E8XFxXjkkUcQERGBGTNmwGw2o76+Hnq9HgCQlZUFi8WCxx9/HGVlZTh69CiWLVuGoKAgzJkzByaTCY8++iiCg4PxwgsvwGAwoL6+HvX19WhsbAQATJ8+HefPn8ezzz6LM2fOIC8vD8uWLcO4ceOQmZlp/68I2cWZah3+tvU4nvhrDj7dfw5tehPCAjW4b3o8XvmfG3DP1BGSLoXg7aXCT2/putr4+YFzOFOtk6wWIiKyL0G8/JJIP5jNZrz22mvYvHkz9Hq9dYbi6OhoVFZWYtq0aVi5ciXmzJkDADh+/DheffVVFBYWQhRFTJ48GU8++SQiIyNx8OBBzJs3r8/XiYqKwldffQUAyMnJwRtvvIGSkhKo1WpMmzYNTzzxBPz9r+3RYLPZgsbGtms61h2oVAoEBvqgqanNpkuKFouIwycbsOPAOZRWfjfAPGFwAGakD0bKiBAoFM619MHfth7H/hO1iA71wTOL0qFywqctrrUf5Bjsh/NhT5yLo/oRFOTT7zE3NocbOWC4+WG2/sXUG03YW1iNL/MrUdfcNZ5GqRAwYWQYZqQPwdAIP0eXfM107UY89fdctHZ0YnZmDG6fHHP1gwYYf3A7F/bD+bAnzsUZwo3zT/JBTqtRp8eXBZX45nAVOgwmAICPlwrZY6Nw07hoBPp5Slzh1Wm91Zg/PQ5/23oC274tx/iEMESFcJoAIiJXxnBDNjtdpcOOvHPIL66H5dKFv/BADWakD8YNoyPhqXb+J48ulzEyHLnHa3Hk1AWs+aQITy4Y73S3z4iIqP8YbqhfLBYRB0vrsSO/AicvG0+TOCQAMyYMQXJsMBSCawYCQRDw01sSUPJuLk5V6bCzoBLT0/te5Z6IiJwfww39oA6DCXsKu+anaWjpegpOqRCQkRSOGemDMSTcecfT2CJI64WfTB2BtZ+X4KPdp5AaF4LQAM52SkTkihhuqE91je3Y9GUpvjl8Hh0GM4Cu8TRTx3WNpwnwdf7xNLbKSh2E3BO1KKloxgefFePX96ZaZ9YmIiLXwXBDPTRdNOCjb05h//EadE8UHBHkjRnpgzFpdIRLzOR7rRSCgEW3JuKZ1QdworwJewurkZkySOqyiIjIRgw3BADoNFmwI+8c/rvvLAydXVdqkoYFYUZ6NEYPd93xNLYKD/LGnZnD8a+vT2LDVycxeniwSzz1RURE32G4IRw52YD1O8tQd2nNpxHR/vjF3SkI8VW75ZwR09OjcaCoFuU1F/HPHSX43zljeHuKiMiFMNy4sdqmdqz/sgyFpy4AAPx91LhnaiwyUwYhKMgXTU3uOdGhUqHAAzNH4vk1eThU1oCCknqkJYZJXRYREfUTw40b0htN2J5zFp8fOAeTWYRSIWB62mD8ePIwaDxVvEoBYHCYL2ZOHIpt+8rxzx0lSBwaCF+Nh9RlERFRPzDcuBFRFJFbVItNX59C00UDAGB0TBDm3RyHyGDOyvt9t90wDPkldai+0I6NO8vw0G1JUpdERET9wHDjJs7VXsS6L0qtC1qG+Hth3rQ4pMaF8ErNFXioum5PrfxHAb49VoOMpHCMHh4sdVlERHQVDDcy19rRiY/3nMauQ+chioBapcCsSUPxo4wh8FDJ97FuexkR5Y9padH4Mr8SH3xWjOcfyoDGk982RETOjD+lZcpiEbH7SBU27z6N1o5OAEBaYhjunToCwf5eElfnWuZkDcfhsgY0tOixefdp3Dc9XuqSiIjoBzDcyFBZZTM+/KIU52pbAQBRIT6Yf3McRg4Lkrgy1+SlVmHhrYl4dcNhfFVQiQkjwxAXHSB1WUREdAUMNzLSdNGAf+86iZzjtQAAjacKszNjcNO4KCgVComrc22jhgVhSnIk9hZW4/1PivHcg+m8rUdE5KQYbmTAZLbgi7wKbN1XDoPRDAFAZkok5mTFQuujlro82bj3phE4euoCahrbsfXbctx1Y6zUJRERUR8Yblzc0dMXsO7LMtQ2tgMAhg/S4r7p8YiJ1Epcmfz4eHlgwYwE/OXjo/h0/zmkJ4bJZlV0IiI5YbhxUXVN7diw8yQOn2wAAGi9PXB39gjcMCbCbdaBksL4hFCkJYQiv6Qeqz8pwtML03jLj4jIyTDcuBiD0Yzt+8vxWW4FTGYLlAoB08ZH4/bJMfD2YjsHwn3T41F0tgnnalvx+YEKzJw4VOqSiIjoMvzX0EWIooi84jps/OqkdXbhpGGBmH9zPAaFcHbhgeTv64m50+Lw3vYibNlzBuPiQxER5C11WUREdAnDjQuorGvFui9LUXyuGQAQrPXC3GlxGBfP2YWlcsPoCOSeqMWxM41Y80kRHr9vHG8HEhE5CYYbJ9am78SWPWfw9cHzsIgiPFQKzJw4FLdmDIHag48hS0kQBNz/owQ8/e4BlFa2YNeh87hpXLTUZRERERhunJLFImJPYRU++ua72YXHJ4Ti3qkjEBKgkbg66hbir8Hd2bH48ItSbNp1CimxIZz9mYjICTDcOJmT51vw4RelOFtzEQAQGeyN+dPjMYqzCzulqeOikFtUi5OVLVj7eQl+dU8ybxX2wdhpxqavT+Ho6Qv4+exRGBbBqQqIyHEYbpxES6sBm3adwr5jNQAAjacSd0wZjpvGRUGl5KPGzkohCHjg1kT8bvUBHD19AfuP12LS6Aipy3IqlXWt+OvW46hqaAMA/HffWfzvnDESV0VEcsZwIzGT2YIv8yux9dsz0BvNAIApYyJxV3Ys/Dm7sEuIDPbB7ZNjsHn3aaz7shSjYoI4MzS6nvD76uB5bPzqJExmC3w1Hmjt6MSRkw1oaTPy7zcROQwvCUjo2JkL+N3qA/jX1yehN5oRE+mH394/Hg/OGskf/C7mRxlDMDjMF216E9Z9WSp1OZLTtRvx5r8L8eEXpTCZLUiODcbvF2cgdpAWZouIfceqpS6RiGSMV24kUN/cgQ07y3CorGt2YT9vD9x9YywmJ0fycWIXpVIq8ODMkVjxQT4OFNUhY2Q9xsaHSl2WJI6XN+Ld/55AS6sRKqUCP5kai2njoyEIAjJTBuFUlQ57jlTjRxOGcHwSETkEw80AMnSa8UnOWXyaew4mswUKoWt24TumDIO3l4fU5dF1Ghrhh1syBuPT/efwjx0lSBgS4FZ9NZkt+Hj3aXyWew4iugbD//yO0Rgc5mvdJz0xDOu/LENNYzvKKlsQPzhAsnqJSL4YbgaAKIooKKnHxq/KcEHXNbvwyKGBmH9zHKJCfa9yNLmSOybH4GBpA2ob2/Gvr09h0a2JUpc0IGob2/HO1uMov/SUX3bqINw7LQ6e35uPSeOpQvrIMOwtrMaewiqGGyJyCIYbBztf34p1X5ah6GwTACBY64l7b4rD+IRQXpKXIbWHEg/cmogXPjyI3UeqkDEyDCNl/Bi/KIrYd6wG/9xRCkOnGT5eKiy6NRHjE8KueExW8iDsLaxGXnEd5t8cD40nfwwRkX3xp4qDtOs7sWXvGXxV0DW7sEqpwMyJQ3DrxKG9fpsleYkfHICp46Lw9cHzWPNZMZ5/MAOeavn1vF1vwtrPi3GgqA4AkDA4AEt+nIQg7Q9PZBgbpUVksDeqL7Qjt6gW2alRA1EuEbkRhhs7s4gi9hZW46NvTuFie9fswmPjQjB3WhxCObuw27j7xlgcOdmA+mY9Pt5zGnOnxUldkl2dPN+Cv209joYWPRSCgDsyYzBr4lAoFFe/GikIAjKTB+FfX5/EniPVDDdEZHcMN3ZUXqPDPz4vwZnqrnEHEUHemD89DqNjgiWujAaaxlOF+29JwJ82FeKL/AqkjwxD7CB/qcu6bhaLiO055fjP3nJYRBEh/l5YevsojIiy7b3dMDoCH31zCmeqdaisa0V0GMeeEZH9cJ4bOxFFEa9tPIIz1RfhpVbiJ1NH4PmHJjDYuLHk2BBMGhUOUQTWfFIMk9kidUnXpVGnx0vrD+HjPWdgEUVMTArHsw9MsDnYAIDWR43UESEAgN2FVfYulYjcHK/c2IkgCJg6NgrtBhNmTRqKAF9PqUsiJzB3WhyOnWnE+YY2bM85izumxEhd0jUpKKnDmk+L0aY3wVOtxILp8bhhdMR1DYrPTBmEgtJ65ByrwT3ZI+Ch4u9aRGQfDDd2dGfWcKlLICfj563GfdPj8df/HMd/95VjfEIool3o8X9Dpxkbdpbhm8NdV1diIv2w9PZRCA/0vu5zj44JQqCfJ5ouGnCorB4TRoZf9zmJiADeliJyuPTEMIyNC4HZIuL9T4phsYhSl9Qv52ov4vk1efjmcBUEALdOHIInF4y3S7ABAIVCwOQxkQCAPUd4a4qI7IfhhsjBBEHAghkJ0HiqcKZahy/yK6Qu6QeJoogv8irw+7X5qL7QDn9fNX49NxX3ZI+w+wr1mcld4eZEeRMamjvsem4icl8MN0QDINDPE/feNAIA8PHu06hrape4or7p2ox449+FWL+zDCaziNQRIXj+wQlIctBEhKEBGowcGggRwN6jXEyTiOyD4YZogGQmRyJxSACMJgvWfFoMUXSu21PHzlzAM6sPoPDUBaiUCtw3PR7L7hoDP2/HrlCfmdJ19Wbv0WqXuWVHRM6N4YZogAiCgEW3JkKtUqD4XDP2FDrHlQqT2YKNX5XhtY1HoGszIirEB88sTLOu5O1o4+ND4eOlQqPOgBPljQ5/PSKSP4YbogEUFuhtfapu41dlaLpokLSe6gtt+MPaAnx+oGsc0NRxUXh6YdqATqrnoVJi4qgIAMBuDiwmIjtguCEaYNPTBiMmUosOgxn/+LxEkttToihiz5EqPLcmD2drL8LHS4Vlc8bgpzMSoJZg7bPugcWHyhqgazcO+OsTkbww3BANMIVCwAMzE6FUCDh8sgF5xXUD+vrt+k789T/H8f6nxTB2WjByaCCefygDY+NDB7SOyw0J98OwCD+YLSL2H6uRrA4ikgeGGyIJRIf64rYbhgEAPvyiFK0dnQPyumWVzfjd6gPIK66DUiHgrhuH49f3piLQT/oZtTNTBgEAdhdWO91gayJyLQw3RBKZNWkookJ9cLG9E+u/LHXoa5ktFvxn7xm88OFBXNAZEBrghScXjMesScP6tZL3QMgYGQ61SoGqhjacrtJJXQ4RuTCGGyKJqJQKPHDrSAgCkHO8FoWnGhzyOhda9Hhp3SH8Z+8ZiCIwaVQEnn1gAoYP0jrk9a6Vt5cKaYlhAIA9XEyTiK4Dww2RhIYP0mJ62mAAwNrPS9BhMNn1/PnFdfjd6gMoq2yBl1qJJT9OwpIfJ0Hj6ZzLynUPLM4tqoPeaN+vBRG5D4YbIondmTkcoQFeaNQZ8O9vTtnlnAajGe9/UoS3txxDu8GE4YO0ePbBCZh06ZFrZxU/OADhgRoYjGbkFQ3sQGsikg+GGyKJeaqVWPSjRADA1wfPo7Si+brOd7bmIp5dk4c9hdUQ0DW25zf3jUNYgOb6i3UwQRCsA4udZZJDInI9DDdETmDksCBkXVqG4P1PimDsNNt8Doso4vMD5/D7tfmobWxHoJ8nHp03FnfdGGv3BS8dafLoCCgEASfPt6CqoU3qcojIBbnOTzwimfvJ1BHw91WjtqkDW78tt+nYljYj/rTpCDZ+dRJmi4ixcSF47sEJGDk00DHFOpC/rydSRgQD4MBiIro2DDdETsLbywP3z0gAAHyWew5nay7267ijpy/gd+/l4tjpRnioFPjpLQn43zlj4KvxcGS5DpWZ3HVr6tujNTCZLRJXQ0SuhuGGyImMjQ/FhJFhsIgi3v+k6Af/Ye80WbD+yzK8/q8j0LV3Ijq0a8HLqWOjBmTBS0caExsEf181Wjs6cbjMMY/IE5F8MdwQOZn5N8fDx0uFc3Wt+Cz3XJ/7dC14mY8v8rsWvJw2PhpPL0xDVOjALXjpSEqFAlPGdI1B4sBiIrIVww2Rk9H6qDH/5ngAwNZvz/QYVCuKInZfWvDyXF0rfDUeWH53Mu6bHg8P1cAveOlIUy7NeXPs9AU06vQSV0NEroThhsgJTRwVjjHDg2Eyi3jvvydgsYho6+jEqi3HsObSgpdJwwLx/EMTkDoiROpyHSI80BsJgwMgAth7lFdviKj/GG6InJAgCLj/lgR4qpUoq2zBXz8uxG//vh/5JfVQKgTcMzUW/3dvKgJ8pV/w0pGyLs15s7ewGhYupklE/cRwQ+Skgv29cE92LADg033laNQZEBaowf/76XjcmjEUChcfNNwf4xNCofFUoaFFj6KzTVKXQ0QuguGGyIllj41C0rCuuWoykyPxu0XpiIl0rgUvHUntocTEpHAAwJ4jnPOGiPrHOVfPIyIAgEIQ8Oi8seiEAI1SgMnkfnO+ZKUMwteHzuNgaT1aOzpdev4eIhoYNl+5sVgsePPNN5GZmYnU1FQsWbIEFRUVV9x/69atSEhI6PVRWVlpPd+7776LW265BampqZg1axY2bdrU4xyVlZX42c9+hnHjxmHKlCn405/+BLPZ9unpiVyRSqnAoBB5POJ9LYZG+GFImC9MZhE5x2ukLoeIXIDN4ebtt9/GunXrsGLFCmzYsAEWiwWLFy+G0Wjsc/+SkhJMmDABe/fu7fERGdn1mOc777yDd955B7/85S+xdetW3H///Xj22WexZcsWAEBnZyceeughAMCGDRvw7LPPYv369fjLX/5yjW+ZiFyNdTHNI9UQObCYiK7CpnBjNBqxevVqLF++HNnZ2UhMTMTrr7+Ompoa7Nixo89jSktLkZCQgNDQ0B4fSmXXnBzr16/Hgw8+iJkzZ2LIkCG49957cccdd1iv3nz++eeoqqrCSy+9hPj4eNx88834v//7P3zwwQdXDFREJC8TR4VDpVSgsr4V5f1cloKI3JdNY26Ki4vR1taGSZMmWbdptVokJSUhLy8Pt912W69jSkpKcNNNN/V5PovFghdffBExMTE9tisUCuh0OgBAfn4+Ro0aBX9/f+vnJ06ciNbWVhQVFSElJcWWt2ClUnEs9ZUoL60grXShlaTljP3oWkwzPTEMOcdrsPdoNeIGB0hWC/vhfNgT5+IM/bAp3NTUdN3v7r6l1C0sLMz6ucu1tLSgtrYW+fn5WLduHZqampCcnIzHHnsMMTExUCgUPYISAFRVVWH79u2YO3eu9TUjIiJ6vR4AVFdXX1O4USgEBAb62Hycu9FqNVKXQJdx937cljUcOcdrkHuiFr+4JxVeammfh3D3fjgj9sS5SNkPm346dHR0AADUanWP7Z6enmhpaem1f1lZGYCuKeNXrlwJvV6PVatWYf78+di2bRtCQnrOrNrQ0IAlS5YgODgYDz/8MABAr9dDq+356KunZ9fEZQaDwZbyrSwWETpd+zUd6w6USgW0Wg10ug6YuSKz5NiPLlFBGoQFaFDX3IEvcs5gyqWVwwca++F82BPn4qh+aLWafl8NsinceHl5Aegae9P930BXyNBoeie0tLQ05OTkIDAw0LpK8VtvvYXs7Gxs3rwZS5cute57+vRpLF26FGazGWvXrrUGGi8vr15ja7pDjbe3ty3l9+COj9Taymy28OvkRNgPYHJyJD7efRq7Dp7HxKSIqx/gQOyH82FPnIuU/bDphlj37ai6uroe2+vq6hAeHt7nMUFBQdZgAwAajQbR0dGora21bisoKMDcuXOh0WiwYcMGDB482Pq5iIiIPl8PwBVfk4jkacqYSAgCUFrZgppGXn0lor7ZFG4SExPh6+uL3Nxc6zadTocTJ04gPT291/4bN25ERkYG2tu/+yHU2tqK8vJyjBgxAgBQWFiIxYsXIy4uDh9++GGvwJKeno4TJ06gtbXVum3//v3w8fFBYmKiLeUTkYsL9PPEmOHBAIA9hZyxmIj6ZlO4UavVWLBgAV555RXs3LkTxcXFeOSRRxAREYEZM2bAbDajvr4eer0eAJCVlQWLxYLHH38cZWVlOHr0KJYtW4agoCDMmTMHJpMJjz76KIKDg/HCCy/AYDCgvr4e9fX1aGxsBADcfPPNCA0Nxa9+9SsUFxfjyy+/xGuvvYYHH3yw19gfIpK/zEtjbb49WgMTx1cQUR9sftxg+fLlMJlMeOqpp6DX65Geno733nsPHh4eqKysxLRp07By5UrMmTMHkZGRWLNmDV599VXMmzcPoihi8uTJWLt2LTw9PXHw4EGcPXsWQFeIuVxUVBS++uoreHp64t1338Vzzz2Hn/zkJ/D398f8+fPxi1/8wj5fASJyKSkjgqH19oCuzYijpy5gbHyo1CURkZMRRDec7tNstqCxsU3qMpyWSqVAYKAPmpraODjPCbAfvf3r65P4LPccUmKD8ct7rm2uq2vFfjgf9sS5OKofQUE+/X5aijMeEZHLyUzuerih8PQFNF28tikhiEi+GG6IyOVEBvsgLtofogjsO1YtdTlE5GQYbojIJXUPLN5zpBoW97u7TkQ/gOGGiFxSemIYvNRK1DV3oPRcs9TlEJETYbghIpfkqVYiI6lrXizOeUNEl2O4ISKX1X1rKr+kHu36TomrISJnwXBDRC4rJtIPUaE+6DRZsP9E7dUPICK3wHBDRC5LEARkXTawmIgIYLghIhc3aXQEVEoBZ2sv4mzNRanLISInwHBDRC7NV+OBcZeWYODAYiICGG6ISAa6BxbvP14LY6dZ4mqISGoMN0Tk8kYOC0Sw1gvtBhMKSuulLoeIJMZwQ0QuTyEI1vWm9hzhrSkid8dwQ0SyMHlMJAQAxeeaUdfULnU5RCQhhhsikoVgfy+MigkCAOwp5GPhRO6M4YaIZCMrpWtg8bdHq2G2WCSuhoikwnBDRLKRGhcCX40HmluNOHq6UepyiEgiDDdEJBsqpQI3jI4AwIHFRO6M4YaIZKX7qanCUxfQ0mqQuBoikgLDDRHJSlSoL2IHaWG2iNh3rEbqcohIAgw3RCQ7mZcGFu8urIYoihJXQ0QDjeGGiGQnPTEMnh5K1Da2o6yyRepyiGiAMdwQkexoPFVIHxkGgAOLidwRww0RyVLWpcU080rq0GEwSVwNEQ0khhsikqXYKC0ig71h7LQgt6hW6nKIaAAx3BCRLAmCgMxLV294a4rIvTDcEJFs3TA6AkqFgDPVF1FZ1yp1OUQ0QBhuiEi2tD5qpMaFAAB2F/LqDZG7YLghIlnrvjWVc6wGnSYupknkDhhuiEjWRscEIdDPE216Ew6V1UtdDhENAIYbIpI1hULAlDFd601xYDGRe2C4ISLZm3JpMc3j5U1oaO6QuBoicjSGGyKSvdAADZKGBQIA9h6tlrgaInI0hhsicgvWOW8Kq2GxcDFNIjljuCEitzAuPgQ+Xio0XTTgeHmj1OUQkQMx3BCRW/BQKTFpVAQADiwmkjuGGyJyG5kpXbemDpU1QNdulLgaInIUhhsichuDw3wxLMIPZouInGM1UpdDRA7CcENEbiUr5buBxaLIgcVEcsRwQ0RuZcLIcKhVClQ1tOFUlU7qcojIARhuiMiteHupkJYYBoADi4nkiuGGiNxO962pA0V16DCYJK6GiOyN4YaI3E5ctD/Cg7xh6DQjr7hO6nKIyM4YbojI7QiCgMxL603tKeStKSK5YbghIrc0eXQEFIKAU+d1ON/QJnU5RGRHDDdE5Jb8fT2RMiIYAAcWE8kNww0Rua3uxTT3HauByWyRuBoisheGGyJyW2Nig+Dvq0ZrRycOlzVIXQ4R2QnDDRG5LaVCgSljugYW7+bAYiLZYLghIrc25dJTU8dPN6JRp5e4GiKyB4YbInJr4YHeSBwSABHA3qPVUpdDRHbAcENEbq97YPHewmpYuJgmkctjuCEitzc+IRQaTxUaWvQoOtskdTlEdJ0YbojI7ak9lJg4KhwA57whkgOGGyIiAFmXbk0dLK1Ha0enxNUQ0fVguCEiAjA0wg9Dwn1hMovIOV4jdTlEdB0YboiILukeWLznSBVEDiwmclkMN0REl0wcFQ6VUoHK+jaU11yUuhwiukYMN0REl/h4eSAtMRQABxYTuTKGGyKiy3Tfmtp/ohYGo1niaojoWjDcEBFdJmFIAEIDvKA3mpFfUid1OUR0DRhuiIguoxCEHgOLicj12BxuLBYL3nzzTWRmZiI1NRVLlixBRUXFFfffunUrEhISen1UVlb22regoAAjR468rnMQEV2vyWMiIQhAaWULqi+0SV0OEdlIZesBb7/9NtatW4cXXngBERERePnll7F48WJs27YNarW61/4lJSWYMGECXnvttR7bg4KCevx/QUEBfvGLX8BisVzzOYiI7CHQzxNjhgej8NQF7C2sxj1TR0hdEhHZwKYrN0ajEatXr8by5cuRnZ2NxMREvP7666ipqcGOHTv6PKa0tBQJCQkIDQ3t8aFUKgEAJpMJK1euxMKFCxEVFXVN5yAisreslK5bU98eq4HJ3PuXLiJyXjaFm+LiYrS1tWHSpEnWbVqtFklJScjLy+vzmJKSEsTGxl7xnO3t7cjLy8O7776LBQsWXNM5iIjsLTk2GFofNXRtRhSeuiB1OURkA5tuS9XUdE1JHhkZ2WN7WFiY9XOXa2lpQW1tLfLz87Fu3To0NTUhOTkZjz32GGJiYgB0haPNmzcDgPVPW89xLVQqjqW+EqVS0eNPkhb7IQ2VSoHM5EhszzmLvUerMSGpa2FN9sP5sCfOxRn6YVO46ejoAIBeY2s8PT3R0tLSa/+ysjIAgCiKWLlyJfR6PVatWoX58+dj27ZtCAkJuepr2uMc36dQCAgM9LH5OHej1WqkLoEuw34MvNuyYrE95ywKTzbAolAg2P+7HrAfzoc9cS5S9sOmcOPl5QWga+xN938DgMFggEbT+02kpaUhJycHgYGBEAQBAPDWW28hOzsbmzdvxtKlS6/6mvY4x/dZLCJ0unabj3MXSqUCWq0GOl0HzBxrIDn2Qzo+HgrEDw5AaUUz/rv7FG6fEsN+OCH2xLk4qh9arabfV4NsCjfdt6Pq6uowZMgQ6/a6ujokJCT0ecz3n2jSaDSIjo5GbW1tv1/XHuf4PpOJ3wBXYzZb+HVyIuyHNDKTI1Fa0Yzdh6vwo4wh6L5uzX44H/bEuUjZD5tuiCUmJsLX1xe5ubnWbTqdDidOnEB6enqv/Tdu3IiMjAy0t393laS1tRXl5eUYMaJ/j1ba4xxERNcqLSEMXmol6po7UHKuWepyiKgfbAo3arUaCxYswCuvvIKdO3eiuLgYjzzyCCIiIjBjxgyYzWbU19dDr9cDALKysmCxWPD444+jrKwMR48exbJlyxAUFIQ5c+b06zXtcQ4iomvlqVYi49Jg4j2FrjljsSiK0LUbcep8C3KO12Dr3jN4978n8PL6Q3hv+wnsOHAOJ8obcbHdKHWpRHZh8yR+y5cvh8lkwlNPPQW9Xo/09HS899578PDwQGVlJaZNm4aVK1dizpw5iIyMxJo1a/Dqq69i3rx5EEURkydPxtq1a+Hp6dmv17PHOYiIrkdWyiB8c7gKBSX1aOvoRGCg1BX1ZrGIaLyoR31TB+qauz7qmzpQd+n/9f1cBNTfV43BYb4YHOqLwWG+iA7zRUSQN1R8EolciCCKoih1EQPNbLagsZFTql+JSqVAYKAPmpraeP/aCbAf0hNFEb9bfQCV9W24/0cJuGd6oiT96DRZ0NDSgdqmDmuIqW/uCjANLR0wmX/4x3mgnyfCAjQIDdQgLECDQD9PNLToUVnXioq6VtQ1d/R5nEopYFCwD6LDvgs8g0N9ofXpPSu9FPg94lwc1Y+gIB/HDCgmInJHwqXFNNfvLMM3h6twz/REh71Wu96E+uYO1Da1W4NL/aUrMU06A34ovigVAkICuoLL5SEmLFCD0AAveKh+eFZ3vdGE8/VtqKhrRUV9V+CprGuF3mjGubpWnKtr7bG/v4/aGni6r/REBPMqD0mP4YaIqB8mjY7Apl0ncbbmIk5WNiPYx+OaziOKIlrajNbQUtvU0SPEtHZ0/uDxnmolwi8LLtYAE6BBkNYLCoVwTXUBgJdahdgof8RG+feo90KLvlfgqWvqQEubES1nGnH8TKN1f6VCQGSwT1fgCfNFdJgPBof5wd9JrvKQe2C4ISLqB1+NB8bFh+JAUR2+yD2LuTdd+WlNs8WCCy3678a9NH839qW+uQPGzh++VK/19rgUWrwR9r0Q4+ftYZ3zayAIQtfVoJAADcbGh1q3G4xmVDa0Wm9pVda1oqK+DR0GEyrrW1FZ34qc4z3fU/ctrehLV3kGhfjwKg85BMMNEVE/ZSYPwoGiOnxzsBKzJg7BhWa9Nbh0XX1pR11zBy60GGD5geGMggAEa70QeumWkTXAXPrQeDr/j2ZPtRKxg/wRO+h7V3l0elTWtaGi7iIq6ttQWdeK2sZ26No7cby8CcfLm6z7d13l8e5xays6zBf+PuoBDXAkPxxQTL1wcJ5zYT+ch0UU8Zu/5qChRX/VfT1Uiq7wcimwXB5igv293OqKhaHTjKqGS2N56r672tNuMPW5v5+3h/XqzuBLV3oGhfjA4wprAvJ7xLlwQDERkQtRCAJmTBiMdV90rXnn46WyBpfuINMVYrzh76uGglcfAACeHkrERGoRE6m1bhNFEU0XDTh3KexUXhrPU9PYjovtnSg624Sis99d5VEIXVd5vn9rK8CXY3moN165oV74W5BzYT+ci1IpQG8BzEYTvDx++Okjsp2x04zzDW2XxvB8d5WnTd/3VR5fjQeGhPtidvYIJEb783vECTjDlRuGG+qF/5g6F/bDubAfA6/7Kk/31Z2KulZU1reh5kJ7j7FNP75hGO6YEnNdT4zR9XOGcMPbUkRE5NQEQUCQ1gtBWi8kx4ZYt3eazKhqaMf+olp8nnsO2/aV42ztRSz98Sh4e/GfN3fmPiPaiIhIVjxUSgyN8MN90+Px6H3j4aFSoPDUBaxYm4/qC7w6784YboiIyOXdOC4aTy9MQ5DWE7WN7fj92nwcPtkgdVkkEYYbIiKShWGRWjyzMB3xgwPQYTDjz/8uxH/3lcMNh5a6PYYbIiKSDa2PGo/OTcXUcVEQAWzefRqrthyD3tj301YkTww3REQkKyqlAj+dkYCFP0qAUiEgv6Qef/zHQdRfYdVzkh+GGyIikqUbU6Pw+Pyx0PqoUVnfihUf5KOovPHqB5LLY7ghIiLZiosOwDML0xAT6YfWjk68uvEIvsir4DgcmWO4ISIiWQvSeuE3943DDaMjYBFFrN9ZhtXbi9BpMktdGjkIww0REcmeh0qJh2aNxNxpcRAE4NtjNXjhw0NoumiQujRyAIYbIiJyC4IgYEb6YPzfvanw8VLhTLUOz6/Jw8nzLVKXRnbGcENERG5l1LAgPL0oHVGhPmhpM+KldQex+0iV1GWRHTHcEBGR2wkL0OC3Px2P8QmhMJlFrPm0GB/uKIXJzMVQ5YDhhoiI3JKXWoWHZ4/G7MwYAMDOg5V4dcNh6NqNEldG14vhhoiI3JZCEHD75Bgsu2sMvNRKlFQ0Y8WaPJyrvSh1aXQdGG6IiMjtjY0LxVP3pyE8UIMLOgP++I8CHCiqlbosukYMN0RERAAGhfjg6YVpGD08CEaTBX/9z3Fs2nUSFgsn/HM1DDdERESXeHt54Fd3p+DWjCEAgE/3n8Mb/y5Eu75T4srIFgw3REREl1EoBNwzdQSW3p4EtUqBo6cvYMUH+ahqaJO6NOonhhsiIqI+TEyKwJMLxiNY64napg78fm0+Dpc1SF0W9QPDDRER0RUMjfDD0wvTET84AHqjGX/+qBDbvj3DhTedHMMNERHRD9D6qPHo3FTcNC4KIoCP95zB21uOQW80SV0aXQHDDRER0VWolAosmJGARbcmQqkQUFBSjz/+owB1zR1Sl0Z9YLghIiLqp6yUQXhi/jhofdSorG/DijV5OFHeKHVZ9D0MN0RERDYYEe2PZxamISbSD216E17beAQ78io4DseJMNwQERHZKEjrhd/cNw43jI6ARRSxYWcZVm8vQqfJLHVpBIYbIiKia+KhUuKhWSMxd1ocFIKAb4/V4IUPD6LpokHq0tweww0REdE1EgQBM9IH4//uTYGPlwpnqi/i+TV5OFnZInVpbo3hhoiI6DolDQvC04vSERXqg5Y2I15cdxC7j1RJXZbbYrghIiKyg7AADX770/EYnxAKs0XEmk+L8Y8dJTCZLVKX5nYYboiIiOzES63CL2aPxp2ZMQCArw+exysbDkPXZpS4MvfCcENERGRHgiDgx5NjsOyuMfBSK1Fa0YwVH+ThbM1FqUtzGww3REREDjA2LhRP3Z+G8EANLugMWPnPAuw/USN1WW6B4YaIiMhBBoX44OmFaRg9PAhGkwV/23oCm74+CYuFE/45EsMNERGRA3l7eeBXd6fg1olDAACf5p7Dn/59BG36Tokrky+GGyIiIgdTKATckz0CS29PglqlwLHTjVjxQT7ON7RJXZosMdwQERENkIlJEXhywXgEaz1R19SBP6zNx6GyeqnLkh2GGyIiogE0NMIPTy9KR/zgAOiNZvz5o6PY+u0ZWLjwpt0w3BAREQ0wrbcaj85NxU3jogAAW/acwaqPj0FvNElcmTww3BAREUlApVRgwYwELLo1EUqFgILSeqzaclzqsmSB4YaIiEhCWSmD8MT8cVAIAo6evoDz9a1Sl+TyGG6IiIgkNiLaH6lxIQCAXYe54Ob1YrghIiJyAtljBwEA9h2rgcFolrga18ZwQ0RE5ASShgUhNMALHQYTDhTVSl2OS2O4ISIicgIKQUB2atfTU7sOn5e4GtfGcENEROQkJidHQqUUcKb6IsprdFKX47IYboiIiJyE1luNtIQwAMCuQ7x6c60YboiIiJxI9tiuW1P7T9SiXc9J/a4Fww0REZETiYv2x6AQHxg7Lcg5XiN1OS6J4YaIiMiJCIKA7NSux8J3HT4PkWtO2YzhhoiIyMncMDoCag8Fzte34eT5FqnLcTkMN0RERE7G28sDGSPDAQBfc2CxzRhuiIiInFD3wOL84jpcbDdKXI1rYbghIiJyQjGRWgyN8IPJLOLboxxYbAuGGyIiIic1dex3MxZbOLC432wONxaLBW+++SYyMzORmpqKJUuWoKKi4or7b926FQkJCb0+Kisre+1bUFCAkSNH9tre1NSEX//610hPT8eECRPw3HPPoaOjw9bSiYiIXErGyHBoPJWoa+pA0dkmqctxGTaHm7fffhvr1q3DihUrsGHDBlgsFixevBhGY9/3A0tKSjBhwgTs3bu3x0dkZGSP/QoKCvCLX/wCFoul1zmWL1+Os2fPYs2aNXjjjTfwzTff4Nlnn7W1dCIiIpfiqVbihlFd/17uOsiBxf1lU7gxGo1YvXo1li9fjuzsbCQmJuL1119HTU0NduzY0ecxpaWlSEhIQGhoaI8PpVIJADCZTFi5ciUWLlyIqKioXscfOnQIBw4cwIsvvohRo0Zh0qRJeP755/Gf//wHtbVcNZWIiOTtxrFdc94cKmtA00WDxNW4BpUtOxcXF6OtrQ2TJk2ybtNqtUhKSkJeXh5uu+22XseUlJTgpptuuuI529vbkZeXh3fffRdVVVV48skne3w+Pz8foaGhiI2NtW6bMGECBEFAQUEBZs6cactbsFKpONzoSpRKRY8/SVrsh3NhP5yP3HsyLFKL+MEBKK1oxrfHqjE7c7jUJf0gZ+iHTeGmpqZrtPb3bymFhYVZP3e5lpYW1NbWIj8/H+vWrUNTUxOSk5Px2GOPISYmBkBXONq8eTMAWP+8XG1tba/XU6vVCAgIQHV1tS3lWykUAgIDfa7pWHei1WqkLoEuw344F/bD+ci5Jz/OHI5X1x3E7sNVuH/WKJcIclL2w6Zw0z2IV61W99ju6emJlpbeMyiWlZUBAERRxMqVK6HX67Fq1SrMnz8f27ZtQ0hISL9e8/uv1/2aBsO1XZ6zWETodO3XdKw7UCoV0Go10Ok6YDb3HgNFA4v9cC7sh/Nxh56MHOIPX40HGlr0+Cb/HMbGh0pd0hU5qh9arabfoc6mcOPl5QWga+xN938DgMFggEbTO6GlpaUhJycHgYGBEAQBAPDWW28hOzsbmzdvxtKlS/v1mn0NVjYYDPD29ral/B5MJnl+A9iT2Wzh18mJsB/Ohf1wPnLuiQICpiRH4rPcc/gyvxJjhgdLXdJVSdkPm65rdd8eqqur67G9rq4O4eHhfR4TFBRkDTYAoNFoEB0d3e/BwBEREb1ez2g0orm5GWFhYbaUT0RE5LJuvLSY5rHTF1DfzOlQfohN4SYxMRG+vr7Izc21btPpdDhx4gTS09N77b9x40ZkZGSgvf27W0Ctra0oLy/HiBEj+vWa6enpqKmpwdmzZ63bDhw4AAAYP368LeUTERG5rPBAb4waFggRwO4jVVKX49RsCjdqtRoLFizAK6+8gp07d6K4uBiPPPIIIiIiMGPGDJjNZtTX10Ov1wMAsrKyYLFY8Pjjj6OsrAxHjx7FsmXLEBQUhDlz5vTrNVNSUjBu3Dg88sgjKCwsxP79+/HMM89g9uzZV7xaREREJEfd603tOVIFk0zHF9mDzcOtly9fjrvvvhtPPfUU5s2bB6VSiffeew8eHh6orq7GlClT8MknnwDouo21Zs0atLe3Y968eVi0aBH8/Pywdu1aeHp69uv1BEHAW2+9hejoaCxcuBC/+tWvkJWVxUn8iIjI7aSMCIG/rxq69k4cLK2XuhynJYii+y1WYTZb0NjYJnUZTkulUiAw0AdNTW2yHZznStgP58J+OB9368nHu09j275yJA4JwOPzx0ldTi+O6kdQkE+/n5Zy/gfliYiIyOrG1EEQBKD4XDOqL/AX9b4w3BAREbmQIK0XUmK75onbdYgDi/vCcENERORiugcWf3u0GsZOs8TVOB+GGyIiIhczOiYIIf5eaDeYkFdcd/UD3AzDDRERkYtRKATrpH67Dp2XuBrnw3BDRETkgqYkD4JSIeBUlQ7nai9KXY5TYbghIiJyQf4+aoxP6FpAk1dvemK4ISIiclHZqV0Di3NO1KLDYJK4GufBcENEROSiEoYEICLIGwajGftP9G9BanfAcENEROSiBEGwPha+69B5uOGiA31iuCEiInJhk8dEwEOlQEVdK05V6aQuxykw3BAREbkwHy8PTBgZBoADi7sx3BAREbm47ltTB4rq0NrRKXE10mO4ISIicnHDI7UYEuYLk9mCfUerpS5Hcgw3RERELu7ygcVfH65y+4HFDDdEREQykJEUDi+1ErWN7Sg+2yR1OZJiuCEiIpIBjacKk0ZFAOi6euPOGG6IiIhkonsxzUOl9WhpNUhcjXQYboiIiGRiSLgfYqO0MFtE7Cl034HFDDdEREQy0r3e1DeHq2CxuOfAYoYbIiIiGUlPDIOPlwoXdHocPX1B6nIkwXBDREQkI2oPJSaPiQTgvjMWM9wQERHJTPfA4sJTF9DQ0iFxNQOP4YaIiEhmIoN9MHJoIEQAu4+438BihhsiIiIZ6p6xeM+RKpjMFomrGVgMN0RERDI0Ni4EWh81WtqMOFzWIHU5A4rhhoiISIZUSgWyUroGFn/tZgOLGW6IiIhkKitlEAQARWebUNPYLnU5A4bhhoiISKZC/DUYExsMAPjmsPtcvWG4ISIikrHugcV7C6vRaTJLXM3AYLghIiKSseThwQjWeqJNb0J+cb3U5QwIhhsiIiIZUygEZF1ab8pdBhYz3BAREclcZnIklAoBJ8+3oKKuVepyHI7hhoiISOYCfD0xNi4EALDLDQYWM9wQERG5ge6BxTnHaqA3miSuxrEYboiIiNxA4tBAhAdqoDeakXuiVupyHIrhhoiIyA0oBMF69ebrQ+chiqLEFTkOww0REZGbmDwmEiqlAudqW3Gm+qLU5TgMww0REZGb8NV4ID0xDACwS8aPhTPcEBERuZGpl25NHSiqRZu+U+JqHIPhhoiIyI3ERmkRHeoDo8mCfcdqpC7HIRhuiIiI3Ihw2cDiXTIdWMxwQ0RE5GYmjYqAp4cS1RfaUVrRLHU5dsdwQ0RE5GY0nipMHBUOQJ7rTTHcEBERuaHsS4tpFpTUQ9dmlLga+2K4ISIickNDI/wQE6mF2SJi79FqqcuxK4YbIiIiN5U9dhCAroHFFhkNLGa4ISIiclMTRobD21OFhhY9jp9plLocu2G4ISIiclOeHkrcMCYCgLxmLGa4ISIicmPdA4sPn2xAo04vcTX2wXBDRETkxgaF+CBhcABEEdh9pErqcuyC4YaIiMjNdc9YvPtIFcwWi8TVXD+GGyIiIjc3PiEUft4eaG414nDZBanLuW4MN0RERG5OpVQgM/nSY+GHXX9gMcMNERERISt1EAQAx880oq6pXepyrgvDDRERESEsQINRw4MAAN8cdu2BxQw3REREBACYeumx8D2F1eg0ue7AYoYbIiIiAgAkjwhGoJ8nWjs6UVBSJ3U514zhhoiIiAAASoUCN6Z8t96Uq2K4ISIiIqvMlEFQCAJKK1twvr5V6nKuCcMNERERWQX6eSI1LgQAsMtFBxYz3BAREVEP2WO7bk3tO1YDg9EscTW2szncWCwWvPnmm8jMzERqaiqWLFmCioqKK+6/detWJCQk9PqorKy07vPpp59i5syZSE5OxuzZs5GTk2PzOYiIiMg+koYFISxAgw6DCblFtVKXYzObw83bb7+NdevWYcWKFdiwYQMsFgsWL14Mo9HY5/4lJSWYMGEC9u7d2+MjMjISALB//3489thjmDt3Lj7++GNMmjQJS5cuxalTp/p9DiIiIrIfhSDgxrGuO7DYpnBjNBqxevVqLF++HNnZ2UhMTMTrr7+Ompoa7Nixo89jSktLkZCQgNDQ0B4fSqUSAPD3v/8dN998M+6//37ExsbiiSeewKhRo/DBBx/0+xxERERkX5PHREKlFFBecxFnqnVSl2MTm8JNcXEx2traMGnSJOs2rVaLpKQk5OXl9XlMSUkJYmNj+/ycxWLBwYMHe5wPADIyMnqc74fOQURERPan9VYjLSEMAPCNi603pbJl55qaGgDodTsoLCzM+rnLtbS0oLa2Fvn5+Vi3bh2ampqQnJyMxx57DDExMdDpdGhvb0dERMQVz3e1c1wrlYpjqa9EqVT0+JOkxX44F/bD+bAnjjMtLRr7T9Ri/4lazJ+eAG+vq8cGZ+iHTeGmo6MDAKBWq3ts9/T0REtLS6/9y8rKAACiKGLlypXQ6/VYtWoV5s+fj23btsFkMl3xfAaDoV/nCAkJseUtAAAUCgGBgT42H+dutFqN1CXQZdgP58J+OB/2xP4yArwxJKIU52ou4vCpC5g1ZXi/j5WyHzaFGy8vLwBdY2+6/xsADAYDNJrebyItLQ05OTkIDAyEIAgAgLfeegvZ2dnYvHkz7rnnHuv5Lnf5+a52jqVLl9ryFgAAFosInc61Vzx1JKVSAa1WA52uA2az664tIhfsh3NhP5wPe+JYN6YMwj9qSrBt72lMSgqz/lt8JY7qh1ar6ffVIJvCTfftqLq6OgwZMsS6va6uDgkJCX0eExQU1OP/NRoNoqOjUVtbi4CAAHh7e6Ouruf6FXV1dQgPD+/XOa6VyYUXBBsoZrOFXycnwn44F/bD+bAnjpExMhwbvyrD+fo2FJU3IX5wQL+Ok7IfNt0QS0xMhK+vL3Jzc63bdDodTpw4gfT09F77b9y4ERkZGWhv/+4qSWtrK8rLyzFixAgIgoBx48bhwIEDPY7Lzc1FWlpav85BREREjuPtpULGyK4LDrtcZGCxTeFGrVZjwYIFeOWVV7Bz504UFxfjkUceQUREBGbMmAGz2Yz6+nro9XoAQFZWFiwWCx5//HGUlZXh6NGjWLZsGYKCgjBnzhwAwAMPPIDt27fj/fffx6lTp/DSSy+hqKgICxcu7Pc5iIiIyHGyx0YBAPKL63Cxve957ZyJzUOZly9fjrvvvhtPPfUU5s2bB6VSiffeew8eHh6orq7GlClT8MknnwDouo21Zs0atLe3Y968eVi0aBH8/Pywdu1aeHp6AgCmTJmCP/7xj1i/fj3uvPNO7N+/H3/961+tj3735xxERETkODGRWgyN8IPJLOLbo72fjnY2giiKotRFDDSz2YLGxjapy3BaKpUCgYE+aGpq4/1rJ8B+OBf2w/mwJwNj95EqrPm0GGEBGvzxZxOhuMLAYkf1IyjIp98DijkpABEREV1VxshwaDyVqGvuQFF5k9Tl/CCGGyIiIroqT7USN4zqemra2debYrghIiKifuleTPNQWQOaLhokrubKGG6IiIioX6JDfREX7Q+LKGJPYZXU5VwRww0RERH129RLj4V/c7gKZotzDuBmuCEiIqJ+G58QBl+NB5ouGlB46oLU5fSJ4YaIiIj6zUOlwJTk7oHFznlriuGGiIiIbHJjatfA4mOnL6C+uUPianpjuCEiIiKbhAd6Y9SwQIjomtzP2TDcEBERkc2yx0YDAPYcqYLJ7FwDixluiIiIyGYpI4IR4KuGrr0TB0vrpS6nB4YbIiIisplKqUBWStfYG2ebsZjhhoiIiK5JVsogCAJQfK4Z1RecZ0FqhhsiIiK6JkFaL6TEhgBwrsfCGW6IiIjommVfmrH426PVMHaaJa6mC8MNERERXbPRw4MQ4u+FdoMJB4rqpC4HAMMNERERXQeFIFgn9dt12DkGFjPcEBER0XWZkjwISoWA01U6lNfopC6H4YaIiIiuj7+PGuMTQgEAXx+U/uoNww0RERFdt+zUroHFOcdq0K7vlLQWhhsiIiK6bglDAhAZ7A290YxdByslrYXhhoiIiK6bIAjWqzdfHjgnaS0MN0RERGQXk8dEIDLYGyEBGknrUEn66kRERCQb3l4eePHhGxAY6IOmJumWY+CVGyIiIpIVhhsiIiKSFYYbIiIikhWGGyIiIpIVhhsiIiKSFYYbIiIikhWGGyIiIpIVhhsiIiKSFYYbIiIikhWGGyIiIpIVhhsiIiKSFYYbIiIikhWGGyIiIpIVhhsiIiKSFUEURVHqIgaaKIqwWNzubdtEqVTAbLZIXQZdwn44F/bD+bAnzsUR/VAoBAiC0K993TLcEBERkXzxthQRERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsMNERERyQrDDREREckKww0RERHJCsONG7BYLHjzzTeRmZmJ1NRULFmyBBUVFVfcv6mpCb/+9a+Rnp6OCRMm4LnnnkNHR0ePfQoLC3HfffchOTkZN954I958801YLPZd3l6uHNGP7du347bbbkNKSgpmzpyJLVu2OPhdyIet/bj8uMWLF+PPf/5zr899+umnmDlzJpKTkzF79mzk5OQ4onTZsndPLBYL3n33Xdxyyy1ITU3FrFmzsGnTJkeVLzuO+B7pZjQa8eMf/xi/+c1v7FkyIJLs/fnPfxYzMjLEr7/+WiwqKhIffPBBccaMGaLBYOhz/wULFoh33XWXeOzYMXHfvn3i1KlTxccff9z6+dOnT4spKSni008/LZ45c0b87LPPxLFjx4p/+9vfBuotuTR79yMnJ0dMSkoS169fL547d0785z//KSYmJoq7du0aqLfk0mzthyiKosFgEJ944gkxPj5efPPNN3t8LicnRxw1apT4wQcfiCdPnhRfeOEFcfTo0eLJkycd/VZkw949efvtt8W0tDRx+/bt4tmzZ8UNGzaISUlJ4scff+zgdyIP9u7H5VasWCHGx8eLTzzxhF1rZriROYPBII4dO1b88MMPrdtaWlrE5ORkcdu2bb32P3jwoBgfH9/jB/GePXvEhIQEsaamRhRFUXziiSfEu+66S7RYLNZ93njjDfHnP/+5A9+JPDiiH7///e/FO++8s8dxs2fPFlesWOGgdyEftvZDFEWxoKBAnDVrljht2jQxLS2t1w/uBx98UPzlL3/ZY9u9994rPv3003avX44c0ZPMzEzx7bff7rHtySefFOfPn2//NyAzjuhHt927d4s33HCDOGvWLLuHG96Wkrni4mK0tbVh0qRJ1m1arRZJSUnIy8vrtX9+fj5CQ0MRGxtr3TZhwgQIgoCCggIAwN69e3HbbbdBEATrPsuXL8eqVasc+E7kwRH9CA4ORllZGfbv3w9RFJGbm4tTp04hOTnZ8W/IxdnaDwD45ptvkJmZiS1btsDPz6/H5ywWCw4ePNjjfACQkZFxxfNRT47oyYsvvog777yzx3aFQgGdTmf/NyAz9u5Ht8bGRjz55JNYsWIFAgMD7V63yu5nJKdSU1MDAIiMjOyxPSwszPq5y9XW1vbaV61WIyAgANXV1WhtbUV9fT38/Pzw//7f/8Pu3buh1Woxe/ZsPPTQQ1AqlY57MzJg734AwE9/+lMUFhZi4cKFUCqVMJvN+PnPf47bb7/dQe9CPmztBwA88sgjVzyfTqdDe3s7IiIi+n0+6snePVEoFL3CZlVVFbZv3465c+deZ7XyZ+9+dPvtb3+LqVOn4qabbsL7779//YV+D6/cyFz3wFO1Wt1ju6enJwwGQ5/7f3/fy/dvbW0FALz44osYNGgQ/v73v2Px4sV45513fnDQGHWxdz8AoLq6Gk1NTXjmmWfw0Ucf4Te/+Q3ef/99/Pvf/3bAO5AXW/txNXq93q7nc0f27sn3NTQ0YMmSJQgODsbDDz983eeTO0f0Y8OGDTh16hSefPLJ667vSnjlRua8vLwAdI1I7/5vADAYDNBoNH3ubzQae203GAzw9vaGStX1V+aGG27A//7v/wIARo4cicbGRvzlL3/BL3/5yx63q6gne/cDAJYtW4bbbrsN9913H4CufrS0tODll1/GnDlzoFDwd5grsbUfV+Pp6Wk93+Wu9XzuyN49udzp06exdOlSmM1mrF27Flqt9rrO5w7s3Y/Tp0/j5ZdfxnvvvWf9GeYI/Kknc92XEuvq6npsr6urQ3h4eK/9IyIieu1rNBrR3NyMsLAwBAYGwtPTE/Hx8T32iYuLQ3t7OxobG+38DuTF3v1obGzE6dOnMWbMmB77pKamorm5Gc3NzfZ9AzJjaz+uJiAgAN7e3nY7nzuyd0+6FRQUYO7cudBoNNiwYQMGDx58XXW6C3v345NPPkFbWxseeOABjB07FmPHjkV+fj62bduGsWPH2qVmgOFG9hITE+Hr64vc3FzrNp1OhxMnTiA9Pb3X/unp6aipqcHZs2et2w4cOAAAGD9+PJRKJcaNG4cjR470OK6kpARarRYBAQGOeSMyYe9++Pv7Q6PRoKSkpMdx3f0ICgpy0DuRB1v7cTWCIGDcuHHWHnXLzc1FWlraddfrDuzdE6BrXq7FixcjLi4OH374IYOmDezdjwULFuDzzz/Hli1brB+jR4/GTTfdZNf5uXhbSubUajUWLFiAV155BUFBQYiKisLLL7+MiIgIzJgxA2azGY2NjfDz84OXlxdSUlIwbtw4PPLII3j22WfR3t6OZ555BrNnz7b+QHj44YfxwAMP4M9//jPuuOMOHDt2DH/729+waNEiDii+Ckf04/7778eqVasQGhqK8ePHo6CgAO+88w7+53/+R+J36/xs7Ud/PPDAA1i6dCmSkpKQlZWFjz76CEVFRfjDH/7g4HcjD/buiclkwqOPPorg4GC88MILMBgMqK+vBwAolUr+AnAV9u5HQEBAr1+Cvby84OPjg6FDh9qvcLs+WE5OyWQyiS+99JI4ceJEMTU1VVyyZIlYUVEhiqIoVlRUiPHx8eJHH31k3b+hoUFctmyZmJqaKmZkZIi/+93vRL1e3+Ocu3fvFu+8805x1KhRYnZ2tvjOO++IZrN5QN+Xq7J3P0wmk7h69WrxRz/6kZiSkiLOmjVLXLduXY95iOjKbO3H5aZOndrnHB4ff/yxOH36dHHMmDHinXfeKe7bt8+h70Fu7NmTgoICMT4+vs+PqVOnDsj7cXWO+B653IIFC+w+z40giqJov6hEREREJC2OuSEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWWG4ISIiIllhuCEiIiJZYbghIiIiWfn/EvMoV1p799QAAAAASUVORK5CYII=",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"## tune learning_rate\n",
|
|
"model = AdaBoostRegressor()\n",
|
|
"#params = np.arange(0.1, 1, 0.1) ## vorlage\n",
|
|
"params = np.arange(0.05, 0.15, 0.01) ## loesung\n",
|
|
"scores = []\n",
|
|
"\n",
|
|
"for param in params:\n",
|
|
" model.set_params(learning_rate=param, random_state=1234)\n",
|
|
" model.fit(X_train, y_train)\n",
|
|
" score = model.score(X_test, y_test)\n",
|
|
" scores.append(score)\n",
|
|
" print(param, score)\n",
|
|
"\n",
|
|
"sns.lineplot(x=params, y=scores);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"10 0.7557299631257758\n",
|
|
"11 0.758500977810915\n",
|
|
"12 0.7626992985412937\n",
|
|
"13 0.7674329084019647\n",
|
|
"14 0.7671307844633629\n",
|
|
"15 0.7689296285653345\n",
|
|
"16 0.7655448595315713\n",
|
|
"17 0.7634543831075334\n",
|
|
"18 0.7565334380954082\n",
|
|
"19 0.7633021297334406\n"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"C:\\Users\\werne\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
|
" with pd.option_context('mode.use_inf_as_na', True):\n",
|
|
"C:\\Users\\werne\\anaconda3\\Lib\\site-packages\\seaborn\\_oldcore.py:1119: FutureWarning: use_inf_as_na option is deprecated and will be removed in a future version. Convert inf values to NaN before operating instead.\n",
|
|
" with pd.option_context('mode.use_inf_as_na', True):\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"image/png": "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",
|
|
"text/plain": [
|
|
"<Figure size 640x480 with 1 Axes>"
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"## tune max_depth\n",
|
|
"from sklearn.tree import DecisionTreeRegressor\n",
|
|
"model = AdaBoostRegressor()\n",
|
|
"#params = range(1, 11) ## vorlage\n",
|
|
"params = range(10, 20) ## loesung\n",
|
|
"scores = []\n",
|
|
"\n",
|
|
"for param in params:\n",
|
|
" model.set_params(\n",
|
|
" estimator=DecisionTreeRegressor(max_depth=param),\n",
|
|
" random_state=1234\n",
|
|
" )\n",
|
|
" model.fit(X_train, y_train)\n",
|
|
" score = model.score(X_test, y_test)\n",
|
|
" scores.append(score)\n",
|
|
" print(param, score)\n",
|
|
"\n",
|
|
"sns.lineplot(x=params, y=scores);"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"0.7633058383893074\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"## best combination of single parameters\n",
|
|
"from sklearn.tree import DecisionTreeRegressor\n",
|
|
"from sklearn.ensemble import AdaBoostRegressor\n",
|
|
"model=AdaBoostRegressor(\n",
|
|
" estimator=DecisionTreeRegressor(max_depth=15),\n",
|
|
" learning_rate=0.07,\n",
|
|
" random_state=1234\n",
|
|
")\n",
|
|
"model.fit(X_train, y_train)\n",
|
|
"print(model.score(X_test, y_test))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"**Fazit**:\n",
|
|
"* ideal wäre eine kombinierte Suche (Ausblick auf GridSearch und RandomSearch)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"Help on class AdaBoostRegressor in module sklearn.ensemble._weight_boosting:\n",
|
|
"\n",
|
|
"class AdaBoostRegressor(sklearn.utils._metadata_requests._RoutingNotSupportedMixin, sklearn.base.RegressorMixin, BaseWeightBoosting)\n",
|
|
" | AdaBoostRegressor(estimator=None, *, n_estimators=50, learning_rate=1.0, loss='linear', random_state=None)\n",
|
|
" | \n",
|
|
" | An AdaBoost regressor.\n",
|
|
" | \n",
|
|
" | An AdaBoost [1] regressor is a meta-estimator that begins by fitting a\n",
|
|
" | regressor on the original dataset and then fits additional copies of the\n",
|
|
" | regressor on the same dataset but where the weights of instances are\n",
|
|
" | adjusted according to the error of the current prediction. As such,\n",
|
|
" | subsequent regressors focus more on difficult cases.\n",
|
|
" | \n",
|
|
" | This class implements the algorithm known as AdaBoost.R2 [2].\n",
|
|
" | \n",
|
|
" | Read more in the :ref:`User Guide <adaboost>`.\n",
|
|
" | \n",
|
|
" | .. versionadded:: 0.14\n",
|
|
" | \n",
|
|
" | Parameters\n",
|
|
" | ----------\n",
|
|
" | estimator : object, default=None\n",
|
|
" | The base estimator from which the boosted ensemble is built.\n",
|
|
" | If ``None``, then the base estimator is\n",
|
|
" | :class:`~sklearn.tree.DecisionTreeRegressor` initialized with\n",
|
|
" | `max_depth=3`.\n",
|
|
" | \n",
|
|
" | .. versionadded:: 1.2\n",
|
|
" | `base_estimator` was renamed to `estimator`.\n",
|
|
" | \n",
|
|
" | n_estimators : int, default=50\n",
|
|
" | The maximum number of estimators at which boosting is terminated.\n",
|
|
" | In case of perfect fit, the learning procedure is stopped early.\n",
|
|
" | Values must be in the range `[1, inf)`.\n",
|
|
" | \n",
|
|
" | learning_rate : float, default=1.0\n",
|
|
" | Weight applied to each regressor at each boosting iteration. A higher\n",
|
|
" | learning rate increases the contribution of each regressor. There is\n",
|
|
" | a trade-off between the `learning_rate` and `n_estimators` parameters.\n",
|
|
" | Values must be in the range `(0.0, inf)`.\n",
|
|
" | \n",
|
|
" | loss : {'linear', 'square', 'exponential'}, default='linear'\n",
|
|
" | The loss function to use when updating the weights after each\n",
|
|
" | boosting iteration.\n",
|
|
" | \n",
|
|
" | random_state : int, RandomState instance or None, default=None\n",
|
|
" | Controls the random seed given at each `estimator` at each\n",
|
|
" | boosting iteration.\n",
|
|
" | Thus, it is only used when `estimator` exposes a `random_state`.\n",
|
|
" | In addition, it controls the bootstrap of the weights used to train the\n",
|
|
" | `estimator` at each boosting iteration.\n",
|
|
" | Pass an int for reproducible output across multiple function calls.\n",
|
|
" | See :term:`Glossary <random_state>`.\n",
|
|
" | \n",
|
|
" | Attributes\n",
|
|
" | ----------\n",
|
|
" | estimator_ : estimator\n",
|
|
" | The base estimator from which the ensemble is grown.\n",
|
|
" | \n",
|
|
" | .. versionadded:: 1.2\n",
|
|
" | `base_estimator_` was renamed to `estimator_`.\n",
|
|
" | \n",
|
|
" | estimators_ : list of regressors\n",
|
|
" | The collection of fitted sub-estimators.\n",
|
|
" | \n",
|
|
" | estimator_weights_ : ndarray of floats\n",
|
|
" | Weights for each estimator in the boosted ensemble.\n",
|
|
" | \n",
|
|
" | estimator_errors_ : ndarray of floats\n",
|
|
" | Regression error for each estimator in the boosted ensemble.\n",
|
|
" | \n",
|
|
" | feature_importances_ : ndarray of shape (n_features,)\n",
|
|
" | The impurity-based feature importances if supported by the\n",
|
|
" | ``estimator`` (when based on decision trees).\n",
|
|
" | \n",
|
|
" | Warning: impurity-based feature importances can be misleading for\n",
|
|
" | high cardinality features (many unique values). See\n",
|
|
" | :func:`sklearn.inspection.permutation_importance` as an alternative.\n",
|
|
" | \n",
|
|
" | n_features_in_ : int\n",
|
|
" | Number of features seen during :term:`fit`.\n",
|
|
" | \n",
|
|
" | .. versionadded:: 0.24\n",
|
|
" | \n",
|
|
" | feature_names_in_ : ndarray of shape (`n_features_in_`,)\n",
|
|
" | Names of features seen during :term:`fit`. Defined only when `X`\n",
|
|
" | has feature names that are all strings.\n",
|
|
" | \n",
|
|
" | .. versionadded:: 1.0\n",
|
|
" | \n",
|
|
" | See Also\n",
|
|
" | --------\n",
|
|
" | AdaBoostClassifier : An AdaBoost classifier.\n",
|
|
" | GradientBoostingRegressor : Gradient Boosting Classification Tree.\n",
|
|
" | sklearn.tree.DecisionTreeRegressor : A decision tree regressor.\n",
|
|
" | \n",
|
|
" | References\n",
|
|
" | ----------\n",
|
|
" | .. [1] Y. Freund, R. Schapire, \"A Decision-Theoretic Generalization of\n",
|
|
" | on-Line Learning and an Application to Boosting\", 1995.\n",
|
|
" | \n",
|
|
" | .. [2] H. Drucker, \"Improving Regressors using Boosting Techniques\", 1997.\n",
|
|
" | \n",
|
|
" | Examples\n",
|
|
" | --------\n",
|
|
" | >>> from sklearn.ensemble import AdaBoostRegressor\n",
|
|
" | >>> from sklearn.datasets import make_regression\n",
|
|
" | >>> X, y = make_regression(n_features=4, n_informative=2,\n",
|
|
" | ... random_state=0, shuffle=False)\n",
|
|
" | >>> regr = AdaBoostRegressor(random_state=0, n_estimators=100)\n",
|
|
" | >>> regr.fit(X, y)\n",
|
|
" | AdaBoostRegressor(n_estimators=100, random_state=0)\n",
|
|
" | >>> regr.predict([[0, 0, 0, 0]])\n",
|
|
" | array([4.7972...])\n",
|
|
" | >>> regr.score(X, y)\n",
|
|
" | 0.9771...\n",
|
|
" | \n",
|
|
" | Method resolution order:\n",
|
|
" | AdaBoostRegressor\n",
|
|
" | sklearn.utils._metadata_requests._RoutingNotSupportedMixin\n",
|
|
" | sklearn.base.RegressorMixin\n",
|
|
" | BaseWeightBoosting\n",
|
|
" | sklearn.ensemble._base.BaseEnsemble\n",
|
|
" | sklearn.base.MetaEstimatorMixin\n",
|
|
" | sklearn.base.BaseEstimator\n",
|
|
" | sklearn.utils._estimator_html_repr._HTMLDocumentationLinkMixin\n",
|
|
" | sklearn.utils._metadata_requests._MetadataRequester\n",
|
|
" | builtins.object\n",
|
|
" | \n",
|
|
" | Methods defined here:\n",
|
|
" | \n",
|
|
" | __init__(self, estimator=None, *, n_estimators=50, learning_rate=1.0, loss='linear', random_state=None)\n",
|
|
" | Initialize self. See help(type(self)) for accurate signature.\n",
|
|
" | \n",
|
|
" | predict(self, X)\n",
|
|
" | Predict regression value for X.\n",
|
|
" | \n",
|
|
" | The predicted regression value of an input sample is computed\n",
|
|
" | as the weighted median prediction of the regressors in the ensemble.\n",
|
|
" | \n",
|
|
" | Parameters\n",
|
|
" | ----------\n",
|
|
" | X : {array-like, sparse matrix} of shape (n_samples, n_features)\n",
|
|
" | The training input samples. Sparse matrix can be CSC, CSR, COO,\n",
|
|
" | DOK, or LIL. COO, DOK, and LIL are converted to CSR.\n",
|
|
" | \n",
|
|
" | Returns\n",
|
|
" | -------\n",
|
|
" | y : ndarray of shape (n_samples,)\n",
|
|
" | The predicted regression values.\n",
|
|
" | \n",
|
|
" | set_fit_request(self: sklearn.ensemble._weight_boosting.AdaBoostRegressor, *, sample_weight: Union[bool, NoneType, str] = '$UNCHANGED$') -> sklearn.ensemble._weight_boosting.AdaBoostRegressor\n",
|
|
" | Request metadata passed to the ``fit`` method.\n",
|
|
" | \n",
|
|
" | Note that this method is only relevant if\n",
|
|
" | ``enable_metadata_routing=True`` (see :func:`sklearn.set_config`).\n",
|
|
" | Please see :ref:`User Guide <metadata_routing>` on how the routing\n",
|
|
" | mechanism works.\n",
|
|
" | \n",
|
|
" | The options for each parameter are:\n",
|
|
" | \n",
|
|
" | - ``True``: metadata is requested, and passed to ``fit`` if provided. The request is ignored if metadata is not provided.\n",
|
|
" | \n",
|
|
" | - ``False``: metadata is not requested and the meta-estimator will not pass it to ``fit``.\n",
|
|
" | \n",
|
|
" | - ``None``: metadata is not requested, and the meta-estimator will raise an error if the user provides it.\n",
|
|
" | \n",
|
|
" | - ``str``: metadata should be passed to the meta-estimator with this given alias instead of the original name.\n",
|
|
" | \n",
|
|
" | The default (``sklearn.utils.metadata_routing.UNCHANGED``) retains the\n",
|
|
" | existing request. This allows you to change the request for some\n",
|
|
" | parameters and not others.\n",
|
|
" | \n",
|
|
" | .. versionadded:: 1.3\n",
|
|
" | \n",
|
|
" | .. note::\n",
|
|
" | This method is only relevant if this estimator is used as a\n",
|
|
" | sub-estimator of a meta-estimator, e.g. used inside a\n",
|
|
" | :class:`~sklearn.pipeline.Pipeline`. Otherwise it has no effect.\n",
|
|
" | \n",
|
|
" | Parameters\n",
|
|
" | ----------\n",
|
|
" | sample_weight : str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED\n",
|
|
" | Metadata routing for ``sample_weight`` parameter in ``fit``.\n",
|
|
" | \n",
|
|
" | Returns\n",
|
|
" | -------\n",
|
|
" | self : object\n",
|
|
" | The updated object.\n",
|
|
" | \n",
|
|
" | set_score_request(self: sklearn.ensemble._weight_boosting.AdaBoostRegressor, *, sample_weight: Union[bool, NoneType, str] = '$UNCHANGED$') -> sklearn.ensemble._weight_boosting.AdaBoostRegressor\n",
|
|
" | Request metadata passed to the ``score`` method.\n",
|
|
" | \n",
|
|
" | Note that this method is only relevant if\n",
|
|
" | ``enable_metadata_routing=True`` (see :func:`sklearn.set_config`).\n",
|
|
" | Please see :ref:`User Guide <metadata_routing>` on how the routing\n",
|
|
" | mechanism works.\n",
|
|
" | \n",
|
|
" | The options for each parameter are:\n",
|
|
" | \n",
|
|
" | - ``True``: metadata is requested, and passed to ``score`` if provided. The request is ignored if metadata is not provided.\n",
|
|
" | \n",
|
|
" | - ``False``: metadata is not requested and the meta-estimator will not pass it to ``score``.\n",
|
|
" | \n",
|
|
" | - ``None``: metadata is not requested, and the meta-estimator will raise an error if the user provides it.\n",
|
|
" | \n",
|
|
" | - ``str``: metadata should be passed to the meta-estimator with this given alias instead of the original name.\n",
|
|
" | \n",
|
|
" | The default (``sklearn.utils.metadata_routing.UNCHANGED``) retains the\n",
|
|
" | existing request. This allows you to change the request for some\n",
|
|
" | parameters and not others.\n",
|
|
" | \n",
|
|
" | .. versionadded:: 1.3\n",
|
|
" | \n",
|
|
" | .. note::\n",
|
|
" | This method is only relevant if this estimator is used as a\n",
|
|
" | sub-estimator of a meta-estimator, e.g. used inside a\n",
|
|
" | :class:`~sklearn.pipeline.Pipeline`. Otherwise it has no effect.\n",
|
|
" | \n",
|
|
" | Parameters\n",
|
|
" | ----------\n",
|
|
" | sample_weight : str, True, False, or None, default=sklearn.utils.metadata_routing.UNCHANGED\n",
|
|
" | Metadata routing for ``sample_weight`` parameter in ``score``.\n",
|
|
" | \n",
|
|
" | Returns\n",
|
|
" | -------\n",
|
|
" | self : object\n",
|
|
" | The updated object.\n",
|
|
" | \n",
|
|
" | staged_predict(self, X)\n",
|
|
" | Return staged predictions for X.\n",
|
|
" | \n",
|
|
" | The predicted regression value of an input sample is computed\n",
|
|
" | as the weighted median prediction of the regressors in the ensemble.\n",
|
|
" | \n",
|
|
" | This generator method yields the ensemble prediction after each\n",
|
|
" | iteration of boosting and therefore allows monitoring, such as to\n",
|
|
" | determine the prediction on a test set after each boost.\n",
|
|
" | \n",
|
|
" | Parameters\n",
|
|
" | ----------\n",
|
|
" | X : {array-like, sparse matrix} of shape (n_samples, n_features)\n",
|
|
" | The training input samples.\n",
|
|
" | \n",
|
|
" | Yields\n",
|
|
" | ------\n",
|
|
" | y : generator of ndarray of shape (n_samples,)\n",
|
|
" | The predicted regression values.\n",
|
|
" | \n",
|
|
" | ----------------------------------------------------------------------\n",
|
|
" | Data and other attributes defined here:\n",
|
|
" | \n",
|
|
" | __abstractmethods__ = frozenset()\n",
|
|
" | \n",
|
|
" | __annotations__ = {'_parameter_constraints': <class 'dict'>}\n",
|
|
" | \n",
|
|
" | ----------------------------------------------------------------------\n",
|
|
" | Methods inherited from sklearn.utils._metadata_requests._RoutingNotSupportedMixin:\n",
|
|
" | \n",
|
|
" | get_metadata_routing(self)\n",
|
|
" | Raise `NotImplementedError`.\n",
|
|
" | \n",
|
|
" | This estimator does not support metadata routing yet.\n",
|
|
" | \n",
|
|
" | ----------------------------------------------------------------------\n",
|
|
" | Data descriptors inherited from sklearn.utils._metadata_requests._RoutingNotSupportedMixin:\n",
|
|
" | \n",
|
|
" | __dict__\n",
|
|
" | dictionary for instance variables\n",
|
|
" | \n",
|
|
" | __weakref__\n",
|
|
" | list of weak references to the object\n",
|
|
" | \n",
|
|
" | ----------------------------------------------------------------------\n",
|
|
" | Methods inherited from sklearn.base.RegressorMixin:\n",
|
|
" | \n",
|
|
" | score(self, X, y, sample_weight=None)\n",
|
|
" | Return the coefficient of determination of the prediction.\n",
|
|
" | \n",
|
|
" | The coefficient of determination :math:`R^2` is defined as\n",
|
|
" | :math:`(1 - \\frac{u}{v})`, where :math:`u` is the residual\n",
|
|
" | sum of squares ``((y_true - y_pred)** 2).sum()`` and :math:`v`\n",
|
|
" | is the total sum of squares ``((y_true - y_true.mean()) ** 2).sum()``.\n",
|
|
" | The best possible score is 1.0 and it can be negative (because the\n",
|
|
" | model can be arbitrarily worse). A constant model that always predicts\n",
|
|
" | the expected value of `y`, disregarding the input features, would get\n",
|
|
" | a :math:`R^2` score of 0.0.\n",
|
|
" | \n",
|
|
" | Parameters\n",
|
|
" | ----------\n",
|
|
" | X : array-like of shape (n_samples, n_features)\n",
|
|
" | Test samples. For some estimators this may be a precomputed\n",
|
|
" | kernel matrix or a list of generic objects instead with shape\n",
|
|
" | ``(n_samples, n_samples_fitted)``, where ``n_samples_fitted``\n",
|
|
" | is the number of samples used in the fitting for the estimator.\n",
|
|
" | \n",
|
|
" | y : array-like of shape (n_samples,) or (n_samples, n_outputs)\n",
|
|
" | True values for `X`.\n",
|
|
" | \n",
|
|
" | sample_weight : array-like of shape (n_samples,), default=None\n",
|
|
" | Sample weights.\n",
|
|
" | \n",
|
|
" | Returns\n",
|
|
" | -------\n",
|
|
" | score : float\n",
|
|
" | :math:`R^2` of ``self.predict(X)`` w.r.t. `y`.\n",
|
|
" | \n",
|
|
" | Notes\n",
|
|
" | -----\n",
|
|
" | The :math:`R^2` score used when calling ``score`` on a regressor uses\n",
|
|
" | ``multioutput='uniform_average'`` from version 0.23 to keep consistent\n",
|
|
" | with default value of :func:`~sklearn.metrics.r2_score`.\n",
|
|
" | This influences the ``score`` method of all the multioutput\n",
|
|
" | regressors (except for\n",
|
|
" | :class:`~sklearn.multioutput.MultiOutputRegressor`).\n",
|
|
" | \n",
|
|
" | ----------------------------------------------------------------------\n",
|
|
" | Methods inherited from BaseWeightBoosting:\n",
|
|
" | \n",
|
|
" | fit(self, X, y, sample_weight=None)\n",
|
|
" | Build a boosted classifier/regressor from the training set (X, y).\n",
|
|
" | \n",
|
|
" | Parameters\n",
|
|
" | ----------\n",
|
|
" | X : {array-like, sparse matrix} of shape (n_samples, n_features)\n",
|
|
" | The training input samples. Sparse matrix can be CSC, CSR, COO,\n",
|
|
" | DOK, or LIL. COO, DOK, and LIL are converted to CSR.\n",
|
|
" | \n",
|
|
" | y : array-like of shape (n_samples,)\n",
|
|
" | The target values.\n",
|
|
" | \n",
|
|
" | sample_weight : array-like of shape (n_samples,), default=None\n",
|
|
" | Sample weights. If None, the sample weights are initialized to\n",
|
|
" | 1 / n_samples.\n",
|
|
" | \n",
|
|
" | Returns\n",
|
|
" | -------\n",
|
|
" | self : object\n",
|
|
" | Fitted estimator.\n",
|
|
" | \n",
|
|
" | staged_score(self, X, y, sample_weight=None)\n",
|
|
" | Return staged scores for X, y.\n",
|
|
" | \n",
|
|
" | This generator method yields the ensemble score after each iteration of\n",
|
|
" | boosting and therefore allows monitoring, such as to determine the\n",
|
|
" | score on a test set after each boost.\n",
|
|
" | \n",
|
|
" | Parameters\n",
|
|
" | ----------\n",
|
|
" | X : {array-like, sparse matrix} of shape (n_samples, n_features)\n",
|
|
" | The training input samples. Sparse matrix can be CSC, CSR, COO,\n",
|
|
" | DOK, or LIL. COO, DOK, and LIL are converted to CSR.\n",
|
|
" | \n",
|
|
" | y : array-like of shape (n_samples,)\n",
|
|
" | Labels for X.\n",
|
|
" | \n",
|
|
" | sample_weight : array-like of shape (n_samples,), default=None\n",
|
|
" | Sample weights.\n",
|
|
" | \n",
|
|
" | Yields\n",
|
|
" | ------\n",
|
|
" | z : float\n",
|
|
" | \n",
|
|
" | ----------------------------------------------------------------------\n",
|
|
" | Readonly properties inherited from BaseWeightBoosting:\n",
|
|
" | \n",
|
|
" | feature_importances_\n",
|
|
" | The impurity-based feature importances.\n",
|
|
" | \n",
|
|
" | The higher, the more important the feature.\n",
|
|
" | The importance of a feature is computed as the (normalized)\n",
|
|
" | total reduction of the criterion brought by that feature. It is also\n",
|
|
" | known as the Gini importance.\n",
|
|
" | \n",
|
|
" | Warning: impurity-based feature importances can be misleading for\n",
|
|
" | high cardinality features (many unique values). See\n",
|
|
" | :func:`sklearn.inspection.permutation_importance` as an alternative.\n",
|
|
" | \n",
|
|
" | Returns\n",
|
|
" | -------\n",
|
|
" | feature_importances_ : ndarray of shape (n_features,)\n",
|
|
" | The feature importances.\n",
|
|
" | \n",
|
|
" | ----------------------------------------------------------------------\n",
|
|
" | Methods inherited from sklearn.ensemble._base.BaseEnsemble:\n",
|
|
" | \n",
|
|
" | __getitem__(self, index)\n",
|
|
" | Return the index'th estimator in the ensemble.\n",
|
|
" | \n",
|
|
" | __iter__(self)\n",
|
|
" | Return iterator over estimators in the ensemble.\n",
|
|
" | \n",
|
|
" | __len__(self)\n",
|
|
" | Return the number of estimators in the ensemble.\n",
|
|
" | \n",
|
|
" | ----------------------------------------------------------------------\n",
|
|
" | Methods inherited from sklearn.base.BaseEstimator:\n",
|
|
" | \n",
|
|
" | __getstate__(self)\n",
|
|
" | Helper for pickle.\n",
|
|
" | \n",
|
|
" | __repr__(self, N_CHAR_MAX=700)\n",
|
|
" | Return repr(self).\n",
|
|
" | \n",
|
|
" | __setstate__(self, state)\n",
|
|
" | \n",
|
|
" | __sklearn_clone__(self)\n",
|
|
" | \n",
|
|
" | get_params(self, deep=True)\n",
|
|
" | Get parameters for this estimator.\n",
|
|
" | \n",
|
|
" | Parameters\n",
|
|
" | ----------\n",
|
|
" | deep : bool, default=True\n",
|
|
" | If True, will return the parameters for this estimator and\n",
|
|
" | contained subobjects that are estimators.\n",
|
|
" | \n",
|
|
" | Returns\n",
|
|
" | -------\n",
|
|
" | params : dict\n",
|
|
" | Parameter names mapped to their values.\n",
|
|
" | \n",
|
|
" | set_params(self, **params)\n",
|
|
" | Set the parameters of this estimator.\n",
|
|
" | \n",
|
|
" | The method works on simple estimators as well as on nested objects\n",
|
|
" | (such as :class:`~sklearn.pipeline.Pipeline`). The latter have\n",
|
|
" | parameters of the form ``<component>__<parameter>`` so that it's\n",
|
|
" | possible to update each component of a nested object.\n",
|
|
" | \n",
|
|
" | Parameters\n",
|
|
" | ----------\n",
|
|
" | **params : dict\n",
|
|
" | Estimator parameters.\n",
|
|
" | \n",
|
|
" | Returns\n",
|
|
" | -------\n",
|
|
" | self : estimator instance\n",
|
|
" | Estimator instance.\n",
|
|
" | \n",
|
|
" | ----------------------------------------------------------------------\n",
|
|
" | Class methods inherited from sklearn.utils._metadata_requests._MetadataRequester:\n",
|
|
" | \n",
|
|
" | __init_subclass__(**kwargs) from abc.ABCMeta\n",
|
|
" | Set the ``set_{method}_request`` methods.\n",
|
|
" | \n",
|
|
" | This uses PEP-487 [1]_ to set the ``set_{method}_request`` methods. It\n",
|
|
" | looks for the information available in the set default values which are\n",
|
|
" | set using ``__metadata_request__*`` class attributes, or inferred\n",
|
|
" | from method signatures.\n",
|
|
" | \n",
|
|
" | The ``__metadata_request__*`` class attributes are used when a method\n",
|
|
" | does not explicitly accept a metadata through its arguments or if the\n",
|
|
" | developer would like to specify a request value for those metadata\n",
|
|
" | which are different from the default ``None``.\n",
|
|
" | \n",
|
|
" | References\n",
|
|
" | ----------\n",
|
|
" | .. [1] https://www.python.org/dev/peps/pep-0487\n",
|
|
"\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"help(AdaBoostRegressor)"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"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.11.7"
|
|
},
|
|
"toc": {
|
|
"base_numbering": "1",
|
|
"nav_menu": {},
|
|
"number_sections": false,
|
|
"sideBar": true,
|
|
"skip_h1_title": true,
|
|
"title_cell": "WS 11 Regression - mit FE - solution",
|
|
"title_sidebar": "Contents",
|
|
"toc_cell": true,
|
|
"toc_position": {
|
|
"height": "calc(100% - 180px)",
|
|
"left": "10px",
|
|
"top": "150px",
|
|
"width": "195.933px"
|
|
},
|
|
"toc_section_display": true,
|
|
"toc_window_display": true
|
|
},
|
|
"varInspector": {
|
|
"cols": {
|
|
"lenName": 16,
|
|
"lenType": 16,
|
|
"lenVar": 40
|
|
},
|
|
"kernels_config": {
|
|
"python": {
|
|
"delete_cmd_postfix": "",
|
|
"delete_cmd_prefix": "del ",
|
|
"library": "var_list.py",
|
|
"varRefreshCmd": "print(var_dic_list())"
|
|
},
|
|
"r": {
|
|
"delete_cmd_postfix": ") ",
|
|
"delete_cmd_prefix": "rm(",
|
|
"library": "var_list.r",
|
|
"varRefreshCmd": "cat(var_dic_list()) "
|
|
}
|
|
},
|
|
"position": {
|
|
"height": "321.85px",
|
|
"left": "785px",
|
|
"right": "20px",
|
|
"top": "118px",
|
|
"width": "350px"
|
|
},
|
|
"types_to_exclude": [
|
|
"module",
|
|
"function",
|
|
"builtin_function_or_method",
|
|
"instance",
|
|
"_Feature"
|
|
],
|
|
"window_display": false
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 4
|
|
}
|