commit ea014ed4cd52caa174a440059a49ff79396dfc2f
parent f1f6beef09a1cfcad9f2760d267435748806ea4f
Author: Andrew <andrewlaack1@gmail.com>
Date: Mon, 10 Jun 2024 09:56:10 -0500
Completed notes and implementation of gradient boosting and adaboosting for ensembles.
Diffstat:
2 files changed, 2963 insertions(+), 0 deletions(-)
diff --git a/decisionTreeRegression/DecisionTreeAndGradientBoostingQuadratic.ipynb b/decisionTreeRegression/DecisionTreeAndGradientBoostingQuadratic.ipynb
@@ -0,0 +1,2366 @@
+{
+ "cells": [
+ {
+ "cell_type": "code",
+ "execution_count": 54,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "<matplotlib.collections.PathCollection at 0x7fda6c2c6850>"
+ ]
+ },
+ "execution_count": 54,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8fJSN1AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA9K0lEQVR4nO3df3xU5Zn///ckkkQrmYCYTMzGhqJWU9QokDT+rg2FXWql7e4ilUKzVlsqrDXt9yHZfgpFuwa2tE1b+JBKtbplLVS//qjVTatBvl00mpY0uyCIlUJBzEQByWCQBGfO94/sjITMrzMzZ+acmdfz8ZhHm5NzMncOY+aa+77u63IZhmEIAADAIfIyPQAAAAAzCF4AAICjELwAAABHIXgBAACOQvACAAAcheAFAAA4CsELAABwFIIXAADgKKdlegCpFggE9Oabb2rs2LFyuVyZHg4AAIiDYRg6evSozjnnHOXlRZ9bybrg5c0331RlZWWmhwEAABKwf/9+/c3f/E3Uc7IueBk7dqyk4V++uLg4w6MBAADx8Pl8qqysDL2PR5N1wUtwqai4uJjgBQAAh4kn5YOEXQAA4CgELwAAwFEIXgAAgKMQvAAAAEcheAEAAI5C8AIAAByF4AUAADgKwQsAAHCUrCtSBwAAUsMfMNS157DeOnpcpWOLVDtxvPLzMt83kOAFAACM0r69V8uf2qHe/uOhY+XuIi27oVozJ5dncGQsGwEAgFO0b+/VwvXdIwIXSfL2H9fC9d1q396boZENI3gBAAAh/oCh5U/tkBHme8Fjy5/aIX8g3BnpQfACAABCuvYcHjXjcjJDUm//cXXtOZy+QZ2C4AUAAIS8dTRy4JLIeVYgeAEAACGlY4tSep4VCF4AAEBI7cTxKncXKdKGaJeGdx3VThyfzmGNQPACAABC8vNcWnZDtSSNCmCCXy+7oTqj9V4IXgAAwAgzJ5dr7bzL5XGPXBryuIu0dt7lGa/zQpE6AAAwyszJ5Zpe7aHCbjazawllAAASlZ/nUv2kszI9jFHSsmy0Zs0aVVVVqaioSHV1derq6op47nXXXSeXyzXqMWvWrHQMNSHt23t11cpNmrvuJd2xoUdz172kq1ZuilqB0B8w1Ln7kJ7sOaDO3YcyWuwHAAAnsXzmZePGjWpqalJbW5vq6urU2tqqGTNmaNeuXSotLR11/mOPPaahoaHQ14cOHdKll16qf/iHf7B6qAkJllA+NfQIllAOrg2ePDOz9+CAftm1T17fYOh8u/SLAABAsveKgsswDEs/8tfV1WnatGlavXq1JCkQCKiyslKLFy/WkiVLYl7f2tqqpUuXqre3Vx/60Idinu/z+eR2u9Xf36/i4uKkxx8U7h9Rkq5auSliJUKXhpObvj2rWvc8vSNqxcLgy8EOiVAAgNyWiaaMZt6/LZ15GRoa0tatW9Xc3Bw6lpeXp4aGBnV2dsb1M+6//37ddNNNEQOXwcFBDQ5+MIPh8/mSG3QYkf4Rb5p2blwllL/2cHfM5zA0HMAsf2qHpld7bBPdAgByS7wrCplkac7LwYMH5ff7VVZWNuJ4WVmZvF5vzOu7urq0fft2ffnLX454TktLi9xud+hRWVmZ9LhPFq2z5g+fey2lz2WHfhEAgNzlhKaMks3rvNx///26+OKLVVtbG/Gc5uZm9ff3hx779+9P2fPH849ohUz2iwAA5C4nNGWULF42mjBhgvLz89XX1zfieF9fnzweT9RrBwYGtGHDBt19991RzyssLFRhYWHSYw0n1j+iVTLZLwIAkLuc0JRRsnjmpaCgQFOmTFFHR0foWCAQUEdHh+rr66Ne+8gjj2hwcFDz5s2zcohRmfnHiVRC2Qw79IsAAOQuJzRllNKwbNTU1KR169bpoYce0s6dO7Vw4UINDAyosbFRkjR//vwRCb1B999/v2bPnq2zzspccZx4/3HubDg/bAnl//uFy6I2tzqZXfpFAABylxOaMkppqPMyZ84cvf3221q6dKm8Xq9qamrU3t4eSuLdt2+f8vJGxlC7du3Sli1b9Lvf/c7q4UUV/Ef09h8Pm+MS3Aq96Prztej688Puh8/Lc2nh+m65FD1PxkOdFwBAhgWbMoZ737LTh2zL67ykW6rrvAR3G0nh/xHj2TIWbat11YQzbFf8BwCQ2+xe54XgJQ6p+Ee0c6VCAEB2Sua9J93vWwQvaaqwS/ABALCrTMyeJIPgxYLgBQAAp4hUJdfOrWjMvH/bukgdAAAwxylVcpNB8JJi/oChzt2H9GTPAXXuPuToFwcAwHmcUiU3GZZvlc4lTltfBABkH6dUyU0GMy8pEq2B48L13Wrf3puhkQEAcomVVXLtsrrAzEsKxFpfdGl4fXF6tYcdSgAAS8VbYNVslVw7rS4w85ICubC+CABwhmCVXCly3z2zVXLttrpA8JICubC+CABwjpmTy7V23uVh++6Z3SZtx91LLBulgFO6cAIAcsfMyeWaXu1JusCqmdWF+knpaaZM8JICVq0vAgCQjPw8V9IBhR1XF1g2SgEr1hcBALADO64uELykSCrXFwEAsIvg6kKkj98uDe86SufqAstGKZSq9UUAAOwiuLqwcH23XNKI9IhMrS7QmBEAAMRkdZ0XM+/fzLwAAICY7LS6QPACAADikordS6lAwi4AAHAUghcAAOAoLBuliT9g2GKdEAAApyN4SQM7deIEAMDpWDaymN06cQIA4HQELxayYydOAACcjuDFQmY6cQIAgPgQvFjIjp04AQBwOoIXC9mxEycAAE5H8GIhO3biBADA6QheLBTsxClpVACTqU6cAAA4HcGLxWZOLtfaeZfL4x65NORxF2ntvMup8wIAgEkUqUsDO3XiBADA6dIy87JmzRpVVVWpqKhIdXV16urqinr+kSNHdPvtt6u8vFyFhYW64IIL9Mwzz6RjqJYJduK8saZC9ZPOInABACBBls+8bNy4UU1NTWpra1NdXZ1aW1s1Y8YM7dq1S6WlpaPOHxoa0vTp01VaWqpHH31UFRUV+utf/6qSkhKrh2or9EICACA8l2EYlpZ3raur07Rp07R69WpJUiAQUGVlpRYvXqwlS5aMOr+trU3f+9739Oqrr2rMmDGmn8/n88ntdqu/v1/FxcVJjz8T6IUEAMg1Zt6/LV02Ghoa0tatW9XQ0PDBE+blqaGhQZ2dnWGv+fWvf636+nrdfvvtKisr0+TJk3XvvffK7/eHPX9wcFA+n2/Ew8nohQQAQHSWBi8HDx6U3+9XWVnZiONlZWXyer1hr/nLX/6iRx99VH6/X88884y+/e1v6/vf/76++93vhj2/paVFbrc79KisrEz575Eu9EICACA2222VDgQCKi0t1X333acpU6Zozpw5+ta3vqW2traw5zc3N6u/vz/02L9/f5pHnDr0QgIAIDZLE3YnTJig/Px89fX1jTje19cnj8cT9pry8nKNGTNG+fn5oWMXXXSRvF6vhoaGVFBQMOL8wsJCFRYWpn7wGUAvJAAAYrN05qWgoEBTpkxRR0dH6FggEFBHR4fq6+vDXnPllVfq9ddfVyAQCB177bXXVF5ePipwyTb0QgIAIDbLl42ampq0bt06PfTQQ9q5c6cWLlyogYEBNTY2SpLmz5+v5ubm0PkLFy7U4cOHdccdd+i1117T008/rXvvvVe333671UPNOHohAQAQm+V1XubMmaO3335bS5culdfrVU1Njdrb20NJvPv27VNe3gcxVGVlpX7729/qzjvv1CWXXKKKigrdcccduuuuu6weasYFeyEtXN8tlzQicZdeSAAADLO8zku6UecFAADnMfP+TW8jG0qkFxIVeQEAuYLgxaaCvZDiwUwNACCX2K7OC8yhIi8AINcQvKSZP2Coc/chPdlzQJ27DyVVLZeKvACAXMSyURqlennHTEXeeJegAAD2QT5jeAQvaRJc3jl1DiS4vLN23uWmAxgq8gJA9iKfMTKWjdLAquUdKvICQHaKls/41fXduvupV5JOPXAygpc0sKrhIhV5ASD7xPOB94EX9mruupd01cpNObkxg+AlDaxa3glW5JU0KoChIi8AOFOsD7wny9WdpQQvaWDl8s7MyeVaO+9yedwjr/W4ixLKowEAZJaZD7K5urOUhN00CC7vePuPh50GdGk42Eh0eSeRirwAAHsy+0E2F3eWMvOSBulY3glW5L2xpkL1k84icAEAh4qVzxhJLu0sJXhJE5Z3AADxiPaBN5pc2llKV+k0o+AQACAe4eq8hBNMPdhy1/WOfj+hq7SNmWm4CADIXSfnMz63w6v7X9g76pxc3VlK8AIAgE0FP/DWTzpL0yaOHzUT48nRirsELwAAOAA7Sz9A8AIAgEOQejCM3UYAAMBRCF4AAICjELwAAABHIXgBAACOQsIuAAA5IlsKpRK8AACQA8JV7C13aJ0Ylo0AAMhy7dt7tXB996hWA97+41q4vlvt23szNLLEELwAAJDF/AFDy5/aoXCNDIPHlj+1Q/6Ac1odErwAAJDFuvYcjtrc0ZDU239cXXsOp29QSSLnBQAAG0l1Uu1bR6N3pTZ7nh0QvAAAYBNWJNWWji1K6Xl2wLIRAAA2YFVSbe3E8Sp3FynS3I1LwwFS7cTxCf38TCB4AQAgw6xMqs3Pc2nZDdWSNCqACX697IZqR9V7SUvwsmbNGlVVVamoqEh1dXXq6uqKeO6DDz4ol8s14lFU5JypLLvzBwx17j6kJ3sOqHP3IUdllwNAtrI6qXbm5HKtnXe5PO6R76ced5HWzrvccXVeLM952bhxo5qamtTW1qa6ujq1trZqxowZ2rVrl0pLS8NeU1xcrF27doW+drmcEw3aWTYVKAKAbJKOpNqZk8s1vdqTFRV2LZ95+cEPfqBbb71VjY2Nqq6uVltbm8444ww98MADEa9xuVzyeDyhR1lZmdXDdJREZk+yrUARAGSTdCXV5ue5VD/pLN1YU6H6SWc5MnCRLJ55GRoa0tatW9Xc3Bw6lpeXp4aGBnV2dka87t1339WHP/xhBQIBXX755br33nv1sY99zMqhOkYisyex1lJdGl5LnV7tcewLGQCcLJhU6+0/HvZvtUvDSzxOSqq1kqUzLwcPHpTf7x81c1JWViav1xv2mo9+9KN64IEH9OSTT2r9+vUKBAK64oor9MYbb4Q9f3BwUD6fb8QjWyU6e5KNBYoAIJtkY1KtlWy326i+vl7z589XTU2Nrr32Wj322GM6++yz9dOf/jTs+S0tLXK73aFHZWVlmkecHslkomdjgSIAyDbZllRrJUuXjSZMmKD8/Hz19fWNON7X1yePxxPXzxgzZowuu+wyvf7662G/39zcrKamptDXPp8vKwMYM7Mn9ZPOGvG9bCxQBADZKJuSaq1k6cxLQUGBpkyZoo6OjtCxQCCgjo4O1dfXx/Uz/H6/tm3bpvLy8BFnYWGhiouLRzyyUTKzJ9lYoAgAslW2JNVayfJlo6amJq1bt04PPfSQdu7cqYULF2pgYECNjY2SpPnz549I6L377rv1u9/9Tn/5y1/U3d2tefPm6a9//au+/OUvWz1UW0tm9oS1VABANrG8zsucOXP09ttva+nSpfJ6vaqpqVF7e3soiXffvn3Ky/sghnrnnXd06623yuv1aty4cZoyZYpefPFFVVdXWz1UW0s2Ez24lnrqTiUPdV4AAA7jMgwjq0qs+nw+ud1u9ff3Z90SUnC3kaQRAUxwviSehK5UdysFACAVzLx/E7w4DFVyAQDZyMz7t+XLRkgtMtEBALmO4MWBgpnoAADkItsVqQMAAIiG4AUAADgKwQsAAHAUghcAAOAoBC8AAMBRCF4AAICjELwAAABHIXgBAACOQvACAAAchQq7AACkCc1xU4PgBQAAi/kDhlZv+rN+/sJeHXnvROg4jXUTw7IRAAAWat/eqynffVY/fO7PIwIXSfL2H9fC9d1q396bodE5E8ELAAAWad/eq4Xru3Xk2Imw3zf+93+XP7VD/oAR9hyMRvACAIAF/AFDy5/aoVghiSGpt/+4uvYcTsewsgLBCwAAFujac1i9/cfjPv+to/Gfm+sIXgAAsIDZYKR0bJFFI8k+7DbKImzBAwD7MBOMlLuH/2YjPgQvWaJ9e6+WP7VjxBQlW/AAIHNqJ45XubtI3v7jMfNelt1QzYdNE1g2ygLBbPZT11bZggcAmZOf59KyG6olSZHCkpIzxqht3uV8yDSJ4MXhomWzswUPADJr5uRyrZ13uTzukUtIJWeM0Z0NF2jr/5lO4JIAlo0cLlY2+8lb8OonnZW+gQEAJA0HMNOrPeQkphAzLw4XbzY7W/AAANmCmReHizebnS14AJAZbKhIPWZeHK524nh5iiMHJi6xBQ8AMoUNFdYgeHG4Z3d4dfx9f9jvBVdT07kFzx8w1Ln7kJ7sOaDO3YdIFAaQs9hQYR2WjRwsGNFHetmXnDFGLZ+7OG3TkkyNAsAH2FBhHWZeHCqehl+Fp+VperUnLeNhahQARmJDhXUIXhwqnoZfXt9gWrqUMjUKAKOxocI6BC8OZaeI3szUKADkimB7gEgZh2yoSFxagpc1a9aoqqpKRUVFqqurU1dXV1zXbdiwQS6XS7Nnz7Z2gA5kp4jeToEUAKRTtE0K0doDZGJDRTaxPGF348aNampqUltbm+rq6tTa2qoZM2Zo165dKi0tjXjd3r179c1vflNXX3211UN0pFgNv1ySPGmK6O0USAFAusSzSSHYHuDU8zxsZkiKyzAMSxMR6urqNG3aNK1evVqSFAgEVFlZqcWLF2vJkiVhr/H7/brmmmv0T//0T/qv//ovHTlyRE888URcz+fz+eR2u9Xf36/i4uJU/Rq2FEySlTQigAnG8GvT1OzLHzB01cpNMQOpLXddzycMAFkh0m7PSH9//QGD9gAxmHn/tnTZaGhoSFu3blVDQ8MHT5iXp4aGBnV2dka87u6771ZpaaluueWWmM8xODgon8834pErIjX88riL0ha4SEyNAsgtiWxSyM9zqX7SWbqxpkL1k87i72GSLF02OnjwoPx+v8rKykYcLysr06uvvhr2mi1btuj+++9XT09PXM/R0tKi5cuXJztUx7JLwy+mRgHkCuq3ZJ6titQdPXpUX/ziF7Vu3TpNmDAhrmuam5vV1NQU+trn86mystKqIdpSMKLPNLsEUgBgJTYpZJ6lwcuECROUn5+vvr6+Ecf7+vrk8YwunrZ7927t3btXN9xwQ+hYIBAYHuhpp2nXrl2aNGnSiGsKCwtVWFhoweiRCLsEUgBgFTYpZJ6lOS8FBQWaMmWKOjo6QscCgYA6OjpUX18/6vwLL7xQ27ZtU09PT+jxmc98Rp/4xCfU09OTczMqAAD7oX5L5lm+bNTU1KQFCxZo6tSpqq2tVWtrqwYGBtTY2ChJmj9/vioqKtTS0qKioiJNnjx5xPUlJSWSNOo4AACZENyksHB9t1wKv9uTTQrWsjx4mTNnjt5++20tXbpUXq9XNTU1am9vDyXx7tu3T3l5FPoFADgHmxQyy/I6L+mWS3VeAACZRf2W1DHz/m2r3UYAADgJmxQyg+AFluDTCADAKgQvSLl4+n0AAJAoMmWRUsF+H6dWn/T2H9fC9d1q396boZEBALIFwQtSJpF+HwAAmEXwgpj8AUOduw/pyZ4D6tx9KGLwYabfBwAAiSLnBVGZyV+h3wcAIB2YeUFEZvNX6PcBAEgHgheElUj+Cv0+AADpQPCCsBLJXwn2+5A0KoCh3wcAIFUIXhBWovkrwX4fHvfIpSGPu0hr511OnRcAQNJI2EVYyeSvzJxcrunVHirsAgAsQfCCsIL5K97+42HzXlwank2JlL9Cvw8AgFVYNkJY0fJXpOGcl7+bPDy7QtE5AEA6uQzDyKp3HjMttRFbuDoveS7p5HiFvkUAgGSZef8meEFMwQ7Rz+7w6oEX9o76fnBmhoRcAE4V/DtHnl7mmHn/JucFMeXnuVQ7cbyaftUT9vuGhgOY5U/t0PRqD//BA3AUM5XEYQ/kvCAu9C0CkI0iVRLvjVBJHPZA8IK40LcIQLaJVklcGv5Q1vzYNjYl2BDBC+JC3yIA2SbWjLIkvXPshFZv+nOaRoR4EbwgLvQtApBt4p0p/vkLe5l9sRmCF8SFvkUAsk28M8VH3jtBPp/NELwgbvQtApBNaieOV8npY+I6l3w+e2GrNEyhbxGAbJGf51LjlRP1w+dei3ku+Xz2QvAC0+hbBCBbLLr+PP38xT06cuxE2O/H6uOGzGDZCACQs/LzXFrxuYvDfo98PvsieAEA5LSZk8vVNu9ylZPP5xgsGwEActKp/Yz+v//nE9r613fI53MAghcAQM6J1s/oxpqKDI4M8WDZCACQUyL1M/LSz8gxCF4AADkjWj+j4LHlT+2goq7NpSV4WbNmjaqqqlRUVKS6ujp1dXVFPPexxx7T1KlTVVJSog996EOqqanRL37xi3QMEwCQ5WL1MzI03FGairr2ZnnwsnHjRjU1NWnZsmXq7u7WpZdeqhkzZuitt94Ke/748eP1rW99S52dnfqf//kfNTY2qrGxUb/97W+tHioAIMvFWymXirr2Znnw8oMf/EC33nqrGhsbVV1drba2Np1xxhl64IEHwp5/3XXX6bOf/awuuugiTZo0SXfccYcuueQSbdmyxeqhAgCyXLyVcqmoa2+WBi9DQ0PaunWrGhoaPnjCvDw1NDSos7Mz5vWGYaijo0O7du3SNddcE/acwcFB+Xy+EQ8AAMKpnThe5e6iUQ1mg1wa3nVERV17szR4OXjwoPx+v8rKykYcLysrk9frjXhdf3+/zjzzTBUUFGjWrFn6yU9+ounTp4c9t6WlRW63O/SorKxM6e8AAMge+XkuLbuhWpJGBTBU1HUOW+42Gjt2rHp6evSHP/xB//qv/6qmpiZt3rw57LnNzc3q7+8PPfbv35/ewQIAHMMfMOQ+vUCNV1Zp3IcKRnyPirrOYWmRugkTJig/P199fX0jjvf19cnj8US8Li8vT+edd54kqaamRjt37lRLS4uuu+66UecWFhaqsLAwpeMGAGSfcIXpxn9ojD5bU6GGag8VdR3E0pmXgoICTZkyRR0dHaFjgUBAHR0dqq+vj/vnBAIBDQ4OWjFEAEAOiFSY7p2BE3rghb3qf2+IwMVBLG8P0NTUpAULFmjq1Kmqra1Va2urBgYG1NjYKEmaP3++Kioq1NLSImk4h2Xq1KmaNGmSBgcH9cwzz+gXv/iF1q5da/VQAQBZKFZhOpeGC9NNr/YQwDiE5cHLnDlz9Pbbb2vp0qXyer2qqalRe3t7KIl33759ysv7YAJoYGBAX/va1/TGG2/o9NNP14UXXqj169drzpw5Vg8VAGBDpzZQNLu8Y6YwXf2ks1IwYljNZRhGVtVA9vl8crvd6u/vV3FxcaaHAwBIQrQGivEm1j7Zc0B3bOiJed6PbqqhKWMGmXn/tuVuIyAe/oChzt2H9GTPAXXuPkQvEiDLpKqBIoXpso/ly0aAFVLxaQyAfaUyTyVYmM7bfzzsz3NpeJs0hemcg5kXOA7t7IHsl8oGihSmyz4EL3AU2tkDuSHVDRRnTi7X2nmXy+MeuTREYTpnYtkIjsKuASA3WJGnMnNyuaZXe5LauQR7IHiBo9DOHsgNVuWp5Oe5+GCTBVg2gqOwawDIDeSpIBqCFzgK7eyB3EGeCiJh2QiOEvw0tnB9t1zSiOlkPo0B2Yc8FYRDhV04EnVeAMQj2dYCSB8z79/MvMA2zPyR4dMYgFhifcghsHEuZl5gC8ykAEilYDHLU9/ggqHJbddM1K//u5e/OTZCbyM4ChVzAaRSrGKWhqSf/n4Pf3McjOAFGZXOirk0cgRyQ6xilpFQpds5yHlBRqWrYi7LUkDuSKZIJVW6nYGZF2RUOirmsiwF5JZUFKmkSre9Ebwgo6yumEsjRyD3xCpmGQ+qdNsbwQsyasqHxynWzsQ81/B5iTCzLAUgO0RrLRALVbqdgeAFGbX1r+8o1qRHwBg+zyx/wNALr78d17lMEQPZJVJrgXJ3kb5yzUS5RM8kJyNhFxllVc5LuATdaJgiBrJPtGKWl507btTfCA9J/I5B8IKMsiLnJVJxqnBcGv6DxRQxkJ3y81xhdw1RpdvZCF6QUcHEOm//8bDBhtngIlqCbrifLTFFDOSqSIEN7I+cF2RUtMS6RIILM8WpPO4irZ13eVqmiCmQBwCpw8wLMi6YWJeK9ed4c2MWfeI83Tn9grTMuFAgDwBSi+AFtpCq9ed4c2OuPG9C2gKXcPk3wQJ56Zr5AYBsQvAC20jF+nOqc2iSEatAnkvDBfKmV3vIuQEAE8h5QVZJdQ5NMiiQBwDWIHhB1olUnCqdCbpSevo2AdmG5HbEg2UjZCU71HCwum8TkG1Ibke8CF6QtTJdw8FO+TeA3ZHcDjNYNgIsYqf8G8DO6P4Os9ISvKxZs0ZVVVUqKipSXV2durq6Ip67bt06XX311Ro3bpzGjRunhoaGqOcDdmaX/BvAzkhuh1mWLxtt3LhRTU1NamtrU11dnVpbWzVjxgzt2rVLpaWlo87fvHmz5s6dqyuuuEJFRUVauXKlPvWpT+mVV15RRUWF1cNFjvEHDMvzYuyQfwPYGcntMMtlGIal83B1dXWaNm2aVq9eLUkKBAKqrKzU4sWLtWTJkpjX+/1+jRs3TqtXr9b8+fNjnu/z+eR2u9Xf36/i4uKkx4/sRXIgYA+duw9p7rqXYp73y1s/Ti+iLGbm/dvSZaOhoSFt3bpVDQ0NHzxhXp4aGhrU2dkZ1884duyYTpw4ofHjSWpE6gSTA0+dqg4mB7Zv743r57CtE0heMLk90lykS8MfLEhuR5Cly0YHDx6U3+9XWVnZiONlZWV69dVX4/oZd911l84555wRAdDJBgcHNTg4GPra5/MlPmDkhFRVvk105iYdS1WAkwST2xeu75ZLGvHfJsntCMfWW6VXrFihDRs2aPPmzSoqCl8Lo6WlRcuXL0/zyOBkZpIDI01RJ7qtM1bAQ2CDXJXKBq3IfpYGLxMmTFB+fr76+vpGHO/r65PH44l67apVq7RixQo999xzuuSSSyKe19zcrKamptDXPp9PlZWVyQ0cWS3Z5MBEZ25iBTy3XTNRv/7vXnJwkLNIbke8LM15KSgo0JQpU9TR0RE6FggE1NHRofr6+ojX/du//Zvuuecetbe3a+rUqVGfo7CwUMXFxSMeQDTJVr5NZFtnrIDHkPTT3+9JOgcHcKKTc8e69hxW7cTxurGmQvWTziJwQViWLxs1NTVpwYIFmjp1qmpra9Xa2qqBgQE1NjZKkubPn6+Kigq1tLRIklauXKmlS5fq4YcfVlVVlbxeryTpzDPP1Jlnnmn1cJEDkq18m8jMTayAJxK6TyPbsesPibC8SN2cOXO0atUqLV26VDU1Nerp6VF7e3soiXffvn3q7f3gU+XatWs1NDSkv//7v1d5eXnosWrVKquHihyRbOXbRGZukqlPQYEuZKtU7fpD7klLwu6iRYu0aNGisN/bvHnziK/37t1r/YCQ85JJDkxk5iYVzRcp0IVskqpdf8hNtt5tBFgp0eTA/DyXvj2rWl97uHvU9yLN3MQKeOJB92lkk1Ts+kPuInhBTkuk83T79l7d8/SOsN+LNHMTrY5FLHSfRjaiJQCSQVdpwIRIa/RB3551UcQlp0hNGsvdRfrKNRPlUnLdp6n2CyeJdybx4NFBXssYxfLeRulGbyNYxR8wdNXKTREDl+AMyZa7ro8aaEQqRJfMrgt2bMBpgv89xbOUyms5N5h5/yZ4AeKUjuZxiVTYjVT8LnhVpGq/QKYFX7tS9KVUXsu5wTaNGYFsko41+mAOTrwFumLt2JCGd2ww7Q47irSUeipeyzgVwQsQp2Qr81ohkWq/gJ3MnFyuLXddr2/PuijqebyWcTKCFyBOwe3OkeZCXBpem0/nriB2bCAb5Oe5NGFsYVzn8lqGRPACxC3ZyrxWsONsEJAIXsswg+AFMCHSGr3HXZSRZEI7zgYBieC1DDMoUgeYlGhlXitEK36XqdkgIBG8lmEGW6WBLECdFziNFfWO4GzUeSF4QQYkUqMlm54fiFesAIXXcm4ieCF4QZrxaRGID0UVEQlF6oA0itTvqLf/uBau71b79t4MjQywF4oqIlUIXoAkRPtjLA3/QW5+bBt/jAFRVBGpQ/ACJCHWH2NJeufYCa3e9Oc0jQiwL4oqIlUIXoAkPLfDG9d5P39hb9jZF3/AUOfuQ3qy54A6dx9ihgaOFc9rmUJ0SBXqvAAJ8gcMPd5zIK5zj7x3Ql17Do/oNk2SL7JFvK/lYCE6b//xsEutLg0XfKQQHWJh5gVIUNeewzo8cCLu80+eCo+U5OslyRcOY+a1bMcWG3AmghcgQWbX5Q8eHZQ/YLDjAlkjkdey3VpswJlYNgISZHZd/p6nd+pnW/bopmnnxr3j4uRlJsBuzOweOvm1bKcWG3AmghcgQbHW78Px9h/XD597La5z2XEBu0tm91B+novgHAlj2QhIULT1+0jMLASx4wJ2x+4hZArBC5CESOv3yXBpeKcGOy5gd8HZx0jBO69lWIVlIyBJp67f/7nvXa1+/vW4rnVp5GwMOy7gJMHZx4Xru3ktI62YeQFSILh+f2NNha48b0Jc19zZcD47LuB47B5CJjDzAqRYvIW4Fl1/vhZdfz47LpBx/oCR1OuQ3UNIN4IXIMXMTqWz4wKZlKpKz+weQjqxbARYgKl0OAGVnuFUzLwAFmEqHXYWqzquS8PVcadXe3jNwnYIXgALMZUOu0q0Ou7Jks2VARKVlmWjNWvWqKqqSkVFRaqrq1NXV1fEc1955RV9/vOfV1VVlVwul1pbW9MxRADIKclUx5WGl5yuWrlJc9e9pDs29Gjuupd01cpNLDUhLSwPXjZu3KimpiYtW7ZM3d3duvTSSzVjxgy99dZbYc8/duyYPvKRj2jFihXyeDxWDw9IiD9gqHP3IT3Zc0Cduw/RRBGOk0x1XHJlkGkuwzAs/atbV1enadOmafXq1ZKkQCCgyspKLV68WEuWLIl6bVVVlb7+9a/r61//etzP5/P55Ha71d/fr+Li4mSGDoSVqt0ZQCb5A4auWrkp5pb+LXddP2IpKHhdpCWnSNcBsZh5/7Z05mVoaEhbt25VQ0PDB0+Yl6eGhgZ1dnam5DkGBwfl8/lGPACr8IkT2SJab65o1XHN5MoAVrE0eDl48KD8fr/KyspGHC8rK5PX603Jc7S0tMjtdocelZWVKfm5wKli7c6QhndnsIQEq6R6uTKRLf3J5soAqeD43UbNzc1qamoKfe3z+QhgYIlU7M4AEmXVcqXZLf10koYdWBq8TJgwQfn5+err6xtxvK+vL2XJuIWFhSosLEzJzwKiifeT5AuvH2TLKEZIdktxcLny1HmW4HJlsoUPzWzpj7f9BZ2kYSVLg5eCggJNmTJFHR0dmj17tqThhN2Ojg4tWrTIyqcGUi7eT5Krn39d/2/3GyTwQlLiMybBgMfb/57ueXpnzGJyYwvH6ODAoOX1VugkDTuwfNmoqalJCxYs0NSpU1VbW6vW1lYNDAyosbFRkjR//nxVVFSopaVF0nCS744dO0L//8CBA+rp6dGZZ56p8847z+rhAhHF+sR5slM/EVPMKzclOmMSLuCJJLhcefP9L4eOWb37LZgrc+oYPey6Q5pYvlVaklavXq3vfe978nq9qqmp0Y9//GPV1dVJkq677jpVVVXpwQcflCTt3btXEydOHPUzrr32Wm3evDnmc7FVGlYKvhlJihnABKfPvz2rWvc8zdbqXJPoluJIAY8ZwZ9mdR+tdAblfADIfmbev9MSvKQTwQusZuZTcSTpenNB5nTuPqS5616Ked4vb/14KN8kVsBjRjbVW6G2Um6wTZ0XIBvNnFyuLXddr0WfmJTwz2BrdeakqzpyIluKY+1oMyNb6q1QWwnhOH6rNJAJ+XkuXXne2Vr9/O6EfwZbq9MvnZ/gE9lSbEVtFCfXW6HzNSJh5gVIUDCBN9k/mU5+c3GSdH+Cj/X6cGk4cDp5S7EVtVGcXG+Far6IhOAFSFA85dXjYebNhYaQiclEdeREyu/HExCP/9AY/XBOjf7jy3XyFBeaCo6chmq+iITgBUhCtPLq//cLl5n+5B1N+/ZeXbVyk+aue0l3bOjR3HUv6aqVm1jzj0OmPsGbLb8fK+BxSbr3sxfrs5dV6MrzJug7n/lYxHMl59dboZovIiHnBUhStPLqeXmulBTzSrReCNtLhyX6CT4V989s+X0zNVSyvd4K1XwRCVulAYslmySaTL0QtpcOS2Tbcqbvn5nAKZuD1Ei1lSg3kH2o80LwAptJ5s0l0TfecDM1ufoHPxgAxvoEHwwAU33/7BRc2Gks8cp0IIn0MPP+zbIRkAZmGt+dyuySB9tLRzPTjyfV989Ob7x2GosZZpfekP1I2AVszmzSIttLw4s3eTZV988fMPSj517TV1O0PTvZnWZOL/YW/ABwY02F6iedReCS45h5AWzObNIi20sji+cTfCruX/v2Xn3n1zvk9YU/x+wMTiryppiNQzZh5gWwObP1QtheGl2sT/DJ3r/gDEekwCUo3hmcVMyYMBuHbEPwAjiAmXohiVR2xQeSuX/RZjgiiTaDk6rieszGIduwbAQ4RLxJi2aSU7NVMjtqkrl/iTRWjDbTY2bGJFpCOLNxyDYEL4CDxLtrKduLl0WTih01id4/MzMX8RRYS9WMCcXekG0IXoAsla3bS6PNqiRaiTicRO6f2ZmLWDNgqZoxYTYO2YbgBchiydSXsaNosyrTqz0p31Fj9v7FmuEI8hQX6juf+VjMQCqVMya5PBuH7EOFXQCOEKvq7R2fPE+tHa/H/DknVyK2QqRy9kF3NlygRdefF3cAlery+E6ssIvcYOb9m91GAGwv1q4bQ9KP4ghcJOt31ETaGVbuLlLbvMt1R8P5poIFs52pY6HYG7IBy0YAbC+eXTzxTiGnY0dNqvONsjV/CUgUwQsA20vFbEm6d9SkOt8o2/KXgGSwbATA9lI1W8KOGiA7MPMC5BCnJmvGu4snkpIzxmjF5y4Omx9il3til3EATkDwAuSIVBRvy5RodUri8ZObLtPVF5w96rgd7ok/YGj1ptf18xf26Mh7JzI2DsBJWDYCckAqmvtlWqRdN/HIc42ewbDDPWnf3qsp331WP3zutRGBS7rHATgNMy9Alou1zdhs8bZMLm+cuuvmz33vavXzsbdIHxwYHPF1qu9JItq39+qr/1u/JZx0jQNwIoIXIMulqrmfZI9llpN33XTuPhRX8HJqwm8q70kigsFTLFaPA3Aqlo2ALJeq5n52WGY5VTCRN9KchEvDwdWp26NTdU8SZbb7tNWF9QCnIXgBbM4fMNS5+5Ce7Dmgzt2H5A+YS1dNRXO/WMss0vDyhtmxmRHuPgQTeSM9q6Hw26NT1fAwUWaDkXQU1gOchGUjwMZSsUyTiuZ+mV5miXYfEpHKhoeJMBOMhJs5AnIdMy+ATaVqmSY4OyFp1PJK8OtYxdvinSn4z+29Cc0ORRPrPix5bFvEa4MJr6eOJxX3JBmxlrtOHguF9YDR0hK8rFmzRlVVVSoqKlJdXZ26urqinv/II4/owgsvVFFRkS6++GI988wz6RgmYBupXqZJtrlfvDMF/975V81d95KuWrkpJTkw8TRkPHLsRJjvfnBOcEboVGbvSbLLdyeLFjwFjTtjTEKNF4FcYPmy0caNG9XU1KS2tjbV1dWptbVVM2bM0K5du1RaWjrq/BdffFFz585VS0uLPv3pT+vhhx/W7Nmz1d3drcmTJ1s9XMAWrFimMdvc7+Qt0RPOLJSnuFB9vsG4CsQFZ0WSffM1m9gaSaSZo5Pvibf/PR0eGNL4MwvlPr0glFMjWbPLKhg8nfpzS04fo8Yrq7ToenPdp4Fc4jIMw7oMO0l1dXWaNm2aVq9eLUkKBAKqrKzU4sWLtWTJklHnz5kzRwMDA/rNb34TOvbxj39cNTU1amtri/l8Pp9Pbrdb/f39Ki4uTt0vAqTRkz0HdMeGnpjn/eimGt1YU5Hy5w/3Zl1yxhgdOXYi7gq3wbyRLXddn/CbcLz3IZZf3vrxqEFerJyaheu7R/3Owd8o2QCNtgDAMDPv35bOvAwNDWnr1q1qbm4OHcvLy1NDQ4M6OzvDXtPZ2ammpqYRx2bMmKEnnngi7PmDg4MaHPygAJXP50t+4ECGZXI3TDDH5NQ36/7/XZ45vSBfx4b8MX9OKpJ4k/394km8jfT7evuP66vru1VyxhhLi9nRLRowz9Kcl4MHD8rv96usrGzE8bKyMnm93rDXeL1eU+e3tLTI7XaHHpWVlakZPJBBidYvSVY8lWePn4gduJzsuR3h/9uNRzz3YdwZY0L//9TvSdETXuPJLUo0pwaAdRy/26i5uVn9/f2hx/79+zM9JCBpmdoNE0+ujdk81cf+dEAvvH4woUTXeO5Dy+cuVluCychW59QAsIaly0YTJkxQfn6++vr6Rhzv6+uTx+MJe43H4zF1fmFhoQoLC1MzYMBGIiV0eiwsx2/Fm/A7x07o5p+9HPrabKJrvPfBTDJyUKp+X4rIAellafBSUFCgKVOmqKOjQ7Nnz5Y0nLDb0dGhRYsWhb2mvr5eHR0d+vrXvx469uyzz6q+vt7KoQK2ZHaHULLS8SacyE6keO5DIrkj6cipAZB6lm+Vbmpq0oIFCzR16lTV1taqtbVVAwMDamxslCTNnz9fFRUVamlpkSTdcccduvbaa/X9739fs2bN0oYNG/THP/5R9913n9VDBWwpnQmd8VSedbnMLx2dLNFEVyvuQzy/r/uMMaFkZeOU70kUkQMywfKclzlz5mjVqlVaunSpampq1NPTo/b29lBS7r59+9Tb+0ExqyuuuEIPP/yw7rvvPl166aV69NFH9cQTT1DjBUiDeHJMbr164nAQk8Tz2CXRNZ7fd8XnLk6qwB+A1LO8zku6UecFSF6somzhvp8Iq+rUmBVPETrqsQDWMvP+TfACIKxYb9Ynf3/vwQH9smufvL7BKD9xtFjF49KJ4ATILIIXghcg7Ua0E/hQob7xyH+rzxe9a3My1XcBZBfbVNgFkDtOTaj9zmeqtXB996h2AiS6AkiW44vUAbCnZDtZA0AkzLwAsEy669QAyA0ELwAsReNBAKnGshEAAHAUZl4Am2LrLgCER/AC2FA8RdMAIFexbATYTPv2Xi1c3z2qem2woWH79t4IV8Lu/AFDnbsP6cmeA+rcfUj+ZJpEATmMmRfARvwBQ8uf2hG2sFuiDQ1hD+Fm00pOH6PGK6u06Prz+fcETGDmBbCRrj2Ho/YLsktDQ5gTaTbtyHsn9MPn/qwp332WGTXABIIXwEbeOhpfo8N4z0PmRZtNCzpy7ARLgoAJBC+AjZSOLYp9konzkHmxZtOCDA0vCZIHA8RG8ALYSO3E8Sp3FylS9oNLw7uOaieOT+ewkAQzs2QsCQLxIXgBbCQ/z6VlN1RL0qgAhoaGzmR2lowlQSA2ghfAZmhomBp22ZYcnE2LF0uCQGxslQZsKNcaGqa6mrCdivwFZ9O+ur476nkuDQeoLAkCsbkMw8iq7DCfzye3263+/n4VFxdnejgAYkh1oBHclnzqH7ZgKJSp2av27b1a8tg2HTl2YtT3Mj02wA7MvH+zbAQgY1JdTThWkT8pczt6Zk4u19b/M113NlygktPHjPgeS4KAOSwbAcgIK6oJmynyVz/prESGnZT8PJfuaDhfi64/L2eWBAErELwAyAgrAg2nFPnLz3NlJHgCsgXLRgAywopAgyJ/QG4geAGQEVYEGhT5A3IDwQuAjLAi0KDIH5AbCF4AZIRVgQZF/oDsR50XABllVUG5VBe+A2AtM+/fBC8AMo5AA4CZ92+2SgPIOLYOAzCDnBcAAOAoBC8AAMBRLAteDh8+rJtvvlnFxcUqKSnRLbfconfffTfqNffdd5+uu+46FRcXy+Vy6ciRI1YNDwAAOJRlwcvNN9+sV155Rc8++6x+85vf6Pe//71uu+22qNccO3ZMM2fO1L/8y79YNSwAAOBwluw22rlzp6qrq/WHP/xBU6dOlSS1t7fr7/7u7/TGG2/onHPOiXr95s2b9YlPfELvvPOOSkpKTD03u40AAHAeM+/flsy8dHZ2qqSkJBS4SFJDQ4Py8vL08ssvW/GUAAAgR1iyVdrr9aq0tHTkE512msaPHy+v15vS5xocHNTg4GDoa5/Pl9KfDwAA7MXUzMuSJUvkcrmiPl599VWrxhpWS0uL3G536FFZWZnW5wcAAOllaublG9/4hr70pS9FPecjH/mIPB6P3nrrrRHH33//fR0+fFgej8f0IKNpbm5WU1NT6Gufz0cAAwBAFjMVvJx99tk6++yzY55XX1+vI0eOaOvWrZoyZYokadOmTQoEAqqrq0tspBEUFhaqsLAw9HUw/5jlIwAAnCP4vh3PPiJLcl4uuugizZw5U7feeqva2tp04sQJLVq0SDfddFNop9GBAwf0yU9+Uv/+7/+u2tpaScO5Ml6vV6+//rokadu2bRo7dqzOPfdcjR8/Pq7nPnr0qCQx+wIAgAMdPXpUbrc76jmW9Tb6j//4Dy1atEif/OQnlZeXp89//vP68Y9/HPr+iRMntGvXLh07dix0rK2tTcuXLw99fc0110iSfv7zn8dcrgo655xztH//fo0dO1YuV243dgsuoe3fv59t42nA/U4f7nV6cb/TK1fvt2EYOnr0aMxyKlIWdpXGB6h5k17c7/ThXqcX9zu9uN+x0dsIAAA4CsELAABwFIKXLFZYWKhly5aN2I0F63C/04d7nV7c7/TifsdGzgsAAHAUZl4AAICjELwAAABHIXgBAACOQvACAAAcheAlyxw+fFg333yziouLVVJSoltuuUXvvvtuXNcahqG//du/lcvl0hNPPGHtQLOA2Xt9+PBhLV68WB/96Ed1+umn69xzz9U///M/q7+/P42jdo41a9aoqqpKRUVFqqurU1dXV9TzH3nkEV144YUqKirSxRdfrGeeeSZNI80OZu73unXrdPXVV2vcuHEaN26cGhoaYv77YCSzr++gDRs2yOVyafbs2dYO0OYIXrLMzTffrFdeeUXPPvusfvOb3+j3v/+9brvttriubW1tzfmWCmaYvddvvvmm3nzzTa1atUrbt2/Xgw8+qPb2dt1yyy1pHLUzbNy4UU1NTVq2bJm6u7t16aWXasaMGaO61Qe9+OKLmjt3rm655Rb96U9/0uzZszV79mxt3749zSN3JrP3e/PmzZo7d66ef/55dXZ2qrKyUp/61Kd04MCBNI/cmcze76C9e/fqm9/8pq6++uo0jdTGDGSNHTt2GJKMP/zhD6Fj//mf/2m4XC7jwIEDUa/905/+ZFRUVBi9vb2GJOPxxx+3eLTOlsy9PtmvfvUro6CgwDhx4oQVw3Ss2tpa4/bbbw997ff7jXPOOcdoaWkJe/4//uM/GrNmzRpxrK6uzvjKV75i6Tizhdn7far333/fGDt2rPHQQw9ZNcSsksj9fv/9940rrrjC+NnPfmYsWLDAuPHGG9MwUvti5iWLdHZ2qqSkRFOnTg0da2hoUF5enl5++eWI1x07dkxf+MIXtGbNGnk8nnQM1fESvdenCvYuOe00y3qkOs7Q0JC2bt2qhoaG0LG8vDw1NDSos7Mz7DWdnZ0jzpekGTNmRDwfH0jkfp/q2LFjOnHihMaPH2/VMLNGovf77rvvVmlpKTO1/4u/mFnE6/WqtLR0xLHTTjtN48ePl9frjXjdnXfeqSuuuEI33nij1UPMGone65MdPHhQ99xzT9zLerni4MGD8vv9KisrG3G8rKxMr776athrvF5v2PPj/bfIZYnc71PdddddOuecc0YFkBgtkfu9ZcsW3X///erp6UnDCJ2BmRcHWLJkiVwuV9RHvH9kTvXrX/9amzZtUmtra2oH7VBW3uuT+Xw+zZo1S9XV1frOd76T/MCBDFmxYoU2bNigxx9/XEVFRZkeTtY5evSovvjFL2rdunWaMGFCpodjG8y8OMA3vvENfelLX4p6zkc+8hF5PJ5RCV/vv/++Dh8+HHE5aNOmTdq9e7dKSkpGHP/85z+vq6++Wps3b05i5M5j5b0OOnr0qGbOnKmxY8fq8ccf15gxY5IddlaZMGGC8vPz1dfXN+J4X19fxHvr8XhMnY8PJHK/g1atWqUVK1boueee0yWXXGLlMLOG2fu9e/du7d27VzfccEPoWCAQkDQ827tr1y5NmjTJ2kHbUaaTbpA6wSTSP/7xj6Fjv/3tb6Mmkfb29hrbtm0b8ZBk/OhHPzL+8pe/pGvojpPIvTYMw+jv7zc+/vGPG9dee60xMDCQjqE6Um1trbFo0aLQ136/36ioqIiasPvpT396xLH6+noSduNk9n4bhmGsXLnSKC4uNjo7O9MxxKxi5n6/9957o/5G33jjjcb1119vbNu2zRgcHEzn0G2D4CXLzJw507jsssuMl19+2diyZYtx/vnnG3Pnzg19/4033jA++tGPGi+//HLEnyF2G8XF7L3u7+836urqjIsvvth4/fXXjd7e3tDj/fffz9SvYUsbNmwwCgsLjQcffNDYsWOHcdtttxklJSWG1+s1DMMwvvjFLxpLliwJnf/CCy8Yp512mrFq1Spj586dxrJly4wxY8YY27Zty9Sv4Chm7/eKFSuMgoIC49FHHx3xOj569GimfgVHMXu/T8VuI4KXrHPo0CFj7ty5xplnnmkUFxcbjY2NI/6g7Nmzx5BkPP/88xF/BsFLfMze6+eff96QFPaxZ8+ezPwSNvaTn/zEOPfcc42CggKjtrbWeOmll0Lfu/baa40FCxaMOP9Xv/qVccEFFxgFBQXGxz72MePpp59O84idzcz9/vCHPxz2dbxs2bL0D9yhzL6+T0bwYhguwzCMdC9VAQAAJIrdRgAAwFEIXgAAgKMQvAAAAEcheAEAAI5C8AIAAByF4AUAADgKwQsAAHAUghcAAOAoBC8AAMBRCF4AAICjELwAAABHIXgBAACO8v8DePEwspedH+wAAAAASUVORK5CYII=",
+ "text/plain": [
+ "<Figure size 640x480 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "import numpy as np\n",
+ "from sklearn.tree import DecisionTreeRegressor\n",
+ "import matplotlib.pyplot as plt\n",
+ "np.random.seed(10)\n",
+ "X = np.random.rand(100,1) - .5\n",
+ "y = 3 * X[:,0] ** 2 + .05 * np.random.randn(100)\n",
+ "plt.scatter(X,y)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 55,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "<style>#sk-container-id-22 {\n",
+ " /* Definition of color scheme common for light and dark mode */\n",
+ " --sklearn-color-text: black;\n",
+ " --sklearn-color-line: gray;\n",
+ " /* Definition of color scheme for unfitted estimators */\n",
+ " --sklearn-color-unfitted-level-0: #fff5e6;\n",
+ " --sklearn-color-unfitted-level-1: #f6e4d2;\n",
+ " --sklearn-color-unfitted-level-2: #ffe0b3;\n",
+ " --sklearn-color-unfitted-level-3: chocolate;\n",
+ " /* Definition of color scheme for fitted estimators */\n",
+ " --sklearn-color-fitted-level-0: #f0f8ff;\n",
+ " --sklearn-color-fitted-level-1: #d4ebff;\n",
+ " --sklearn-color-fitted-level-2: #b3dbfd;\n",
+ " --sklearn-color-fitted-level-3: cornflowerblue;\n",
+ "\n",
+ " /* Specific color for light theme */\n",
+ " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
+ " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
+ " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
+ " --sklearn-color-icon: #696969;\n",
+ "\n",
+ " @media (prefers-color-scheme: dark) {\n",
+ " /* Redefinition of color scheme for dark theme */\n",
+ " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
+ " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
+ " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
+ " --sklearn-color-icon: #878787;\n",
+ " }\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 {\n",
+ " color: var(--sklearn-color-text);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 pre {\n",
+ " padding: 0;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 input.sk-hidden--visually {\n",
+ " border: 0;\n",
+ " clip: rect(1px 1px 1px 1px);\n",
+ " clip: rect(1px, 1px, 1px, 1px);\n",
+ " height: 1px;\n",
+ " margin: -1px;\n",
+ " overflow: hidden;\n",
+ " padding: 0;\n",
+ " position: absolute;\n",
+ " width: 1px;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-dashed-wrapped {\n",
+ " border: 1px dashed var(--sklearn-color-line);\n",
+ " margin: 0 0.4em 0.5em 0.4em;\n",
+ " box-sizing: border-box;\n",
+ " padding-bottom: 0.4em;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-container {\n",
+ " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
+ " but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
+ " so we also need the `!important` here to be able to override the\n",
+ " default hidden behavior on the sphinx rendered scikit-learn.org.\n",
+ " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
+ " display: inline-block !important;\n",
+ " position: relative;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-text-repr-fallback {\n",
+ " display: none;\n",
+ "}\n",
+ "\n",
+ "div.sk-parallel-item,\n",
+ "div.sk-serial,\n",
+ "div.sk-item {\n",
+ " /* draw centered vertical line to link estimators */\n",
+ " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
+ " background-size: 2px 100%;\n",
+ " background-repeat: no-repeat;\n",
+ " background-position: center center;\n",
+ "}\n",
+ "\n",
+ "/* Parallel-specific style estimator block */\n",
+ "\n",
+ "#sk-container-id-22 div.sk-parallel-item::after {\n",
+ " content: \"\";\n",
+ " width: 100%;\n",
+ " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
+ " flex-grow: 1;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-parallel {\n",
+ " display: flex;\n",
+ " align-items: stretch;\n",
+ " justify-content: center;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " position: relative;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-parallel-item {\n",
+ " display: flex;\n",
+ " flex-direction: column;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-parallel-item:first-child::after {\n",
+ " align-self: flex-end;\n",
+ " width: 50%;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-parallel-item:last-child::after {\n",
+ " align-self: flex-start;\n",
+ " width: 50%;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-parallel-item:only-child::after {\n",
+ " width: 0;\n",
+ "}\n",
+ "\n",
+ "/* Serial-specific style estimator block */\n",
+ "\n",
+ "#sk-container-id-22 div.sk-serial {\n",
+ " display: flex;\n",
+ " flex-direction: column;\n",
+ " align-items: center;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " padding-right: 1em;\n",
+ " padding-left: 1em;\n",
+ "}\n",
+ "\n",
+ "\n",
+ "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
+ "clickable and can be expanded/collapsed.\n",
+ "- Pipeline and ColumnTransformer use this feature and define the default style\n",
+ "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
+ "*/\n",
+ "\n",
+ "/* Pipeline and ColumnTransformer style (default) */\n",
+ "\n",
+ "#sk-container-id-22 div.sk-toggleable {\n",
+ " /* Default theme specific background. It is overwritten whether we have a\n",
+ " specific estimator or a Pipeline/ColumnTransformer */\n",
+ " background-color: var(--sklearn-color-background);\n",
+ "}\n",
+ "\n",
+ "/* Toggleable label */\n",
+ "#sk-container-id-22 label.sk-toggleable__label {\n",
+ " cursor: pointer;\n",
+ " display: block;\n",
+ " width: 100%;\n",
+ " margin-bottom: 0;\n",
+ " padding: 0.5em;\n",
+ " box-sizing: border-box;\n",
+ " text-align: center;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 label.sk-toggleable__label-arrow:before {\n",
+ " /* Arrow on the left of the label */\n",
+ " content: \"▸\";\n",
+ " float: left;\n",
+ " margin-right: 0.25em;\n",
+ " color: var(--sklearn-color-icon);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 label.sk-toggleable__label-arrow:hover:before {\n",
+ " color: var(--sklearn-color-text);\n",
+ "}\n",
+ "\n",
+ "/* Toggleable content - dropdown */\n",
+ "\n",
+ "#sk-container-id-22 div.sk-toggleable__content {\n",
+ " max-height: 0;\n",
+ " max-width: 0;\n",
+ " overflow: hidden;\n",
+ " text-align: left;\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-toggleable__content.fitted {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-toggleable__content pre {\n",
+ " margin: 0.2em;\n",
+ " border-radius: 0.25em;\n",
+ " color: var(--sklearn-color-text);\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-toggleable__content.fitted pre {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
+ " /* Expand drop-down */\n",
+ " max-height: 200px;\n",
+ " max-width: 100%;\n",
+ " overflow: auto;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
+ " content: \"▾\";\n",
+ "}\n",
+ "\n",
+ "/* Pipeline/ColumnTransformer-specific style */\n",
+ "\n",
+ "#sk-container-id-22 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Estimator-specific style */\n",
+ "\n",
+ "/* Colorize estimator box */\n",
+ "#sk-container-id-22 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-label label.sk-toggleable__label,\n",
+ "#sk-container-id-22 div.sk-label label {\n",
+ " /* The background is the default theme color */\n",
+ " color: var(--sklearn-color-text-on-default-background);\n",
+ "}\n",
+ "\n",
+ "/* On hover, darken the color of the background */\n",
+ "#sk-container-id-22 div.sk-label:hover label.sk-toggleable__label {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Label box, darken color on hover, fitted */\n",
+ "#sk-container-id-22 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Estimator label */\n",
+ "\n",
+ "#sk-container-id-22 div.sk-label label {\n",
+ " font-family: monospace;\n",
+ " font-weight: bold;\n",
+ " display: inline-block;\n",
+ " line-height: 1.2em;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-label-container {\n",
+ " text-align: center;\n",
+ "}\n",
+ "\n",
+ "/* Estimator-specific */\n",
+ "#sk-container-id-22 div.sk-estimator {\n",
+ " font-family: monospace;\n",
+ " border: 1px dotted var(--sklearn-color-border-box);\n",
+ " border-radius: 0.25em;\n",
+ " box-sizing: border-box;\n",
+ " margin-bottom: 0.5em;\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-estimator.fitted {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "/* on hover */\n",
+ "#sk-container-id-22 div.sk-estimator:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 div.sk-estimator.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
+ "\n",
+ "/* Common style for \"i\" and \"?\" */\n",
+ "\n",
+ ".sk-estimator-doc-link,\n",
+ "a:link.sk-estimator-doc-link,\n",
+ "a:visited.sk-estimator-doc-link {\n",
+ " float: right;\n",
+ " font-size: smaller;\n",
+ " line-height: 1em;\n",
+ " font-family: monospace;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " border-radius: 1em;\n",
+ " height: 1em;\n",
+ " width: 1em;\n",
+ " text-decoration: none !important;\n",
+ " margin-left: 1ex;\n",
+ " /* unfitted */\n",
+ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-unfitted-level-1);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link.fitted,\n",
+ "a:link.sk-estimator-doc-link.fitted,\n",
+ "a:visited.sk-estimator-doc-link.fitted {\n",
+ " /* fitted */\n",
+ " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-fitted-level-1);\n",
+ "}\n",
+ "\n",
+ "/* On hover */\n",
+ "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
+ ".sk-estimator-doc-link:hover,\n",
+ "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
+ ".sk-estimator-doc-link:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
+ ".sk-estimator-doc-link.fitted:hover,\n",
+ "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
+ ".sk-estimator-doc-link.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "/* Span, style for the box shown on hovering the info icon */\n",
+ ".sk-estimator-doc-link span {\n",
+ " display: none;\n",
+ " z-index: 9999;\n",
+ " position: relative;\n",
+ " font-weight: normal;\n",
+ " right: .2ex;\n",
+ " padding: .5ex;\n",
+ " margin: .5ex;\n",
+ " width: min-content;\n",
+ " min-width: 20ex;\n",
+ " max-width: 50ex;\n",
+ " color: var(--sklearn-color-text);\n",
+ " box-shadow: 2pt 2pt 4pt #999;\n",
+ " /* unfitted */\n",
+ " background: var(--sklearn-color-unfitted-level-0);\n",
+ " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link.fitted span {\n",
+ " /* fitted */\n",
+ " background: var(--sklearn-color-fitted-level-0);\n",
+ " border: var(--sklearn-color-fitted-level-3);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link:hover span {\n",
+ " display: block;\n",
+ "}\n",
+ "\n",
+ "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
+ "\n",
+ "#sk-container-id-22 a.estimator_doc_link {\n",
+ " float: right;\n",
+ " font-size: 1rem;\n",
+ " line-height: 1em;\n",
+ " font-family: monospace;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " border-radius: 1rem;\n",
+ " height: 1rem;\n",
+ " width: 1rem;\n",
+ " text-decoration: none;\n",
+ " /* unfitted */\n",
+ " color: var(--sklearn-color-unfitted-level-1);\n",
+ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 a.estimator_doc_link.fitted {\n",
+ " /* fitted */\n",
+ " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-fitted-level-1);\n",
+ "}\n",
+ "\n",
+ "/* On hover */\n",
+ "#sk-container-id-22 a.estimator_doc_link:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-22 a.estimator_doc_link.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-3);\n",
+ "}\n",
+ "</style><div id=\"sk-container-id-22\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>DecisionTreeRegressor(max_depth=2, random_state=10)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-22\" type=\"checkbox\" checked><label for=\"sk-estimator-id-22\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> DecisionTreeRegressor<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.tree.DecisionTreeRegressor.html\">?<span>Documentation for DecisionTreeRegressor</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeRegressor(max_depth=2, random_state=10)</pre></div> </div></div></div></div>"
+ ],
+ "text/plain": [
+ "DecisionTreeRegressor(max_depth=2, random_state=10)"
+ ]
+ },
+ "execution_count": 55,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "tree_reg1 = DecisionTreeRegressor(max_depth=2, random_state=10)\n",
+ "tree_reg1.fit(X,y)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 56,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "<style>#sk-container-id-23 {\n",
+ " /* Definition of color scheme common for light and dark mode */\n",
+ " --sklearn-color-text: black;\n",
+ " --sklearn-color-line: gray;\n",
+ " /* Definition of color scheme for unfitted estimators */\n",
+ " --sklearn-color-unfitted-level-0: #fff5e6;\n",
+ " --sklearn-color-unfitted-level-1: #f6e4d2;\n",
+ " --sklearn-color-unfitted-level-2: #ffe0b3;\n",
+ " --sklearn-color-unfitted-level-3: chocolate;\n",
+ " /* Definition of color scheme for fitted estimators */\n",
+ " --sklearn-color-fitted-level-0: #f0f8ff;\n",
+ " --sklearn-color-fitted-level-1: #d4ebff;\n",
+ " --sklearn-color-fitted-level-2: #b3dbfd;\n",
+ " --sklearn-color-fitted-level-3: cornflowerblue;\n",
+ "\n",
+ " /* Specific color for light theme */\n",
+ " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
+ " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
+ " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
+ " --sklearn-color-icon: #696969;\n",
+ "\n",
+ " @media (prefers-color-scheme: dark) {\n",
+ " /* Redefinition of color scheme for dark theme */\n",
+ " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
+ " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
+ " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
+ " --sklearn-color-icon: #878787;\n",
+ " }\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 {\n",
+ " color: var(--sklearn-color-text);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 pre {\n",
+ " padding: 0;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 input.sk-hidden--visually {\n",
+ " border: 0;\n",
+ " clip: rect(1px 1px 1px 1px);\n",
+ " clip: rect(1px, 1px, 1px, 1px);\n",
+ " height: 1px;\n",
+ " margin: -1px;\n",
+ " overflow: hidden;\n",
+ " padding: 0;\n",
+ " position: absolute;\n",
+ " width: 1px;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-dashed-wrapped {\n",
+ " border: 1px dashed var(--sklearn-color-line);\n",
+ " margin: 0 0.4em 0.5em 0.4em;\n",
+ " box-sizing: border-box;\n",
+ " padding-bottom: 0.4em;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-container {\n",
+ " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
+ " but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
+ " so we also need the `!important` here to be able to override the\n",
+ " default hidden behavior on the sphinx rendered scikit-learn.org.\n",
+ " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
+ " display: inline-block !important;\n",
+ " position: relative;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-text-repr-fallback {\n",
+ " display: none;\n",
+ "}\n",
+ "\n",
+ "div.sk-parallel-item,\n",
+ "div.sk-serial,\n",
+ "div.sk-item {\n",
+ " /* draw centered vertical line to link estimators */\n",
+ " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
+ " background-size: 2px 100%;\n",
+ " background-repeat: no-repeat;\n",
+ " background-position: center center;\n",
+ "}\n",
+ "\n",
+ "/* Parallel-specific style estimator block */\n",
+ "\n",
+ "#sk-container-id-23 div.sk-parallel-item::after {\n",
+ " content: \"\";\n",
+ " width: 100%;\n",
+ " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
+ " flex-grow: 1;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-parallel {\n",
+ " display: flex;\n",
+ " align-items: stretch;\n",
+ " justify-content: center;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " position: relative;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-parallel-item {\n",
+ " display: flex;\n",
+ " flex-direction: column;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-parallel-item:first-child::after {\n",
+ " align-self: flex-end;\n",
+ " width: 50%;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-parallel-item:last-child::after {\n",
+ " align-self: flex-start;\n",
+ " width: 50%;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-parallel-item:only-child::after {\n",
+ " width: 0;\n",
+ "}\n",
+ "\n",
+ "/* Serial-specific style estimator block */\n",
+ "\n",
+ "#sk-container-id-23 div.sk-serial {\n",
+ " display: flex;\n",
+ " flex-direction: column;\n",
+ " align-items: center;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " padding-right: 1em;\n",
+ " padding-left: 1em;\n",
+ "}\n",
+ "\n",
+ "\n",
+ "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
+ "clickable and can be expanded/collapsed.\n",
+ "- Pipeline and ColumnTransformer use this feature and define the default style\n",
+ "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
+ "*/\n",
+ "\n",
+ "/* Pipeline and ColumnTransformer style (default) */\n",
+ "\n",
+ "#sk-container-id-23 div.sk-toggleable {\n",
+ " /* Default theme specific background. It is overwritten whether we have a\n",
+ " specific estimator or a Pipeline/ColumnTransformer */\n",
+ " background-color: var(--sklearn-color-background);\n",
+ "}\n",
+ "\n",
+ "/* Toggleable label */\n",
+ "#sk-container-id-23 label.sk-toggleable__label {\n",
+ " cursor: pointer;\n",
+ " display: block;\n",
+ " width: 100%;\n",
+ " margin-bottom: 0;\n",
+ " padding: 0.5em;\n",
+ " box-sizing: border-box;\n",
+ " text-align: center;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 label.sk-toggleable__label-arrow:before {\n",
+ " /* Arrow on the left of the label */\n",
+ " content: \"▸\";\n",
+ " float: left;\n",
+ " margin-right: 0.25em;\n",
+ " color: var(--sklearn-color-icon);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 label.sk-toggleable__label-arrow:hover:before {\n",
+ " color: var(--sklearn-color-text);\n",
+ "}\n",
+ "\n",
+ "/* Toggleable content - dropdown */\n",
+ "\n",
+ "#sk-container-id-23 div.sk-toggleable__content {\n",
+ " max-height: 0;\n",
+ " max-width: 0;\n",
+ " overflow: hidden;\n",
+ " text-align: left;\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-toggleable__content.fitted {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-toggleable__content pre {\n",
+ " margin: 0.2em;\n",
+ " border-radius: 0.25em;\n",
+ " color: var(--sklearn-color-text);\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-toggleable__content.fitted pre {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
+ " /* Expand drop-down */\n",
+ " max-height: 200px;\n",
+ " max-width: 100%;\n",
+ " overflow: auto;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
+ " content: \"▾\";\n",
+ "}\n",
+ "\n",
+ "/* Pipeline/ColumnTransformer-specific style */\n",
+ "\n",
+ "#sk-container-id-23 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Estimator-specific style */\n",
+ "\n",
+ "/* Colorize estimator box */\n",
+ "#sk-container-id-23 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-label label.sk-toggleable__label,\n",
+ "#sk-container-id-23 div.sk-label label {\n",
+ " /* The background is the default theme color */\n",
+ " color: var(--sklearn-color-text-on-default-background);\n",
+ "}\n",
+ "\n",
+ "/* On hover, darken the color of the background */\n",
+ "#sk-container-id-23 div.sk-label:hover label.sk-toggleable__label {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Label box, darken color on hover, fitted */\n",
+ "#sk-container-id-23 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Estimator label */\n",
+ "\n",
+ "#sk-container-id-23 div.sk-label label {\n",
+ " font-family: monospace;\n",
+ " font-weight: bold;\n",
+ " display: inline-block;\n",
+ " line-height: 1.2em;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-label-container {\n",
+ " text-align: center;\n",
+ "}\n",
+ "\n",
+ "/* Estimator-specific */\n",
+ "#sk-container-id-23 div.sk-estimator {\n",
+ " font-family: monospace;\n",
+ " border: 1px dotted var(--sklearn-color-border-box);\n",
+ " border-radius: 0.25em;\n",
+ " box-sizing: border-box;\n",
+ " margin-bottom: 0.5em;\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-estimator.fitted {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "/* on hover */\n",
+ "#sk-container-id-23 div.sk-estimator:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 div.sk-estimator.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
+ "\n",
+ "/* Common style for \"i\" and \"?\" */\n",
+ "\n",
+ ".sk-estimator-doc-link,\n",
+ "a:link.sk-estimator-doc-link,\n",
+ "a:visited.sk-estimator-doc-link {\n",
+ " float: right;\n",
+ " font-size: smaller;\n",
+ " line-height: 1em;\n",
+ " font-family: monospace;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " border-radius: 1em;\n",
+ " height: 1em;\n",
+ " width: 1em;\n",
+ " text-decoration: none !important;\n",
+ " margin-left: 1ex;\n",
+ " /* unfitted */\n",
+ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-unfitted-level-1);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link.fitted,\n",
+ "a:link.sk-estimator-doc-link.fitted,\n",
+ "a:visited.sk-estimator-doc-link.fitted {\n",
+ " /* fitted */\n",
+ " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-fitted-level-1);\n",
+ "}\n",
+ "\n",
+ "/* On hover */\n",
+ "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
+ ".sk-estimator-doc-link:hover,\n",
+ "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
+ ".sk-estimator-doc-link:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
+ ".sk-estimator-doc-link.fitted:hover,\n",
+ "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
+ ".sk-estimator-doc-link.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "/* Span, style for the box shown on hovering the info icon */\n",
+ ".sk-estimator-doc-link span {\n",
+ " display: none;\n",
+ " z-index: 9999;\n",
+ " position: relative;\n",
+ " font-weight: normal;\n",
+ " right: .2ex;\n",
+ " padding: .5ex;\n",
+ " margin: .5ex;\n",
+ " width: min-content;\n",
+ " min-width: 20ex;\n",
+ " max-width: 50ex;\n",
+ " color: var(--sklearn-color-text);\n",
+ " box-shadow: 2pt 2pt 4pt #999;\n",
+ " /* unfitted */\n",
+ " background: var(--sklearn-color-unfitted-level-0);\n",
+ " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link.fitted span {\n",
+ " /* fitted */\n",
+ " background: var(--sklearn-color-fitted-level-0);\n",
+ " border: var(--sklearn-color-fitted-level-3);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link:hover span {\n",
+ " display: block;\n",
+ "}\n",
+ "\n",
+ "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
+ "\n",
+ "#sk-container-id-23 a.estimator_doc_link {\n",
+ " float: right;\n",
+ " font-size: 1rem;\n",
+ " line-height: 1em;\n",
+ " font-family: monospace;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " border-radius: 1rem;\n",
+ " height: 1rem;\n",
+ " width: 1rem;\n",
+ " text-decoration: none;\n",
+ " /* unfitted */\n",
+ " color: var(--sklearn-color-unfitted-level-1);\n",
+ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 a.estimator_doc_link.fitted {\n",
+ " /* fitted */\n",
+ " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-fitted-level-1);\n",
+ "}\n",
+ "\n",
+ "/* On hover */\n",
+ "#sk-container-id-23 a.estimator_doc_link:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-23 a.estimator_doc_link.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-3);\n",
+ "}\n",
+ "</style><div id=\"sk-container-id-23\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>DecisionTreeRegressor(max_depth=2, random_state=11)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-23\" type=\"checkbox\" checked><label for=\"sk-estimator-id-23\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> DecisionTreeRegressor<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.tree.DecisionTreeRegressor.html\">?<span>Documentation for DecisionTreeRegressor</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeRegressor(max_depth=2, random_state=11)</pre></div> </div></div></div></div>"
+ ],
+ "text/plain": [
+ "DecisionTreeRegressor(max_depth=2, random_state=11)"
+ ]
+ },
+ "execution_count": 56,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y2 = y - tree_reg1.predict(X)\n",
+ "tree_reg2 = DecisionTreeRegressor(max_depth=2,random_state=11)\n",
+ "tree_reg2.fit(X,y2)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 57,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "<style>#sk-container-id-24 {\n",
+ " /* Definition of color scheme common for light and dark mode */\n",
+ " --sklearn-color-text: black;\n",
+ " --sklearn-color-line: gray;\n",
+ " /* Definition of color scheme for unfitted estimators */\n",
+ " --sklearn-color-unfitted-level-0: #fff5e6;\n",
+ " --sklearn-color-unfitted-level-1: #f6e4d2;\n",
+ " --sklearn-color-unfitted-level-2: #ffe0b3;\n",
+ " --sklearn-color-unfitted-level-3: chocolate;\n",
+ " /* Definition of color scheme for fitted estimators */\n",
+ " --sklearn-color-fitted-level-0: #f0f8ff;\n",
+ " --sklearn-color-fitted-level-1: #d4ebff;\n",
+ " --sklearn-color-fitted-level-2: #b3dbfd;\n",
+ " --sklearn-color-fitted-level-3: cornflowerblue;\n",
+ "\n",
+ " /* Specific color for light theme */\n",
+ " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
+ " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
+ " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
+ " --sklearn-color-icon: #696969;\n",
+ "\n",
+ " @media (prefers-color-scheme: dark) {\n",
+ " /* Redefinition of color scheme for dark theme */\n",
+ " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
+ " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
+ " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
+ " --sklearn-color-icon: #878787;\n",
+ " }\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 {\n",
+ " color: var(--sklearn-color-text);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 pre {\n",
+ " padding: 0;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 input.sk-hidden--visually {\n",
+ " border: 0;\n",
+ " clip: rect(1px 1px 1px 1px);\n",
+ " clip: rect(1px, 1px, 1px, 1px);\n",
+ " height: 1px;\n",
+ " margin: -1px;\n",
+ " overflow: hidden;\n",
+ " padding: 0;\n",
+ " position: absolute;\n",
+ " width: 1px;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-dashed-wrapped {\n",
+ " border: 1px dashed var(--sklearn-color-line);\n",
+ " margin: 0 0.4em 0.5em 0.4em;\n",
+ " box-sizing: border-box;\n",
+ " padding-bottom: 0.4em;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-container {\n",
+ " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
+ " but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
+ " so we also need the `!important` here to be able to override the\n",
+ " default hidden behavior on the sphinx rendered scikit-learn.org.\n",
+ " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
+ " display: inline-block !important;\n",
+ " position: relative;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-text-repr-fallback {\n",
+ " display: none;\n",
+ "}\n",
+ "\n",
+ "div.sk-parallel-item,\n",
+ "div.sk-serial,\n",
+ "div.sk-item {\n",
+ " /* draw centered vertical line to link estimators */\n",
+ " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
+ " background-size: 2px 100%;\n",
+ " background-repeat: no-repeat;\n",
+ " background-position: center center;\n",
+ "}\n",
+ "\n",
+ "/* Parallel-specific style estimator block */\n",
+ "\n",
+ "#sk-container-id-24 div.sk-parallel-item::after {\n",
+ " content: \"\";\n",
+ " width: 100%;\n",
+ " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
+ " flex-grow: 1;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-parallel {\n",
+ " display: flex;\n",
+ " align-items: stretch;\n",
+ " justify-content: center;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " position: relative;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-parallel-item {\n",
+ " display: flex;\n",
+ " flex-direction: column;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-parallel-item:first-child::after {\n",
+ " align-self: flex-end;\n",
+ " width: 50%;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-parallel-item:last-child::after {\n",
+ " align-self: flex-start;\n",
+ " width: 50%;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-parallel-item:only-child::after {\n",
+ " width: 0;\n",
+ "}\n",
+ "\n",
+ "/* Serial-specific style estimator block */\n",
+ "\n",
+ "#sk-container-id-24 div.sk-serial {\n",
+ " display: flex;\n",
+ " flex-direction: column;\n",
+ " align-items: center;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " padding-right: 1em;\n",
+ " padding-left: 1em;\n",
+ "}\n",
+ "\n",
+ "\n",
+ "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
+ "clickable and can be expanded/collapsed.\n",
+ "- Pipeline and ColumnTransformer use this feature and define the default style\n",
+ "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
+ "*/\n",
+ "\n",
+ "/* Pipeline and ColumnTransformer style (default) */\n",
+ "\n",
+ "#sk-container-id-24 div.sk-toggleable {\n",
+ " /* Default theme specific background. It is overwritten whether we have a\n",
+ " specific estimator or a Pipeline/ColumnTransformer */\n",
+ " background-color: var(--sklearn-color-background);\n",
+ "}\n",
+ "\n",
+ "/* Toggleable label */\n",
+ "#sk-container-id-24 label.sk-toggleable__label {\n",
+ " cursor: pointer;\n",
+ " display: block;\n",
+ " width: 100%;\n",
+ " margin-bottom: 0;\n",
+ " padding: 0.5em;\n",
+ " box-sizing: border-box;\n",
+ " text-align: center;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 label.sk-toggleable__label-arrow:before {\n",
+ " /* Arrow on the left of the label */\n",
+ " content: \"▸\";\n",
+ " float: left;\n",
+ " margin-right: 0.25em;\n",
+ " color: var(--sklearn-color-icon);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 label.sk-toggleable__label-arrow:hover:before {\n",
+ " color: var(--sklearn-color-text);\n",
+ "}\n",
+ "\n",
+ "/* Toggleable content - dropdown */\n",
+ "\n",
+ "#sk-container-id-24 div.sk-toggleable__content {\n",
+ " max-height: 0;\n",
+ " max-width: 0;\n",
+ " overflow: hidden;\n",
+ " text-align: left;\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-toggleable__content.fitted {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-toggleable__content pre {\n",
+ " margin: 0.2em;\n",
+ " border-radius: 0.25em;\n",
+ " color: var(--sklearn-color-text);\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-toggleable__content.fitted pre {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
+ " /* Expand drop-down */\n",
+ " max-height: 200px;\n",
+ " max-width: 100%;\n",
+ " overflow: auto;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
+ " content: \"▾\";\n",
+ "}\n",
+ "\n",
+ "/* Pipeline/ColumnTransformer-specific style */\n",
+ "\n",
+ "#sk-container-id-24 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Estimator-specific style */\n",
+ "\n",
+ "/* Colorize estimator box */\n",
+ "#sk-container-id-24 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-label label.sk-toggleable__label,\n",
+ "#sk-container-id-24 div.sk-label label {\n",
+ " /* The background is the default theme color */\n",
+ " color: var(--sklearn-color-text-on-default-background);\n",
+ "}\n",
+ "\n",
+ "/* On hover, darken the color of the background */\n",
+ "#sk-container-id-24 div.sk-label:hover label.sk-toggleable__label {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Label box, darken color on hover, fitted */\n",
+ "#sk-container-id-24 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Estimator label */\n",
+ "\n",
+ "#sk-container-id-24 div.sk-label label {\n",
+ " font-family: monospace;\n",
+ " font-weight: bold;\n",
+ " display: inline-block;\n",
+ " line-height: 1.2em;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-label-container {\n",
+ " text-align: center;\n",
+ "}\n",
+ "\n",
+ "/* Estimator-specific */\n",
+ "#sk-container-id-24 div.sk-estimator {\n",
+ " font-family: monospace;\n",
+ " border: 1px dotted var(--sklearn-color-border-box);\n",
+ " border-radius: 0.25em;\n",
+ " box-sizing: border-box;\n",
+ " margin-bottom: 0.5em;\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-estimator.fitted {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "/* on hover */\n",
+ "#sk-container-id-24 div.sk-estimator:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 div.sk-estimator.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
+ "\n",
+ "/* Common style for \"i\" and \"?\" */\n",
+ "\n",
+ ".sk-estimator-doc-link,\n",
+ "a:link.sk-estimator-doc-link,\n",
+ "a:visited.sk-estimator-doc-link {\n",
+ " float: right;\n",
+ " font-size: smaller;\n",
+ " line-height: 1em;\n",
+ " font-family: monospace;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " border-radius: 1em;\n",
+ " height: 1em;\n",
+ " width: 1em;\n",
+ " text-decoration: none !important;\n",
+ " margin-left: 1ex;\n",
+ " /* unfitted */\n",
+ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-unfitted-level-1);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link.fitted,\n",
+ "a:link.sk-estimator-doc-link.fitted,\n",
+ "a:visited.sk-estimator-doc-link.fitted {\n",
+ " /* fitted */\n",
+ " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-fitted-level-1);\n",
+ "}\n",
+ "\n",
+ "/* On hover */\n",
+ "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
+ ".sk-estimator-doc-link:hover,\n",
+ "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
+ ".sk-estimator-doc-link:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
+ ".sk-estimator-doc-link.fitted:hover,\n",
+ "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
+ ".sk-estimator-doc-link.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "/* Span, style for the box shown on hovering the info icon */\n",
+ ".sk-estimator-doc-link span {\n",
+ " display: none;\n",
+ " z-index: 9999;\n",
+ " position: relative;\n",
+ " font-weight: normal;\n",
+ " right: .2ex;\n",
+ " padding: .5ex;\n",
+ " margin: .5ex;\n",
+ " width: min-content;\n",
+ " min-width: 20ex;\n",
+ " max-width: 50ex;\n",
+ " color: var(--sklearn-color-text);\n",
+ " box-shadow: 2pt 2pt 4pt #999;\n",
+ " /* unfitted */\n",
+ " background: var(--sklearn-color-unfitted-level-0);\n",
+ " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link.fitted span {\n",
+ " /* fitted */\n",
+ " background: var(--sklearn-color-fitted-level-0);\n",
+ " border: var(--sklearn-color-fitted-level-3);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link:hover span {\n",
+ " display: block;\n",
+ "}\n",
+ "\n",
+ "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
+ "\n",
+ "#sk-container-id-24 a.estimator_doc_link {\n",
+ " float: right;\n",
+ " font-size: 1rem;\n",
+ " line-height: 1em;\n",
+ " font-family: monospace;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " border-radius: 1rem;\n",
+ " height: 1rem;\n",
+ " width: 1rem;\n",
+ " text-decoration: none;\n",
+ " /* unfitted */\n",
+ " color: var(--sklearn-color-unfitted-level-1);\n",
+ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 a.estimator_doc_link.fitted {\n",
+ " /* fitted */\n",
+ " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-fitted-level-1);\n",
+ "}\n",
+ "\n",
+ "/* On hover */\n",
+ "#sk-container-id-24 a.estimator_doc_link:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-24 a.estimator_doc_link.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-3);\n",
+ "}\n",
+ "</style><div id=\"sk-container-id-24\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>DecisionTreeRegressor(max_depth=2, random_state=12)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-24\" type=\"checkbox\" checked><label for=\"sk-estimator-id-24\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> DecisionTreeRegressor<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.tree.DecisionTreeRegressor.html\">?<span>Documentation for DecisionTreeRegressor</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeRegressor(max_depth=2, random_state=12)</pre></div> </div></div></div></div>"
+ ],
+ "text/plain": [
+ "DecisionTreeRegressor(max_depth=2, random_state=12)"
+ ]
+ },
+ "execution_count": 57,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y3 = y2 - tree_reg2.predict(X)\n",
+ "tree_reg3 = DecisionTreeRegressor(max_depth=2, random_state=12)\n",
+ "tree_reg3.fit(X,y3)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "X_new = np.array([[-.4], [0], [.5]])"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 59,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([0.47381305, 0.01428015, 0.66853101])"
+ ]
+ },
+ "execution_count": 59,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Sum the predicted outputs of each tree where each tree tries to correct\n",
+ "# errors in the prior trees.\n",
+ "\n",
+ "sum(tree.predict(X_new) for tree in (tree_reg1, tree_reg2, tree_reg3))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 60,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "<matplotlib.collections.PathCollection at 0x7fda6c102a50>"
+ ]
+ },
+ "execution_count": 60,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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OKDKykpVV1erublZS5cu1apVq9TZ2RmxfUZGhr7//e+rsbFR//u//6uKigpVVFTohRdemHDxAAAg8Tksy7LsdCgpKdGKFSu0a9cuSVIoFFJeXp42b96sLVu2xLSPZcuW6aabbtJ9990XU/tAICCPxyO/36+0tDQ75QIAAENiPX/bujLS39+vQ4cOqays7PMdOJ0qKytTY2PjmP0ty1JDQ4OOHDmi66+/Pmq7vr4+BQKBIS8AADAz2QojXV1dCgaDys7OHrI9OztbPp8vaj+/36958+YpOTlZN910kx588EHdeOONUdvX1NTI4/GEX3l5eXbKBAAACWRKnqZJTU3Vm2++qddff13/+q//qsrKSr300ktR21dVVcnv94dfJ0+enIoyAQCAAXPsNM7MzFRSUpI6OjqGbO/o6JDX643az+l06oorrpAkFRYW6u2331ZNTY2++tWvRmzvcrnkcrnslAYAABKUrSsjycnJKioqUkNDQ3hbKBRSQ0ODSktLY95PKBRSX1+fnaEBAMAMZevKiCRVVlZq48aNWr58uYqLi1VbW6ve3l5VVFRIkjZs2KDc3FzV1NRIunD/x/Lly7Vo0SL19fXp+eef1+OPP649e/bE95MAAICEZDuMlJeX6/Tp09q6dat8Pp8KCwtVX18fvqn1xIkTcjo/v+DS29urv/u7v9P777+viy66SFdddZX27dun8vLy+H0KAACQsGzPM2IC84wAAJB4JmWeEQAAgHgjjAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKPGFUZ2796t/Px8ud1ulZSUqKmpKWrbvXv3auXKlZo/f77mz5+vsrKyUdsDAIDZxXYYOXDggCorK1VdXa3m5mYtXbpUq1atUmdnZ8T2L730ktatW6cXX3xRjY2NysvL09e+9jV98MEHEy4eAAAkPodlWZadDiUlJVqxYoV27dolSQqFQsrLy9PmzZu1ZcuWMfsHg0HNnz9fu3bt0oYNG2IaMxAIyOPxyO/3Ky0tzU65AADAkFjP37aujPT39+vQoUMqKyv7fAdOp8rKytTY2BjTPs6ePatPP/1UGRkZUdv09fUpEAgMeQEAgJnJVhjp6upSMBhUdnb2kO3Z2dny+Xwx7eOee+7RggULhgSa4WpqauTxeMKvvLw8O2UCAIAEMqVP0+zYsUP79+/X008/LbfbHbVdVVWV/H5/+HXy5MkprBIAAEylOXYaZ2ZmKikpSR0dHUO2d3R0yOv1jtp3586d2rFjh371q1/p6quvHrWty+WSy+WyUxoAAEhQtq6MJCcnq6ioSA0NDeFtoVBIDQ0NKi0tjdrv3/7t33Tfffepvr5ey5cvH3+1AABgxrF1ZUSSKisrtXHjRi1fvlzFxcWqra1Vb2+vKioqJEkbNmxQbm6uampqJEk/+tGPtHXrVv30pz9Vfn5++N6SefPmad68eXH8KAAAIBHZDiPl5eU6ffq0tm7dKp/Pp8LCQtXX14dvaj1x4oSczs8vuOzZs0f9/f36i7/4iyH7qa6u1rZt2yZWPQAASHi25xkxgXlGAABIPJMyzwgAAEC8EUYAAIBRhBEAAGAUYQQAABhFGAEAAEYRRgAAgFGEEQAAYJTtSc8AAPERDFlqautWZ885ZaW6VbwwQ0lOx5jvxbKPWPtH21fmPJdkSV29fbb7+/yfqLu3XxnzXMpKdSkUtPTasQ8lOVS66BKtyM/Q623danyvK7zt2ssvGXP/Y9WZebFLckhdH8deM6YHJj0DAAPqW9q1/WCr2v3nwttyPG5VrymQpKjvrV6cM+Y+bl6ao2d/3z5m/7HqGWyi/QdzSBp+4klPmasdf74k6v7HM85YNWPyxXr+JowAwBSrb2nXpn3NI07IkU7Sg9+TpD3rl2n14pyo+4hmeP9Y6oln/1jVRdj/eMcZrWZMDWZgBYBpKBiytP1ga8QT6mgn2YH3th9sVf/5UNR9xNI/GPq852j1xLN/rIbvfyLjRKsZ0w9hBACmUFNbd0xfMURiSWr3n9PjjcfGtY+B/k1t3eOqZ6L9YzF8/xMdJ1LNmH4IIwAwhTp7Jn7iPt59Nm41jKeeifa3s/94jTMZdSJ+CCMAMIWyUt0T3sdlGSlxq2E89Uy0v539x2ucyagT8UMYAYApVLwwQzket8bzwKlDF54Qua00f1z7GOhfvDBjXPWM1j9ehu9/PHUOFqlmTD+EEQCYQklOR/jx3eEnVkeU/x78c/WaAiXPcUbdRzSD+w+ee2O0euz0j9dsHsP3b7fOwaLVjOmHMAIAU2z14hztWb9M3mFXFLwet+rWL1NdlPcGP6IabR85Hre+ff3CEVcrhvePpR67/WO9QhIpFsxPmTvqY72x1hlrzZhemGcEAAxhBlZmYJ3pmPQMAAAYFev5m7VpMGmCIUuvHv3Q1m8/dn9TlBTTtlh+o3v16Id65WiXTp35RNlpbvnP9et0oE/nzoe0JDdd/+eKTF276BJJutD2vS6d+ugTLUi/SNcuvETOJIc6A+fCvxF609wqumy+Dh3/yFYtADDbcGUEk6K+pV1bnjqsM2c/HbJ9tPUn7K7VkZ4yV5KGjBFpWyxrakSqNZKU5CRJ0tn+4JhtJcnpkAZP/MhaGQBmE76mgTH1Le36233No7YZfqPaeNbqiNVYa2qMVWs8sVYGgNmEtWlgRDBkaduzb43ZbvBaEeNdqyNWo62pEUut8cRaGQAwEmEEcdXU1i1foG/MdoPXioj32haRRFtTI5Zap6IWAJjNCCOIKzvrPwy0nco1IyZ7TQ07TI8PANMFYQRxZWf9h4G2U7lmxGSvqWGH6fEBYLogjCCuihdmyJvmGrPd4LUiJrJWR6yirakRS61TUQsAzGaEEcRVktOhbTd/ecx2g9eKGO9aHbEabU2NWGqNJ9bKAICRCCOIu9WLc1S3fll4zo/Boq0/MZ61OuanzB0xRnqEbWOtqRGt1khSkpPCc43EYnjeYK0MABiJeUYwaZiBlRlYAcxuTHoGAACMYtIzAACQEAgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADBqXGFk9+7dys/Pl9vtVklJiZqamqK2feutt/SNb3xD+fn5cjgcqq2tHW+tAABgBrIdRg4cOKDKykpVV1erublZS5cu1apVq9TZ2Rmx/dmzZ3X55Zdrx44d8nq9Ey4YAADMLLbDyAMPPKA77rhDFRUVKigoUF1dnVJSUvTII49EbL9ixQrdf//9+uY3vymXa+pXSAUAANObrTDS39+vQ4cOqays7PMdOJ0qKytTY2Nj3Irq6+tTIBAY8gIAADOTrTDS1dWlYDCo7OzsIduzs7Pl8/niVlRNTY08Hk/4lZeXF7d9AwCA6WVaPk1TVVUlv98ffp08edJ0SQAAYJLMsdM4MzNTSUlJ6ujoGLK9o6Mjrjenulwu7i8BAGCWsHVlJDk5WUVFRWpoaAhvC4VCamhoUGlpadyLAwAAM5+tKyOSVFlZqY0bN2r58uUqLi5WbW2tent7VVFRIUnasGGDcnNzVVNTI+nCTa+tra3h//7ggw/05ptvat68ebriiivi+FEAAEAish1GysvLdfr0aW3dulU+n0+FhYWqr68P39R64sQJOZ2fX3A5deqUrrnmmvDPO3fu1M6dO3XDDTfopZdemvgnAAAACc1hWZZluoixBAIBeTwe+f1+paWlmS4HAADEINbz97R8mgYAAMwehBEAAGAUYQQAABhFGAEAAEYRRgAAgFGEEQAAYBRhBAAAGEUYAQAARhFGAACAUYQRAABglO21aQCMTzBkqamtW50955Q5zyVZUmfPOXX39itjnkveNLeKF2YoyemI2Ccr9cL7kkZsG9wHABINYQSYAvUt7dp+sFXt/nOjtsvxuFW9pkCrF+dE7JOeMleSdObspxH7AEAiYqE8YJLVt7Rr075mxfo/mkPSndcv1EO/aYupz8A1kT3rlxFIAEwrLJQHTAPBkKXtB1tjDiID9v5PbEFEUrjd9oOtCoam/e8WADACYQSYRE1t3WN+NTOcJcluprAktfvPqamt215HAJgGCCPAJOrssRdEEm08AIgHwggwibJS3TN6PACIB8IIMImKF2Yox+OWnQdvHZLsPqnr0IWnagYe/QWAREIYASZRktOh6jUFkmQrkNyxcqEcMfYZaFO9poD5RgAkJMIIMMlWL87RnvXL5PWM/RVKjsetPeuXqerrBRH7pKfMDc81MsD7WR8e6wWQqJhnBJgizMAKYLaJ9fzNDKzAFElyOlS66JK49LG7HwCYzviaBgAAGEUYAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUk54BCSzSDK2jzcY62oyuvsA5dX/cp4yLk+X1XKTCvHT99LXjOt59VpdlpOi20nwlz3HGNG4sdQ20GT7uQNtgyNIr/69L//eN93W2P6iiy+brKm+qXj/2kSRLpZdn6trPJn8bPFbRZfN16PhH8vk/GTG7bbS2sRy/4TPohoKWXj32oU599Im8aW5lzEtWZqpbWakXZtft6u1T5sUuySF1fdw3YryBWXi7evuYSRezHtPBAwmqvqVd2w+2qt1/Lrwtx+NW9ZqCiOvURGo/sM7NmbOfjjme03FhAb9rLp0/6rix1BWpzeC2Ny/N0eOvntDZ/uCoNaUkJyl5jnNI/U6HFIrwr1qkzzq8bbTjN1q9dkSrbbSxgUQW6/mbMAIkoPqWdm3a16zh//MO/F49fOG8aO3jZWDcO69fqId+0zZqXZImtZaJiHT8JvvYjTY2kOhiPX9zzwiQYIIhS9sPtkY8OQ5s236wVcHPfgUfrX28WJ+99v7PyCAyuK5tz76lbc9Obi0TMfz4TcWxizY2MJsQRoAE09TWPerXBZakdv85NbV1x9Q+nkY7h1qSfIE++QJTU8t4DT5+U3nsho8NzCbcwAokmM6e2E6OA+1ibY+hTB43/sww2xBGgASTleq21S7W9hjK5HHjzwyzDV/TAAmmeGGGcjxuRXsI1KELT2YMPMo6Vvt4cjo0al3etAuP2U7nB1gHH7+pPHbDxwZmk3GFkd27dys/P19ut1slJSVqamoatf0TTzyhq666Sm63W0uWLNHzzz8/rmIBSElOh6rXFEgaeeIf+Ll6TUF4zorR2o9XpHEduvDo72h1bbv5y9p2c0Gcqoi/4cdvMo5drGMDs4ntMHLgwAFVVlaqurpazc3NWrp0qVatWqXOzs6I7V955RWtW7dOt99+u9544w2tXbtWa9euVUtLy4SLB2ar1YtztGf9Mnk9Qy/nez3uiI+GRms/P2VueP6NsTgd0revX6i6Ucat+nrBmHUN1JLjifxVRI7HrW9fv1ApyUlj1pSSnDSi/mjn8fQIn3V420jHL9qxG4/RMka0PztgNrA9z0hJSYlWrFihXbt2SZJCoZDy8vK0efNmbdmyZUT78vJy9fb26he/+EV427XXXqvCwkLV1dXFNCbzjACRMQMrM7AC09mkTHrW39+vlJQUPfnkk1q7dm14+8aNG3XmzBn9/Oc/H9Hn0ksvVWVlpf7hH/4hvK26ulrPPPOMfv/738f1wwAAgOkj1vO3radpurq6FAwGlZ2dPWR7dna23nnnnYh9fD5fxPY+ny/qOH19ferr6wv/HAgE7JQJAAASyLR8mqampkYejyf8ysvLM10SAACYJLbCSGZmppKSktTR0TFke0dHh7xeb8Q+Xq/XVntJqqqqkt/vD79Onjxpp0wAAJBAbIWR5ORkFRUVqaGhIbwtFAqpoaFBpaWlEfuUlpYOaS9Jv/zlL6O2lySXy6W0tLQhLwAAMDPZnoG1srJSGzdu1PLly1VcXKza2lr19vaqoqJCkrRhwwbl5uaqpqZGknT33Xfrhhtu0I9//GPddNNN2r9/v373u9/poYceiu8nAQAACcl2GCkvL9fp06e1detW+Xw+FRYWqr6+PnyT6okTJ+R0fn7B5brrrtNPf/pT/eAHP9A//dM/6Ytf/KKeeeYZLV68OH6fAgAAJCzb84yYwKO9AAAknljP39PyaRoAADB7EEYAAIBRtu8ZMWHgmyQmPwMAIHEMnLfHuiMkIcJIT0+PJDH5GQAACainp0cejyfq+wlxA2soFNKpU6eUmpoqh2P2LiQVCASUl5enkydPciPvFOB4Ty2O99ThWE+t2Xy8LctST0+PFixYMORJ2+ES4sqI0+nUF77wBdNlTBtMBDe1ON5Ti+M9dTjWU2u2Hu/RrogM4AZWAABgFGEEAAAYRRhJIC6XS9XV1XK5XKZLmRU43lOL4z11ONZTi+M9toS4gRUAAMxcXBkBAABGEUYAAIBRhBEAAGAUYQQAABhFGJnmuru7deuttyotLU3p6em6/fbb9fHHH8fU17Is/emf/qkcDoeeeeaZyS10hrB7vLu7u7V582ZdeeWVuuiii3TppZfq7//+7+X3+6ew6sSxe/du5efny+12q6SkRE1NTaO2f+KJJ3TVVVfJ7XZryZIlev7556eo0sRn51jv3btXK1eu1Pz58zV//nyVlZWN+WeDoez+3R6wf/9+ORwOrV27dnILnOYII9Pcrbfeqrfeeku//OUv9Ytf/EK/+c1vdOedd8bUt7a2dlZPnz8edo/3qVOndOrUKe3cuVMtLS169NFHVV9fr9tvv30Kq04MBw4cUGVlpaqrq9Xc3KylS5dq1apV6uzsjNj+lVde0bp163T77bfrjTfe0Nq1a7V27Vq1tLRMceWJx+6xfumll7Ru3Tq9+OKLamxsVF5enr72ta/pgw8+mOLKE5Pd4z3g2LFj+t73vqeVK1dOUaXTmIVpq7W11ZJkvf766+Ft//mf/2k5HA7rgw8+GLXvG2+8YeXm5lrt7e2WJOvpp5+e5GoT30SO92A/+9nPrOTkZOvTTz+djDITVnFxsXXXXXeFfw4Gg9aCBQusmpqaiO3/6q/+yrrpppuGbCspKbG+/e1vT2qdM4HdYz3c+fPnrdTUVOuxxx6brBJnlPEc7/Pnz1vXXXed9R//8R/Wxo0brVtuuWUKKp2+uDIyjTU2Nio9PV3Lly8PbysrK5PT6dRrr70Wtd/Zs2f113/919q9e7e8Xu9UlDojjPd4D+f3+5WWlqY5cxJi6acp0d/fr0OHDqmsrCy8zel0qqysTI2NjRH7NDY2DmkvSatWrYraHheM51gPd/bsWX366afKyMiYrDJnjPEe73vvvVdZWVlcRf0M/1pOYz6fT1lZWUO2zZkzRxkZGfL5fFH7ffe739V1112nW265ZbJLnFHGe7wH6+rq0n333RfzV2mzRVdXl4LBoLKzs4dsz87O1jvvvBOxj8/ni9g+1j+L2Wo8x3q4e+65RwsWLBgRBjHSeI73yy+/rIcfflhvvvnmFFSYGLgyYsCWLVvkcDhGfcX6j8Zwzz77rH7961+rtrY2vkUnsMk83oMFAgHddNNNKigo0LZt2yZeOGDAjh07tH//fj399NNyu92my5lxenp6dNttt2nv3r3KzMw0Xc60wZURA/7xH/9Rf/M3fzNqm8svv1xer3fEDVDnz59Xd3d31K9ffv3rX+vo0aNKT08fsv0b3/iGVq5cqZdeemkClSemyTzeA3p6erR69Wqlpqbq6aef1ty5cyda9oySmZmppKQkdXR0DNne0dER9dh6vV5b7XHBeI71gJ07d2rHjh361a9+pauvvnoyy5wx7B7vo0eP6tixY1qzZk14WygUknThSuyRI0e0aNGiyS16OjJ90wqiG7ih8ne/+1142wsvvDDqDZXt7e3W4cOHh7wkWT/5yU+s9957b6pKT0jjOd6WZVl+v9+69tprrRtuuMHq7e2dilITUnFxsfWd73wn/HMwGLRyc3NHvYH1z/7sz4ZsKy0t5QbWGNg91pZlWT/60Y+stLQ0q7GxcSpKnFHsHO9PPvlkxL/Rt9xyi/Unf/In1uHDh62+vr6pLH3aIIxMc6tXr7auueYa67XXXrNefvll64tf/KK1bt268Pvvv/++deWVV1qvvfZa1H2Ip2liZvd4+/1+q6SkxFqyZIn17rvvWu3t7eHX+fPnTX2MaWn//v2Wy+WyHn30Uau1tdW68847rfT0dMvn81mWZVm33XabtWXLlnD73/72t9acOXOsnTt3Wm+//bZVXV1tzZ071zp8+LCpj5Aw7B7rHTt2WMnJydaTTz455O9wT0+PqY+QUOwe7+F4moYwMu19+OGH1rp166x58+ZZaWlpVkVFxZB/INra2ixJ1osvvhh1H4SR2Nk93i+++KIlKeKrra3NzIeYxh588EHr0ksvtZKTk63i4mLr1VdfDb93ww03WBs3bhzS/mc/+5n1pS99yUpOTra+/OUvW88999wUV5y47Bzryy67LOLf4erq6qkvPEHZ/bs9GGHEshyWZVlT/dUQAADAAJ6mAQAARhFGAACAUYQRAABgFGEEAAAYRRgBAABGEUYAAIBRhBEAAGAUYQQAABhFGAEAAEYRRgAAgFGEEQAAYBRhBAAAGPX/AabwpLW6osQUAAAAAElFTkSuQmCC",
+ "text/plain": [
+ "<Figure size 640x480 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "np.random.seed(10)\n",
+ "X_test = np.random.rand(100,1) - .5\n",
+ "y_test = sum(tree.predict(X_test) for tree in (tree_reg1, tree_reg2, tree_reg3))\n",
+ "plt.scatter(X_test,y_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 67,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "<style>#sk-container-id-28 {\n",
+ " /* Definition of color scheme common for light and dark mode */\n",
+ " --sklearn-color-text: black;\n",
+ " --sklearn-color-line: gray;\n",
+ " /* Definition of color scheme for unfitted estimators */\n",
+ " --sklearn-color-unfitted-level-0: #fff5e6;\n",
+ " --sklearn-color-unfitted-level-1: #f6e4d2;\n",
+ " --sklearn-color-unfitted-level-2: #ffe0b3;\n",
+ " --sklearn-color-unfitted-level-3: chocolate;\n",
+ " /* Definition of color scheme for fitted estimators */\n",
+ " --sklearn-color-fitted-level-0: #f0f8ff;\n",
+ " --sklearn-color-fitted-level-1: #d4ebff;\n",
+ " --sklearn-color-fitted-level-2: #b3dbfd;\n",
+ " --sklearn-color-fitted-level-3: cornflowerblue;\n",
+ "\n",
+ " /* Specific color for light theme */\n",
+ " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
+ " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
+ " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
+ " --sklearn-color-icon: #696969;\n",
+ "\n",
+ " @media (prefers-color-scheme: dark) {\n",
+ " /* Redefinition of color scheme for dark theme */\n",
+ " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
+ " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
+ " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
+ " --sklearn-color-icon: #878787;\n",
+ " }\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 {\n",
+ " color: var(--sklearn-color-text);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 pre {\n",
+ " padding: 0;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 input.sk-hidden--visually {\n",
+ " border: 0;\n",
+ " clip: rect(1px 1px 1px 1px);\n",
+ " clip: rect(1px, 1px, 1px, 1px);\n",
+ " height: 1px;\n",
+ " margin: -1px;\n",
+ " overflow: hidden;\n",
+ " padding: 0;\n",
+ " position: absolute;\n",
+ " width: 1px;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-dashed-wrapped {\n",
+ " border: 1px dashed var(--sklearn-color-line);\n",
+ " margin: 0 0.4em 0.5em 0.4em;\n",
+ " box-sizing: border-box;\n",
+ " padding-bottom: 0.4em;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-container {\n",
+ " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
+ " but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
+ " so we also need the `!important` here to be able to override the\n",
+ " default hidden behavior on the sphinx rendered scikit-learn.org.\n",
+ " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
+ " display: inline-block !important;\n",
+ " position: relative;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-text-repr-fallback {\n",
+ " display: none;\n",
+ "}\n",
+ "\n",
+ "div.sk-parallel-item,\n",
+ "div.sk-serial,\n",
+ "div.sk-item {\n",
+ " /* draw centered vertical line to link estimators */\n",
+ " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
+ " background-size: 2px 100%;\n",
+ " background-repeat: no-repeat;\n",
+ " background-position: center center;\n",
+ "}\n",
+ "\n",
+ "/* Parallel-specific style estimator block */\n",
+ "\n",
+ "#sk-container-id-28 div.sk-parallel-item::after {\n",
+ " content: \"\";\n",
+ " width: 100%;\n",
+ " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
+ " flex-grow: 1;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-parallel {\n",
+ " display: flex;\n",
+ " align-items: stretch;\n",
+ " justify-content: center;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " position: relative;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-parallel-item {\n",
+ " display: flex;\n",
+ " flex-direction: column;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-parallel-item:first-child::after {\n",
+ " align-self: flex-end;\n",
+ " width: 50%;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-parallel-item:last-child::after {\n",
+ " align-self: flex-start;\n",
+ " width: 50%;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-parallel-item:only-child::after {\n",
+ " width: 0;\n",
+ "}\n",
+ "\n",
+ "/* Serial-specific style estimator block */\n",
+ "\n",
+ "#sk-container-id-28 div.sk-serial {\n",
+ " display: flex;\n",
+ " flex-direction: column;\n",
+ " align-items: center;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " padding-right: 1em;\n",
+ " padding-left: 1em;\n",
+ "}\n",
+ "\n",
+ "\n",
+ "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
+ "clickable and can be expanded/collapsed.\n",
+ "- Pipeline and ColumnTransformer use this feature and define the default style\n",
+ "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
+ "*/\n",
+ "\n",
+ "/* Pipeline and ColumnTransformer style (default) */\n",
+ "\n",
+ "#sk-container-id-28 div.sk-toggleable {\n",
+ " /* Default theme specific background. It is overwritten whether we have a\n",
+ " specific estimator or a Pipeline/ColumnTransformer */\n",
+ " background-color: var(--sklearn-color-background);\n",
+ "}\n",
+ "\n",
+ "/* Toggleable label */\n",
+ "#sk-container-id-28 label.sk-toggleable__label {\n",
+ " cursor: pointer;\n",
+ " display: block;\n",
+ " width: 100%;\n",
+ " margin-bottom: 0;\n",
+ " padding: 0.5em;\n",
+ " box-sizing: border-box;\n",
+ " text-align: center;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 label.sk-toggleable__label-arrow:before {\n",
+ " /* Arrow on the left of the label */\n",
+ " content: \"▸\";\n",
+ " float: left;\n",
+ " margin-right: 0.25em;\n",
+ " color: var(--sklearn-color-icon);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 label.sk-toggleable__label-arrow:hover:before {\n",
+ " color: var(--sklearn-color-text);\n",
+ "}\n",
+ "\n",
+ "/* Toggleable content - dropdown */\n",
+ "\n",
+ "#sk-container-id-28 div.sk-toggleable__content {\n",
+ " max-height: 0;\n",
+ " max-width: 0;\n",
+ " overflow: hidden;\n",
+ " text-align: left;\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-toggleable__content.fitted {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-toggleable__content pre {\n",
+ " margin: 0.2em;\n",
+ " border-radius: 0.25em;\n",
+ " color: var(--sklearn-color-text);\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-toggleable__content.fitted pre {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
+ " /* Expand drop-down */\n",
+ " max-height: 200px;\n",
+ " max-width: 100%;\n",
+ " overflow: auto;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
+ " content: \"▾\";\n",
+ "}\n",
+ "\n",
+ "/* Pipeline/ColumnTransformer-specific style */\n",
+ "\n",
+ "#sk-container-id-28 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Estimator-specific style */\n",
+ "\n",
+ "/* Colorize estimator box */\n",
+ "#sk-container-id-28 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-label label.sk-toggleable__label,\n",
+ "#sk-container-id-28 div.sk-label label {\n",
+ " /* The background is the default theme color */\n",
+ " color: var(--sklearn-color-text-on-default-background);\n",
+ "}\n",
+ "\n",
+ "/* On hover, darken the color of the background */\n",
+ "#sk-container-id-28 div.sk-label:hover label.sk-toggleable__label {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Label box, darken color on hover, fitted */\n",
+ "#sk-container-id-28 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Estimator label */\n",
+ "\n",
+ "#sk-container-id-28 div.sk-label label {\n",
+ " font-family: monospace;\n",
+ " font-weight: bold;\n",
+ " display: inline-block;\n",
+ " line-height: 1.2em;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-label-container {\n",
+ " text-align: center;\n",
+ "}\n",
+ "\n",
+ "/* Estimator-specific */\n",
+ "#sk-container-id-28 div.sk-estimator {\n",
+ " font-family: monospace;\n",
+ " border: 1px dotted var(--sklearn-color-border-box);\n",
+ " border-radius: 0.25em;\n",
+ " box-sizing: border-box;\n",
+ " margin-bottom: 0.5em;\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-estimator.fitted {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "/* on hover */\n",
+ "#sk-container-id-28 div.sk-estimator:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 div.sk-estimator.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
+ "\n",
+ "/* Common style for \"i\" and \"?\" */\n",
+ "\n",
+ ".sk-estimator-doc-link,\n",
+ "a:link.sk-estimator-doc-link,\n",
+ "a:visited.sk-estimator-doc-link {\n",
+ " float: right;\n",
+ " font-size: smaller;\n",
+ " line-height: 1em;\n",
+ " font-family: monospace;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " border-radius: 1em;\n",
+ " height: 1em;\n",
+ " width: 1em;\n",
+ " text-decoration: none !important;\n",
+ " margin-left: 1ex;\n",
+ " /* unfitted */\n",
+ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-unfitted-level-1);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link.fitted,\n",
+ "a:link.sk-estimator-doc-link.fitted,\n",
+ "a:visited.sk-estimator-doc-link.fitted {\n",
+ " /* fitted */\n",
+ " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-fitted-level-1);\n",
+ "}\n",
+ "\n",
+ "/* On hover */\n",
+ "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
+ ".sk-estimator-doc-link:hover,\n",
+ "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
+ ".sk-estimator-doc-link:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
+ ".sk-estimator-doc-link.fitted:hover,\n",
+ "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
+ ".sk-estimator-doc-link.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "/* Span, style for the box shown on hovering the info icon */\n",
+ ".sk-estimator-doc-link span {\n",
+ " display: none;\n",
+ " z-index: 9999;\n",
+ " position: relative;\n",
+ " font-weight: normal;\n",
+ " right: .2ex;\n",
+ " padding: .5ex;\n",
+ " margin: .5ex;\n",
+ " width: min-content;\n",
+ " min-width: 20ex;\n",
+ " max-width: 50ex;\n",
+ " color: var(--sklearn-color-text);\n",
+ " box-shadow: 2pt 2pt 4pt #999;\n",
+ " /* unfitted */\n",
+ " background: var(--sklearn-color-unfitted-level-0);\n",
+ " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link.fitted span {\n",
+ " /* fitted */\n",
+ " background: var(--sklearn-color-fitted-level-0);\n",
+ " border: var(--sklearn-color-fitted-level-3);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link:hover span {\n",
+ " display: block;\n",
+ "}\n",
+ "\n",
+ "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
+ "\n",
+ "#sk-container-id-28 a.estimator_doc_link {\n",
+ " float: right;\n",
+ " font-size: 1rem;\n",
+ " line-height: 1em;\n",
+ " font-family: monospace;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " border-radius: 1rem;\n",
+ " height: 1rem;\n",
+ " width: 1rem;\n",
+ " text-decoration: none;\n",
+ " /* unfitted */\n",
+ " color: var(--sklearn-color-unfitted-level-1);\n",
+ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 a.estimator_doc_link.fitted {\n",
+ " /* fitted */\n",
+ " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-fitted-level-1);\n",
+ "}\n",
+ "\n",
+ "/* On hover */\n",
+ "#sk-container-id-28 a.estimator_doc_link:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-28 a.estimator_doc_link.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-3);\n",
+ "}\n",
+ "</style><div id=\"sk-container-id-28\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GradientBoostingRegressor(learning_rate=1, max_depth=2, n_estimators=3,\n",
+ " random_state=10)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-28\" type=\"checkbox\" checked><label for=\"sk-estimator-id-28\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> GradientBoostingRegressor<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html\">?<span>Documentation for GradientBoostingRegressor</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>GradientBoostingRegressor(learning_rate=1, max_depth=2, n_estimators=3,\n",
+ " random_state=10)</pre></div> </div></div></div></div>"
+ ],
+ "text/plain": [
+ "GradientBoostingRegressor(learning_rate=1, max_depth=2, n_estimators=3,\n",
+ " random_state=10)"
+ ]
+ },
+ "execution_count": 67,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Using built in gradient boosting\n",
+ "\n",
+ "from sklearn.ensemble import GradientBoostingRegressor\n",
+ "gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=3, learning_rate=1,random_state=10)\n",
+ "gbrt.fit(X,y)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "<matplotlib.collections.PathCollection at 0x7fda67dcaa50>"
+ ]
+ },
+ "execution_count": 68,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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OKDKykpVV1erublZS5cu1apVq9TZ2RmxfUZGhr7//e+rsbFR//u//6uKigpVVFTohRdemHDxAAAg8Tksy7LsdCgpKdGKFSu0a9cuSVIoFFJeXp42b96sLVu2xLSPZcuW6aabbtJ9990XU/tAICCPxyO/36+0tDQ75QIAAENiPX/bujLS39+vQ4cOqays7PMdOJ0qKytTY2PjmP0ty1JDQ4OOHDmi66+/Pmq7vr4+BQKBIS8AADAz2QojXV1dCgaDys7OHrI9OztbPp8vaj+/36958+YpOTlZN910kx588EHdeOONUdvX1NTI4/GEX3l5eXbKBAAACWRKnqZJTU3Vm2++qddff13/+q//qsrKSr300ktR21dVVcnv94dfJ0+enIoyAQCAAXPsNM7MzFRSUpI6OjqGbO/o6JDX643az+l06oorrpAkFRYW6u2331ZNTY2++tWvRmzvcrnkcrnslAYAABKUrSsjycnJKioqUkNDQ3hbKBRSQ0ODSktLY95PKBRSX1+fnaEBAMAMZevKiCRVVlZq48aNWr58uYqLi1VbW6ve3l5VVFRIkjZs2KDc3FzV1NRIunD/x/Lly7Vo0SL19fXp+eef1+OPP649e/bE95MAAICEZDuMlJeX6/Tp09q6dat8Pp8KCwtVX18fvqn1xIkTcjo/v+DS29urv/u7v9P777+viy66SFdddZX27dun8vLy+H0KAACQsGzPM2IC84wAAJB4JmWeEQAAgHgjjAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKMIIwAAwCjCCAAAMIowAgAAjCKMAAAAowgjAADAKMIIAAAwijACAACMIowAAACjCCMAAMAowggAADCKMAIAAIwijAAAAKPGFUZ2796t/Px8ud1ulZSUqKmpKWrbvXv3auXKlZo/f77mz5+vsrKyUdsDAIDZxXYYOXDggCorK1VdXa3m5mYtXbpUq1atUmdnZ8T2L730ktatW6cXX3xRjY2NysvL09e+9jV98MEHEy4eAAAkPodlWZadDiUlJVqxYoV27dol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",
+ "text/plain": [
+ "<Figure size 640x480 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "np.random.seed(10)\n",
+ "X_test = np.random.rand(100,1) - .5\n",
+ "y_test = gbrt.predict(X_test)\n",
+ "plt.scatter(X_test,y_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "<style>#sk-container-id-33 {\n",
+ " /* Definition of color scheme common for light and dark mode */\n",
+ " --sklearn-color-text: black;\n",
+ " --sklearn-color-line: gray;\n",
+ " /* Definition of color scheme for unfitted estimators */\n",
+ " --sklearn-color-unfitted-level-0: #fff5e6;\n",
+ " --sklearn-color-unfitted-level-1: #f6e4d2;\n",
+ " --sklearn-color-unfitted-level-2: #ffe0b3;\n",
+ " --sklearn-color-unfitted-level-3: chocolate;\n",
+ " /* Definition of color scheme for fitted estimators */\n",
+ " --sklearn-color-fitted-level-0: #f0f8ff;\n",
+ " --sklearn-color-fitted-level-1: #d4ebff;\n",
+ " --sklearn-color-fitted-level-2: #b3dbfd;\n",
+ " --sklearn-color-fitted-level-3: cornflowerblue;\n",
+ "\n",
+ " /* Specific color for light theme */\n",
+ " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
+ " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
+ " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
+ " --sklearn-color-icon: #696969;\n",
+ "\n",
+ " @media (prefers-color-scheme: dark) {\n",
+ " /* Redefinition of color scheme for dark theme */\n",
+ " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
+ " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
+ " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
+ " --sklearn-color-icon: #878787;\n",
+ " }\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 {\n",
+ " color: var(--sklearn-color-text);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 pre {\n",
+ " padding: 0;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 input.sk-hidden--visually {\n",
+ " border: 0;\n",
+ " clip: rect(1px 1px 1px 1px);\n",
+ " clip: rect(1px, 1px, 1px, 1px);\n",
+ " height: 1px;\n",
+ " margin: -1px;\n",
+ " overflow: hidden;\n",
+ " padding: 0;\n",
+ " position: absolute;\n",
+ " width: 1px;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-dashed-wrapped {\n",
+ " border: 1px dashed var(--sklearn-color-line);\n",
+ " margin: 0 0.4em 0.5em 0.4em;\n",
+ " box-sizing: border-box;\n",
+ " padding-bottom: 0.4em;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-container {\n",
+ " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
+ " but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
+ " so we also need the `!important` here to be able to override the\n",
+ " default hidden behavior on the sphinx rendered scikit-learn.org.\n",
+ " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
+ " display: inline-block !important;\n",
+ " position: relative;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-text-repr-fallback {\n",
+ " display: none;\n",
+ "}\n",
+ "\n",
+ "div.sk-parallel-item,\n",
+ "div.sk-serial,\n",
+ "div.sk-item {\n",
+ " /* draw centered vertical line to link estimators */\n",
+ " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
+ " background-size: 2px 100%;\n",
+ " background-repeat: no-repeat;\n",
+ " background-position: center center;\n",
+ "}\n",
+ "\n",
+ "/* Parallel-specific style estimator block */\n",
+ "\n",
+ "#sk-container-id-33 div.sk-parallel-item::after {\n",
+ " content: \"\";\n",
+ " width: 100%;\n",
+ " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
+ " flex-grow: 1;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-parallel {\n",
+ " display: flex;\n",
+ " align-items: stretch;\n",
+ " justify-content: center;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " position: relative;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-parallel-item {\n",
+ " display: flex;\n",
+ " flex-direction: column;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-parallel-item:first-child::after {\n",
+ " align-self: flex-end;\n",
+ " width: 50%;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-parallel-item:last-child::after {\n",
+ " align-self: flex-start;\n",
+ " width: 50%;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-parallel-item:only-child::after {\n",
+ " width: 0;\n",
+ "}\n",
+ "\n",
+ "/* Serial-specific style estimator block */\n",
+ "\n",
+ "#sk-container-id-33 div.sk-serial {\n",
+ " display: flex;\n",
+ " flex-direction: column;\n",
+ " align-items: center;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " padding-right: 1em;\n",
+ " padding-left: 1em;\n",
+ "}\n",
+ "\n",
+ "\n",
+ "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
+ "clickable and can be expanded/collapsed.\n",
+ "- Pipeline and ColumnTransformer use this feature and define the default style\n",
+ "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
+ "*/\n",
+ "\n",
+ "/* Pipeline and ColumnTransformer style (default) */\n",
+ "\n",
+ "#sk-container-id-33 div.sk-toggleable {\n",
+ " /* Default theme specific background. It is overwritten whether we have a\n",
+ " specific estimator or a Pipeline/ColumnTransformer */\n",
+ " background-color: var(--sklearn-color-background);\n",
+ "}\n",
+ "\n",
+ "/* Toggleable label */\n",
+ "#sk-container-id-33 label.sk-toggleable__label {\n",
+ " cursor: pointer;\n",
+ " display: block;\n",
+ " width: 100%;\n",
+ " margin-bottom: 0;\n",
+ " padding: 0.5em;\n",
+ " box-sizing: border-box;\n",
+ " text-align: center;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 label.sk-toggleable__label-arrow:before {\n",
+ " /* Arrow on the left of the label */\n",
+ " content: \"▸\";\n",
+ " float: left;\n",
+ " margin-right: 0.25em;\n",
+ " color: var(--sklearn-color-icon);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 label.sk-toggleable__label-arrow:hover:before {\n",
+ " color: var(--sklearn-color-text);\n",
+ "}\n",
+ "\n",
+ "/* Toggleable content - dropdown */\n",
+ "\n",
+ "#sk-container-id-33 div.sk-toggleable__content {\n",
+ " max-height: 0;\n",
+ " max-width: 0;\n",
+ " overflow: hidden;\n",
+ " text-align: left;\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-toggleable__content.fitted {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-toggleable__content pre {\n",
+ " margin: 0.2em;\n",
+ " border-radius: 0.25em;\n",
+ " color: var(--sklearn-color-text);\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-toggleable__content.fitted pre {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
+ " /* Expand drop-down */\n",
+ " max-height: 200px;\n",
+ " max-width: 100%;\n",
+ " overflow: auto;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
+ " content: \"▾\";\n",
+ "}\n",
+ "\n",
+ "/* Pipeline/ColumnTransformer-specific style */\n",
+ "\n",
+ "#sk-container-id-33 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Estimator-specific style */\n",
+ "\n",
+ "/* Colorize estimator box */\n",
+ "#sk-container-id-33 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-label label.sk-toggleable__label,\n",
+ "#sk-container-id-33 div.sk-label label {\n",
+ " /* The background is the default theme color */\n",
+ " color: var(--sklearn-color-text-on-default-background);\n",
+ "}\n",
+ "\n",
+ "/* On hover, darken the color of the background */\n",
+ "#sk-container-id-33 div.sk-label:hover label.sk-toggleable__label {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Label box, darken color on hover, fitted */\n",
+ "#sk-container-id-33 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Estimator label */\n",
+ "\n",
+ "#sk-container-id-33 div.sk-label label {\n",
+ " font-family: monospace;\n",
+ " font-weight: bold;\n",
+ " display: inline-block;\n",
+ " line-height: 1.2em;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-label-container {\n",
+ " text-align: center;\n",
+ "}\n",
+ "\n",
+ "/* Estimator-specific */\n",
+ "#sk-container-id-33 div.sk-estimator {\n",
+ " font-family: monospace;\n",
+ " border: 1px dotted var(--sklearn-color-border-box);\n",
+ " border-radius: 0.25em;\n",
+ " box-sizing: border-box;\n",
+ " margin-bottom: 0.5em;\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-estimator.fitted {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "/* on hover */\n",
+ "#sk-container-id-33 div.sk-estimator:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 div.sk-estimator.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
+ "\n",
+ "/* Common style for \"i\" and \"?\" */\n",
+ "\n",
+ ".sk-estimator-doc-link,\n",
+ "a:link.sk-estimator-doc-link,\n",
+ "a:visited.sk-estimator-doc-link {\n",
+ " float: right;\n",
+ " font-size: smaller;\n",
+ " line-height: 1em;\n",
+ " font-family: monospace;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " border-radius: 1em;\n",
+ " height: 1em;\n",
+ " width: 1em;\n",
+ " text-decoration: none !important;\n",
+ " margin-left: 1ex;\n",
+ " /* unfitted */\n",
+ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-unfitted-level-1);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link.fitted,\n",
+ "a:link.sk-estimator-doc-link.fitted,\n",
+ "a:visited.sk-estimator-doc-link.fitted {\n",
+ " /* fitted */\n",
+ " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-fitted-level-1);\n",
+ "}\n",
+ "\n",
+ "/* On hover */\n",
+ "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
+ ".sk-estimator-doc-link:hover,\n",
+ "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
+ ".sk-estimator-doc-link:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
+ ".sk-estimator-doc-link.fitted:hover,\n",
+ "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
+ ".sk-estimator-doc-link.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "/* Span, style for the box shown on hovering the info icon */\n",
+ ".sk-estimator-doc-link span {\n",
+ " display: none;\n",
+ " z-index: 9999;\n",
+ " position: relative;\n",
+ " font-weight: normal;\n",
+ " right: .2ex;\n",
+ " padding: .5ex;\n",
+ " margin: .5ex;\n",
+ " width: min-content;\n",
+ " min-width: 20ex;\n",
+ " max-width: 50ex;\n",
+ " color: var(--sklearn-color-text);\n",
+ " box-shadow: 2pt 2pt 4pt #999;\n",
+ " /* unfitted */\n",
+ " background: var(--sklearn-color-unfitted-level-0);\n",
+ " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link.fitted span {\n",
+ " /* fitted */\n",
+ " background: var(--sklearn-color-fitted-level-0);\n",
+ " border: var(--sklearn-color-fitted-level-3);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link:hover span {\n",
+ " display: block;\n",
+ "}\n",
+ "\n",
+ "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
+ "\n",
+ "#sk-container-id-33 a.estimator_doc_link {\n",
+ " float: right;\n",
+ " font-size: 1rem;\n",
+ " line-height: 1em;\n",
+ " font-family: monospace;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " border-radius: 1rem;\n",
+ " height: 1rem;\n",
+ " width: 1rem;\n",
+ " text-decoration: none;\n",
+ " /* unfitted */\n",
+ " color: var(--sklearn-color-unfitted-level-1);\n",
+ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 a.estimator_doc_link.fitted {\n",
+ " /* fitted */\n",
+ " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-fitted-level-1);\n",
+ "}\n",
+ "\n",
+ "/* On hover */\n",
+ "#sk-container-id-33 a.estimator_doc_link:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-33 a.estimator_doc_link.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-3);\n",
+ "}\n",
+ "</style><div id=\"sk-container-id-33\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>GradientBoostingRegressor(learning_rate=0.05, max_depth=2, n_estimators=500,\n",
+ " n_iter_no_change=10, random_state=10)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-33\" type=\"checkbox\" checked><label for=\"sk-estimator-id-33\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> GradientBoostingRegressor<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.GradientBoostingRegressor.html\">?<span>Documentation for GradientBoostingRegressor</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>GradientBoostingRegressor(learning_rate=0.05, max_depth=2, n_estimators=500,\n",
+ " n_iter_no_change=10, random_state=10)</pre></div> </div></div></div></div>"
+ ],
+ "text/plain": [
+ "GradientBoostingRegressor(learning_rate=0.05, max_depth=2, n_estimators=500,\n",
+ " n_iter_no_change=10, random_state=10)"
+ ]
+ },
+ "execution_count": 77,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Using early stopping once it has gone 10 iterations with no changes\n",
+ "\n",
+ "from sklearn.ensemble import GradientBoostingRegressor\n",
+ "gbrt = GradientBoostingRegressor(max_depth=2, n_estimators=500, n_iter_no_change=10, learning_rate=.05,random_state=10)\n",
+ "gbrt.fit(X,y)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "<matplotlib.collections.PathCollection at 0x7fda67a68f50>"
+ ]
+ },
+ "execution_count": 78,
+ "metadata": {},
+ "output_type": "execute_result"
+ },
+ {
+ "data": {
+ "image/png": "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97//fWDbiy++GHZCZXd3t3Hs2LExD0nGv/zLvxjvvfdeqrqekeI534ZhGG6321iyZIlx1113GQMDA6noakaqqakxvvWtbwW+9nq9xqxZs8JOYP2zP/uzMdvq6uqYwBqFWM+1YRjG448/bhQXFxttbW2p6GJWieV8f/zxxxP+Rt9zzz3GF7/4RePYsWPG0NBQKrueNggjaW7FihXG7bffbrzxxhvGq6++atx8883G2rVrA8+///77xi233GK88cYbIY8h7qaJWqzn2+12G7W1tcbcuXONd9991+ju7g48rly5Yta3kZYOHjxoFBQUGE899ZTR1dVlfP3rXzdKSkoMl8tlGIZh3HfffcamTZsC7X/7298aU6ZMMXbs2GH84Q9/MJqamoypU6cax44dM+tbyBixnuvt27cb+fn5xs9//vMxv8MXL14061vIKLGe7/G4m4YwkvbOnz9vrF271pg2bZpRXFxsNDQ0jPkDceLECUOS8fLLL4c8BmEkerGe75dfftmQFPRx4sQJc76JNPbDH/7QuP766438/HyjpqbGeP311wPP3XXXXcaGDRvGtP/pT39qfPrTnzby8/ONz372s8avfvWrFPc4c8Vyrm+44Yagv8NNTU2p73iGivV3ezTCiGFYDMMwUj00BAAA4MfdNAAAwFSEEQAAYCrCCAAAMBVhBAAAmIowAgAATEUYAQAApiKMAAAAUxFGAACAqQgjAADAVIQRAABgKsIIAAAw1f8PdU9HhYzzd/EAAAAASUVORK5CYII=",
+ "text/plain": [
+ "<Figure size 640x480 with 1 Axes>"
+ ]
+ },
+ "metadata": {},
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "np.random.seed(10)\n",
+ "X_test = np.random.rand(100,1) - .5\n",
+ "y_test = gbrt.predict(X_test)\n",
+ "plt.scatter(X_test,y_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 79,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "93"
+ ]
+ },
+ "execution_count": 79,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "gbrt.n_estimators_"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "notebook",
+ "language": "python",
+ "name": "notebook"
+ },
+ "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.2"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 2
+}
diff --git a/moonsClassification/votingClassifier.ipynb b/moonsClassification/votingClassifier.ipynb
@@ -1511,6 +1511,603 @@
"y_pred = bag_clf.predict(X_test)\n",
"accuracy_score(y_test,y_pred)"
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 58,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.92"
+ ]
+ },
+ "execution_count": 58,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Expected way to train a random forest (still uses bagging, but underlyingly)\n",
+ "from sklearn.ensemble import RandomForestClassifier\n",
+ "\n",
+ "# Create random forest classifiers with 500 estimators (predictors)\n",
+ "# max leaf nodes of 16 to give regularization, and n_jobs set to -1\n",
+ "# which will allow training on all cpu cores (otherwise can specify some int for that\n",
+ "# number of cores).\n",
+ "\n",
+ "rnd_clf = RandomForestClassifier(n_estimators=500 , max_leaf_nodes=16, n_jobs=-1, random_state=10)\n",
+ "\n",
+ "rnd_clf.fit(X_train, y_train)\n",
+ "y_pred_rf = rnd_clf.predict(X_test)\n",
+ "rnd_clf.score(X_test, y_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 65,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([0.41214609, 0.58785391])"
+ ]
+ },
+ "execution_count": 65,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "rnd_clf.feature_importances_"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 63,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.92"
+ ]
+ },
+ "execution_count": 63,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# extra trees testing (I think this will be very innacurate, but let's see!)\n",
+ "\n",
+ "from sklearn.ensemble import ExtraTreesClassifier\n",
+ "ext_clf = ExtraTreesClassifier(n_estimators=800, max_leaf_nodes=16, n_jobs=-1, random_state=10)\n",
+ "ext_clf.fit(X_train, y_train)\n",
+ "ext_clf.score(X_test, y_test)\n",
+ "\n",
+ "# Damn that's pretty good, and quite fast to train."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 64,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([0.41388478, 0.58611522])"
+ ]
+ },
+ "execution_count": 64,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Gives the relative importance of each feature based on its\n",
+ "# ability to reduce impurity on average. \n",
+ "ext_clf.feature_importances_"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {},
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/home/andrew/gitRepos/myvenv/lib/python3.11/site-packages/sklearn/ensemble/_weight_boosting.py:519: FutureWarning: The SAMME.R algorithm (the default) is deprecated and will be removed in 1.6. Use the SAMME algorithm to circumvent this warning.\n",
+ " warnings.warn(\n"
+ ]
+ },
+ {
+ "data": {
+ "text/html": [
+ "<style>#sk-container-id-16 {\n",
+ " /* Definition of color scheme common for light and dark mode */\n",
+ " --sklearn-color-text: black;\n",
+ " --sklearn-color-line: gray;\n",
+ " /* Definition of color scheme for unfitted estimators */\n",
+ " --sklearn-color-unfitted-level-0: #fff5e6;\n",
+ " --sklearn-color-unfitted-level-1: #f6e4d2;\n",
+ " --sklearn-color-unfitted-level-2: #ffe0b3;\n",
+ " --sklearn-color-unfitted-level-3: chocolate;\n",
+ " /* Definition of color scheme for fitted estimators */\n",
+ " --sklearn-color-fitted-level-0: #f0f8ff;\n",
+ " --sklearn-color-fitted-level-1: #d4ebff;\n",
+ " --sklearn-color-fitted-level-2: #b3dbfd;\n",
+ " --sklearn-color-fitted-level-3: cornflowerblue;\n",
+ "\n",
+ " /* Specific color for light theme */\n",
+ " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
+ " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, white)));\n",
+ " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, black)));\n",
+ " --sklearn-color-icon: #696969;\n",
+ "\n",
+ " @media (prefers-color-scheme: dark) {\n",
+ " /* Redefinition of color scheme for dark theme */\n",
+ " --sklearn-color-text-on-default-background: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
+ " --sklearn-color-background: var(--sg-background-color, var(--theme-background, var(--jp-layout-color0, #111)));\n",
+ " --sklearn-color-border-box: var(--sg-text-color, var(--theme-code-foreground, var(--jp-content-font-color1, white)));\n",
+ " --sklearn-color-icon: #878787;\n",
+ " }\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 {\n",
+ " color: var(--sklearn-color-text);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 pre {\n",
+ " padding: 0;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 input.sk-hidden--visually {\n",
+ " border: 0;\n",
+ " clip: rect(1px 1px 1px 1px);\n",
+ " clip: rect(1px, 1px, 1px, 1px);\n",
+ " height: 1px;\n",
+ " margin: -1px;\n",
+ " overflow: hidden;\n",
+ " padding: 0;\n",
+ " position: absolute;\n",
+ " width: 1px;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-dashed-wrapped {\n",
+ " border: 1px dashed var(--sklearn-color-line);\n",
+ " margin: 0 0.4em 0.5em 0.4em;\n",
+ " box-sizing: border-box;\n",
+ " padding-bottom: 0.4em;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-container {\n",
+ " /* jupyter's `normalize.less` sets `[hidden] { display: none; }`\n",
+ " but bootstrap.min.css set `[hidden] { display: none !important; }`\n",
+ " so we also need the `!important` here to be able to override the\n",
+ " default hidden behavior on the sphinx rendered scikit-learn.org.\n",
+ " See: https://github.com/scikit-learn/scikit-learn/issues/21755 */\n",
+ " display: inline-block !important;\n",
+ " position: relative;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-text-repr-fallback {\n",
+ " display: none;\n",
+ "}\n",
+ "\n",
+ "div.sk-parallel-item,\n",
+ "div.sk-serial,\n",
+ "div.sk-item {\n",
+ " /* draw centered vertical line to link estimators */\n",
+ " background-image: linear-gradient(var(--sklearn-color-text-on-default-background), var(--sklearn-color-text-on-default-background));\n",
+ " background-size: 2px 100%;\n",
+ " background-repeat: no-repeat;\n",
+ " background-position: center center;\n",
+ "}\n",
+ "\n",
+ "/* Parallel-specific style estimator block */\n",
+ "\n",
+ "#sk-container-id-16 div.sk-parallel-item::after {\n",
+ " content: \"\";\n",
+ " width: 100%;\n",
+ " border-bottom: 2px solid var(--sklearn-color-text-on-default-background);\n",
+ " flex-grow: 1;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-parallel {\n",
+ " display: flex;\n",
+ " align-items: stretch;\n",
+ " justify-content: center;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " position: relative;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-parallel-item {\n",
+ " display: flex;\n",
+ " flex-direction: column;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-parallel-item:first-child::after {\n",
+ " align-self: flex-end;\n",
+ " width: 50%;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-parallel-item:last-child::after {\n",
+ " align-self: flex-start;\n",
+ " width: 50%;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-parallel-item:only-child::after {\n",
+ " width: 0;\n",
+ "}\n",
+ "\n",
+ "/* Serial-specific style estimator block */\n",
+ "\n",
+ "#sk-container-id-16 div.sk-serial {\n",
+ " display: flex;\n",
+ " flex-direction: column;\n",
+ " align-items: center;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " padding-right: 1em;\n",
+ " padding-left: 1em;\n",
+ "}\n",
+ "\n",
+ "\n",
+ "/* Toggleable style: style used for estimator/Pipeline/ColumnTransformer box that is\n",
+ "clickable and can be expanded/collapsed.\n",
+ "- Pipeline and ColumnTransformer use this feature and define the default style\n",
+ "- Estimators will overwrite some part of the style using the `sk-estimator` class\n",
+ "*/\n",
+ "\n",
+ "/* Pipeline and ColumnTransformer style (default) */\n",
+ "\n",
+ "#sk-container-id-16 div.sk-toggleable {\n",
+ " /* Default theme specific background. It is overwritten whether we have a\n",
+ " specific estimator or a Pipeline/ColumnTransformer */\n",
+ " background-color: var(--sklearn-color-background);\n",
+ "}\n",
+ "\n",
+ "/* Toggleable label */\n",
+ "#sk-container-id-16 label.sk-toggleable__label {\n",
+ " cursor: pointer;\n",
+ " display: block;\n",
+ " width: 100%;\n",
+ " margin-bottom: 0;\n",
+ " padding: 0.5em;\n",
+ " box-sizing: border-box;\n",
+ " text-align: center;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 label.sk-toggleable__label-arrow:before {\n",
+ " /* Arrow on the left of the label */\n",
+ " content: \"▸\";\n",
+ " float: left;\n",
+ " margin-right: 0.25em;\n",
+ " color: var(--sklearn-color-icon);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 label.sk-toggleable__label-arrow:hover:before {\n",
+ " color: var(--sklearn-color-text);\n",
+ "}\n",
+ "\n",
+ "/* Toggleable content - dropdown */\n",
+ "\n",
+ "#sk-container-id-16 div.sk-toggleable__content {\n",
+ " max-height: 0;\n",
+ " max-width: 0;\n",
+ " overflow: hidden;\n",
+ " text-align: left;\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-toggleable__content.fitted {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-toggleable__content pre {\n",
+ " margin: 0.2em;\n",
+ " border-radius: 0.25em;\n",
+ " color: var(--sklearn-color-text);\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-toggleable__content.fitted pre {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 input.sk-toggleable__control:checked~div.sk-toggleable__content {\n",
+ " /* Expand drop-down */\n",
+ " max-height: 200px;\n",
+ " max-width: 100%;\n",
+ " overflow: auto;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 input.sk-toggleable__control:checked~label.sk-toggleable__label-arrow:before {\n",
+ " content: \"▾\";\n",
+ "}\n",
+ "\n",
+ "/* Pipeline/ColumnTransformer-specific style */\n",
+ "\n",
+ "#sk-container-id-16 div.sk-label input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-label.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Estimator-specific style */\n",
+ "\n",
+ "/* Colorize estimator box */\n",
+ "#sk-container-id-16 div.sk-estimator input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-estimator.fitted input.sk-toggleable__control:checked~label.sk-toggleable__label {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-label label.sk-toggleable__label,\n",
+ "#sk-container-id-16 div.sk-label label {\n",
+ " /* The background is the default theme color */\n",
+ " color: var(--sklearn-color-text-on-default-background);\n",
+ "}\n",
+ "\n",
+ "/* On hover, darken the color of the background */\n",
+ "#sk-container-id-16 div.sk-label:hover label.sk-toggleable__label {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Label box, darken color on hover, fitted */\n",
+ "#sk-container-id-16 div.sk-label.fitted:hover label.sk-toggleable__label.fitted {\n",
+ " color: var(--sklearn-color-text);\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Estimator label */\n",
+ "\n",
+ "#sk-container-id-16 div.sk-label label {\n",
+ " font-family: monospace;\n",
+ " font-weight: bold;\n",
+ " display: inline-block;\n",
+ " line-height: 1.2em;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-label-container {\n",
+ " text-align: center;\n",
+ "}\n",
+ "\n",
+ "/* Estimator-specific */\n",
+ "#sk-container-id-16 div.sk-estimator {\n",
+ " font-family: monospace;\n",
+ " border: 1px dotted var(--sklearn-color-border-box);\n",
+ " border-radius: 0.25em;\n",
+ " box-sizing: border-box;\n",
+ " margin-bottom: 0.5em;\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-0);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-estimator.fitted {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-0);\n",
+ "}\n",
+ "\n",
+ "/* on hover */\n",
+ "#sk-container-id-16 div.sk-estimator:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-2);\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 div.sk-estimator.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-2);\n",
+ "}\n",
+ "\n",
+ "/* Specification for estimator info (e.g. \"i\" and \"?\") */\n",
+ "\n",
+ "/* Common style for \"i\" and \"?\" */\n",
+ "\n",
+ ".sk-estimator-doc-link,\n",
+ "a:link.sk-estimator-doc-link,\n",
+ "a:visited.sk-estimator-doc-link {\n",
+ " float: right;\n",
+ " font-size: smaller;\n",
+ " line-height: 1em;\n",
+ " font-family: monospace;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " border-radius: 1em;\n",
+ " height: 1em;\n",
+ " width: 1em;\n",
+ " text-decoration: none !important;\n",
+ " margin-left: 1ex;\n",
+ " /* unfitted */\n",
+ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-unfitted-level-1);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link.fitted,\n",
+ "a:link.sk-estimator-doc-link.fitted,\n",
+ "a:visited.sk-estimator-doc-link.fitted {\n",
+ " /* fitted */\n",
+ " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-fitted-level-1);\n",
+ "}\n",
+ "\n",
+ "/* On hover */\n",
+ "div.sk-estimator:hover .sk-estimator-doc-link:hover,\n",
+ ".sk-estimator-doc-link:hover,\n",
+ "div.sk-label-container:hover .sk-estimator-doc-link:hover,\n",
+ ".sk-estimator-doc-link:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "div.sk-estimator.fitted:hover .sk-estimator-doc-link.fitted:hover,\n",
+ ".sk-estimator-doc-link.fitted:hover,\n",
+ "div.sk-label-container:hover .sk-estimator-doc-link.fitted:hover,\n",
+ ".sk-estimator-doc-link.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "/* Span, style for the box shown on hovering the info icon */\n",
+ ".sk-estimator-doc-link span {\n",
+ " display: none;\n",
+ " z-index: 9999;\n",
+ " position: relative;\n",
+ " font-weight: normal;\n",
+ " right: .2ex;\n",
+ " padding: .5ex;\n",
+ " margin: .5ex;\n",
+ " width: min-content;\n",
+ " min-width: 20ex;\n",
+ " max-width: 50ex;\n",
+ " color: var(--sklearn-color-text);\n",
+ " box-shadow: 2pt 2pt 4pt #999;\n",
+ " /* unfitted */\n",
+ " background: var(--sklearn-color-unfitted-level-0);\n",
+ " border: .5pt solid var(--sklearn-color-unfitted-level-3);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link.fitted span {\n",
+ " /* fitted */\n",
+ " background: var(--sklearn-color-fitted-level-0);\n",
+ " border: var(--sklearn-color-fitted-level-3);\n",
+ "}\n",
+ "\n",
+ ".sk-estimator-doc-link:hover span {\n",
+ " display: block;\n",
+ "}\n",
+ "\n",
+ "/* \"?\"-specific style due to the `<a>` HTML tag */\n",
+ "\n",
+ "#sk-container-id-16 a.estimator_doc_link {\n",
+ " float: right;\n",
+ " font-size: 1rem;\n",
+ " line-height: 1em;\n",
+ " font-family: monospace;\n",
+ " background-color: var(--sklearn-color-background);\n",
+ " border-radius: 1rem;\n",
+ " height: 1rem;\n",
+ " width: 1rem;\n",
+ " text-decoration: none;\n",
+ " /* unfitted */\n",
+ " color: var(--sklearn-color-unfitted-level-1);\n",
+ " border: var(--sklearn-color-unfitted-level-1) 1pt solid;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 a.estimator_doc_link.fitted {\n",
+ " /* fitted */\n",
+ " border: var(--sklearn-color-fitted-level-1) 1pt solid;\n",
+ " color: var(--sklearn-color-fitted-level-1);\n",
+ "}\n",
+ "\n",
+ "/* On hover */\n",
+ "#sk-container-id-16 a.estimator_doc_link:hover {\n",
+ " /* unfitted */\n",
+ " background-color: var(--sklearn-color-unfitted-level-3);\n",
+ " color: var(--sklearn-color-background);\n",
+ " text-decoration: none;\n",
+ "}\n",
+ "\n",
+ "#sk-container-id-16 a.estimator_doc_link.fitted:hover {\n",
+ " /* fitted */\n",
+ " background-color: var(--sklearn-color-fitted-level-3);\n",
+ "}\n",
+ "</style><div id=\"sk-container-id-16\" class=\"sk-top-container\"><div class=\"sk-text-repr-fallback\"><pre>AdaBoostClassifier(estimator=DecisionTreeClassifier(max_depth=1),\n",
+ " learning_rate=0.5, n_estimators=30, random_state=10)</pre><b>In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. <br />On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.</b></div><div class=\"sk-container\" hidden><div class=\"sk-item sk-dashed-wrapped\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-54\" type=\"checkbox\" ><label for=\"sk-estimator-id-54\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> AdaBoostClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.ensemble.AdaBoostClassifier.html\">?<span>Documentation for AdaBoostClassifier</span></a><span class=\"sk-estimator-doc-link fitted\">i<span>Fitted</span></span></label><div class=\"sk-toggleable__content fitted\"><pre>AdaBoostClassifier(estimator=DecisionTreeClassifier(max_depth=1),\n",
+ " learning_rate=0.5, n_estimators=30, random_state=10)</pre></div> </div></div><div class=\"sk-parallel\"><div class=\"sk-parallel-item\"><div class=\"sk-item\"><div class=\"sk-label-container\"><div class=\"sk-label fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-55\" type=\"checkbox\" ><label for=\"sk-estimator-id-55\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\">estimator: DecisionTreeClassifier</label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier(max_depth=1)</pre></div> </div></div><div class=\"sk-serial\"><div class=\"sk-item\"><div class=\"sk-estimator fitted sk-toggleable\"><input class=\"sk-toggleable__control sk-hidden--visually\" id=\"sk-estimator-id-56\" type=\"checkbox\" ><label for=\"sk-estimator-id-56\" class=\"sk-toggleable__label fitted sk-toggleable__label-arrow fitted\"> DecisionTreeClassifier<a class=\"sk-estimator-doc-link fitted\" rel=\"noreferrer\" target=\"_blank\" href=\"https://scikit-learn.org/1.4/modules/generated/sklearn.tree.DecisionTreeClassifier.html\">?<span>Documentation for DecisionTreeClassifier</span></a></label><div class=\"sk-toggleable__content fitted\"><pre>DecisionTreeClassifier(max_depth=1)</pre></div> </div></div></div></div></div></div></div></div></div>"
+ ],
+ "text/plain": [
+ "AdaBoostClassifier(estimator=DecisionTreeClassifier(max_depth=1),\n",
+ " learning_rate=0.5, n_estimators=30, random_state=10)"
+ ]
+ },
+ "execution_count": 77,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Use adaboosting with decision stumps (trees with a max of 1 depth)\n",
+ "\n",
+ "from sklearn.ensemble import AdaBoostClassifier\n",
+ "\n",
+ "ada_clf = AdaBoostClassifier(\n",
+ " DecisionTreeClassifier(max_depth=1),\n",
+ " n_estimators=30,\n",
+ " learning_rate=.5,\n",
+ " random_state=10\n",
+ ")\n",
+ "ada_clf.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.904"
+ ]
+ },
+ "execution_count": 78,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# That's insane!! Using only 30 split nodes this was able\n",
+ "# to get 90.4% accuracy!\n",
+ "\n",
+ "ada_clf.score(X_test, y_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 68,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.872"
+ ]
+ },
+ "execution_count": 68,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# Let's compare that with a decision tree of the same size\n",
+ "# That's still pretty good but worse than the other one.\n",
+ "\n",
+ "dec_clf = DecisionTreeClassifier(random_state=10,max_leaf_nodes=30)\n",
+ "dec_clf.fit(X_train,y_train)\n",
+ "dec_clf.score(X_test,y_test)"
+ ]
}
],
"metadata": {