From d8d09e8db713ddbb985368792e97b7591847262c Mon Sep 17 00:00:00 2001 From: enstenr Date: Tue, 25 Nov 2025 09:47:47 +0000 Subject: [PATCH 1/2] Fixing issue https://github.com/dask/dask-examples/issues/235 --- machine-learning/xgboost.ipynb | 586 +++++++++++++++++++++++++++++++-- 1 file changed, 565 insertions(+), 21 deletions(-) diff --git a/machine-learning/xgboost.ipynb b/machine-learning/xgboost.ipynb index 22a56392..dfb1e4e2 100644 --- a/machine-learning/xgboost.ipynb +++ b/machine-learning/xgboost.ipynb @@ -26,9 +26,332 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 34, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/home/btcchl0040/Documents/git-contribution/dask-examples/dask-venv/lib/python3.12/site-packages/distributed/node.py:188: UserWarning: Port 8787 is already in use.\n", + "Perhaps you already have a cluster running?\n", + "Hosting the HTTP server on port 35137 instead\n", + " warnings.warn(\n" + ] + }, + { + "data": { + "text/html": [ + "
\n", + "
\n", + "
\n", + "

Client

\n", + "

Client-8939d7e0-c9e3-11f0-8cfe-00be43180b70

\n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "
Connection method: Cluster objectCluster type: distributed.LocalCluster
\n", + " Dashboard: http://127.0.0.1:35137/status\n", + "
\n", + "\n", + " \n", + "\n", + " \n", + "
\n", + "

Cluster Info

\n", + "
\n", + "
\n", + "
\n", + "
\n", + "

LocalCluster

\n", + "

fc1c5076

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + " \n", + "
\n", + " Dashboard: http://127.0.0.1:35137/status\n", + " \n", + " Workers: 4\n", + "
\n", + " Total threads: 4\n", + " \n", + " Total memory: 15.36 GiB\n", + "
Status: runningUsing processes: True
\n", + "\n", + "
\n", + " \n", + "

Scheduler Info

\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + "

Scheduler

\n", + "

Scheduler-30344c26-1a19-41a2-9fde-df32202a9777

\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " Comm: tcp://127.0.0.1:36901\n", + " \n", + " Workers: 0 \n", + "
\n", + " Dashboard: http://127.0.0.1:35137/status\n", + " \n", + " Total threads: 0\n", + "
\n", + " Started: Just now\n", + " \n", + " Total memory: 0 B\n", + "
\n", + "
\n", + "
\n", + "\n", + "
\n", + " \n", + "

Workers

\n", + "
\n", + "\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 0

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:41233\n", + " \n", + " Total threads: 1\n", + "
\n", + " Dashboard: http://127.0.0.1:40089/status\n", + " \n", + " Memory: 3.84 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:45415\n", + "
\n", + " Local directory: /tmp/dask-scratch-space/worker-i4a7bbln\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 1

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:40655\n", + " \n", + " Total threads: 1\n", + "
\n", + " Dashboard: http://127.0.0.1:42249/status\n", + " \n", + " Memory: 3.84 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:39243\n", + "
\n", + " Local directory: /tmp/dask-scratch-space/worker-oi4r3u3u\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 2

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:37937\n", + " \n", + " Total threads: 1\n", + "
\n", + " Dashboard: http://127.0.0.1:36639/status\n", + " \n", + " Memory: 3.84 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:40811\n", + "
\n", + " Local directory: /tmp/dask-scratch-space/worker-rb5_8qal\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "

Worker: 3

\n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + "\n", + " \n", + "\n", + "
\n", + " Comm: tcp://127.0.0.1:40375\n", + " \n", + " Total threads: 1\n", + "
\n", + " Dashboard: http://127.0.0.1:42163/status\n", + " \n", + " Memory: 3.84 GiB\n", + "
\n", + " Nanny: tcp://127.0.0.1:43297\n", + "
\n", + " Local directory: /tmp/dask-scratch-space/worker-m119tm9t\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "\n", + "
\n", + "
\n", + "\n", + "
\n", + "
\n", + "
\n", + "
\n", + " \n", + "\n", + "
\n", + "
" + ], + "text/plain": [ + "" + ] + }, + "execution_count": 34, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from dask.distributed import Client\n", "\n", @@ -52,9 +375,96 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 35, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Array Chunk
Bytes 15.26 MiB 156.25 kiB
Shape (100000, 20) (1000, 20)
Dask graph 100 chunks in 1 graph layer
Data type float64 numpy.ndarray
\n", + "
\n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + "\n", + " \n", + " \n", + "\n", + " \n", + " 20\n", + " 100000\n", + "\n", + "
" + ], + "text/plain": [ + "dask.array" + ] + }, + "execution_count": 35, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "from dask_ml.datasets import make_classification\n", "\n", @@ -81,7 +491,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -108,13 +518,13 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "import dask\n", "import xgboost\n", - "import dask_xgboost" + "from xgboost.dask import DaskDMatrix, train" ] }, { @@ -133,15 +543,28 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 38, "metadata": {}, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[09:45:58] Task [xgboost.dask-1]:tcp://127.0.0.1:40655 got rank 1\n", + "[09:45:58] Task [xgboost.dask-2]:tcp://127.0.0.1:37937 got rank 2\n", + "[09:45:58] Task [xgboost.dask-0]:tcp://127.0.0.1:41233 got rank 0\n", + "[09:45:58] Task [xgboost.dask-3]:tcp://127.0.0.1:40375 got rank 3\n" + ] + } + ], "source": [ "params = {'objective': 'binary:logistic',\n", " 'max_depth': 4, 'eta': 0.01, 'subsample': 0.5, \n", " 'min_child_weight': 0.5}\n", + "dtrain = DaskDMatrix(client, X_train, y_train)\n", "\n", - "bst = dask_xgboost.train(client, params, X_train, y_train, num_boost_round=10)" + "output = train(client, params, dtrain, num_boost_round=10)\n", + "bst = output['booster'] # This is the actual Booster object\n" ] }, { @@ -160,9 +583,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 39, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 39, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ "bst" ] @@ -185,9 +619,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 40, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPOJJREFUeJzt3Xd4FOX+/vF7SSekkEAaJQlF6aI06QgRRESKHkRRAiiIFAl4UFBBihzK1xJERAEFG0oRlSIoRtAj0puiEHpRkiAtIUQgJM/vD37Zw5IEkhBYmLxf17WXmWeemfnsPCt775RdmzHGCAAAwCKKObsAAACAwkS4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQpRixYt1KJFC2eXUagOHDggm82m2bNnX7Xv7t271bp1a/n5+clms+mrr7667vXdbGw2m0aNGuXsMoAijXCDImH27Nmy2Wy5PtauXZvndf3xxx8aNWqUDhw4cP0KLoB33nknTwHkeoqOjtZvv/2mcePG6eOPP1bdunULfRtpaWkaNWqUVq1aVejrhjRnzhzFxsY6uwzgmrg6uwDgRhozZowiIyOztVeqVCnP6/jjjz80evRotWjRQhEREQ7zvvvuu2stscDeeecdlSpVSj169HDK9v/55x+tWbNGL730kgYMGHDdtpOWlqbRo0dL0k15lOyff/6Rq+ut+0/rnDlztH37dsXExDi7FKDAbt3/A4ECaNu27XU5mpDF3d39uq37Zvf3339Lkvz9/Z1bSAFduHBBmZmZ1zyGnp6ehVTRjXXmzBl5e3s7uwygUHBaCrjM559/rjp16sjHx0e+vr6qWbOmJk+eLOni6a1//etfkqR77rnHflor6xTJ5dfcrFq1SjabTfPmzdPo0aNVpkwZ+fj46OGHH1ZycrLOnTunmJgYBQUFqUSJEurZs6fOnTvnUM+sWbPUsmVLBQUFycPDQ9WqVdO0adMc+kREROj333/Xjz/+aK/p0jpOnTqlmJgYlStXTh4eHqpUqZImTpyozMxMh/WcOnVKPXr0kJ+fn/z9/RUdHa1Tp05ddZ+NGjVK4eHhkqShQ4fKZrM5HNX666+/1KtXLwUHB8vDw0PVq1fXBx984LCO8+fPa+TIkapTp478/Pzk7e2tpk2bauXKlfY+Bw4cUOnSpSVJo0ePtj/XrGtccrvmqUePHg71ZF1H9Nprryk2NlYVK1aUh4eH/vjjD0nSzp079fDDDysgIECenp6qW7euFi1adNX9IGW/5mbUqFGy2WzatWuXHn/8cfn5+al06dIaMWKEjDE6fPiwOnToIF9fX4WEhOj11193WF/Wa2ju3Ll68cUXFRISIm9vbz344IM6fPhwtu3Pnz9fderUkZeXl0qVKqXHH39cf/31V7b9UaJECe3du1f333+/fHx81K1bN7Vo0UJLly7VwYMH7fs2a7/lZXwu37fTp0+379t69eppw4YN2erduXOnunTpotKlS8vLy0u33367XnrpJYc+eXn9AJfiyA2KlOTkZB07dsyhzWazKTAwUJK0YsUKPfroo2rVqpUmTpwoSdqxY4dWr16tQYMGqVmzZnr22Wf11ltv6cUXX1TVqlUlyf7f3IwfP15eXl4aNmyY9uzZoylTpsjNzU3FihXTyZMnNWrUKK1du1azZ89WZGSkRo4caV922rRpql69uh588EG5urpq8eLF6tevnzIzM9W/f39JUmxsrAYOHKgSJUrY3xiCg4MlXTyN07x5c/311196+umnVb58ef3yyy8aPny4EhIS7NdXGGPUoUMH/fzzz+rbt6+qVq2qL7/8UtHR0Vfdr507d5a/v78GDx6sRx99VPfff79KlCghSUpKStLdd98tm82mAQMGqHTp0lq2bJmefPJJpaSk2E9/pKSkaObMmXr00UfVu3dvnT59Wu+//77atGmj9evXq3bt2ipdurSmTZumZ555Rp06dVLnzp0lSbVq1bpqjTmZNWuWzp49qz59+sjDw0MBAQH6/fff1bhxY5UpU0bDhg2Tt7e35s2bp44dO+qLL75Qp06dCrStRx55RFWrVtWECRO0dOlSvfrqqwoICNB7772nli1bauLEifr000/173//W/Xq1VOzZs0clh83bpxsNpteeOEFHT16VLGxsYqKitLWrVvl5eUl6WL47tmzp+rVq6fx48crKSlJkydP1urVq7VlyxaHo2oXLlxQmzZt1KRJE7322msqXry4QkJClJycrD///FNvvvmmJNnHMS/jc6k5c+bo9OnTevrpp2Wz2TRp0iR17txZ+/btk5ubmyTp119/VdOmTeXm5qY+ffooIiJCe/fu1eLFizVu3DhJeX/9AA4MUATMmjXLSMrx4eHhYe83aNAg4+vray5cuJDruubPn28kmZUrV2ab17x5c9O8eXP79MqVK40kU6NGDXP+/Hl7+6OPPmpsNptp27atw/INGzY04eHhDm1paWnZttOmTRtToUIFh7bq1as7bDvL2LFjjbe3t9m1a5dD+7Bhw4yLi4s5dOiQMcaYr776ykgykyZNsve5cOGCadq0qZFkZs2alW3dl9q/f7+RZP7v//7Pof3JJ580oaGh5tixYw7tXbt2NX5+fvbnd+HCBXPu3DmHPidPnjTBwcGmV69e9ra///7bSDKvvPJKthou3/9ZoqOjHfZrVq2+vr7m6NGjDn1btWplatasac6ePWtvy8zMNI0aNTKVK1e+4j4wxmSr7ZVXXjGSTJ8+fextFy5cMGXLljU2m81MmDDB4fl6eXmZ6Ohoe1vWa6hMmTImJSXF3j5v3jwjyUyePNkYY8z58+dNUFCQqVGjhvnnn3/s/ZYsWWIkmZEjRzrsD0lm2LBh2epv165dttdgVs15GZ+sfRsYGGhOnDhhb//666+NJLN48WJ7W7NmzYyPj485ePCgw3ozMzPtf+f19QNcitNSKFKmTp2qFStWODyWLVtmn+/v768zZ85oxYoVhbrd7t272z+tSlKDBg1kjFGvXr0c+jVo0ECHDx/WhQsX7G1Zn8ql/x15at68ufbt26fk5OSrbnv+/Plq2rSpSpYsqWPHjtkfUVFRysjI0E8//SRJ+uabb+Tq6qpnnnnGvqyLi4sGDhxY4OdtjNEXX3yh9u3byxjjsP02bdooOTlZmzdvtm8r63qXzMxMnThxQhcuXFDdunXtfQrbQw89ZD/NJUknTpzQDz/8oC5duuj06dP2Wo8fP642bdpo9+7d2U7x5NVTTz1l/9vFxUV169aVMUZPPvmkvd3f31+333679u3bl2357t27y8fHxz798MMPKzQ0VN98840kaePGjTp69Kj69evncN1Pu3btVKVKFS1dujTbOi8d66vJ7/g88sgjKlmypH26adOmkmR/bn///bd++ukn9erVS+XLl3dY1mazScrf6we4FKelUKTUr1//ihcU9+vXT/PmzVPbtm1VpkwZtW7dWl26dNF99913Tdu9/B9vPz8/SVK5cuWytWdmZio5Odl+qmz16tV65ZVXtGbNGqWlpTn0T05Otq8rN7t379avv/7q8CZ+qaNHj0qSDh48qNDQUPtpiCy33377VZ5d7v7++2+dOnVK06dP1/Tp06+4fUn68MMP9frrr2vnzp1KT0+3t+d0h1thuHy9e/bskTFGI0aM0IgRI3Ktt0yZMvneVk6vAU9PT5UqVSpb+/Hjx7MtX7lyZYdpm82mSpUq2b+S4ODBg5JyHq8qVaro559/dmhzdXVV2bJl8/Uc8jM+lz/frKBz8uRJSf8LOTVq1Mh1e/l9/QBZCDfAJYKCgrR161Z9++23WrZsmZYtW6ZZs2ape/fu+vDDDwu8XhcXl3y1G2MkSXv37lWrVq1UpUoVvfHGGypXrpzc3d31zTff6M0338x2QXBOMjMzde+99+r555/Pcf5tt92Wx2eRf1n1Pf7447leu5N1vcwnn3yiHj16qGPHjho6dKiCgoLk4uKi8ePHa+/evXnans1ms++7S2VkZOTY/9KjYpfW++9//1tt2rTJcZn8fG3ApXIa66uN//Xk4eGhYsXyfvA+v+NTGM8tP68f4FKEG+Ay7u7uat++vdq3b6/MzEz169dP7733nkaMGKFKlSrZD5nfCIsXL9a5c+e0aNEih0/Cl9+hIinXuipWrKjU1FRFRUVdcVvh4eGKi4tTamqqw9Gb+Pj4AlYvlS5dWj4+PsrIyLjq9hcsWKAKFSpo4cKFDs/llVdeceh3pf1fsmTJHE/pZB3VuJoKFSpIktzc3K5a7422e/duh2ljjPbs2WN/c8+6Wy0+Pl4tW7Z06BsfH2+ffzW57d+8jk9eZe3r7du359onP68f4FJccwNc4vLTAcWKFbO/eWTdop31XSB5uUX6WmV9+r30025ycrJmzZqVra+3t3eONXXp0kVr1qzRt99+m23eqVOn7Nf33H///bpw4YLDbeYZGRmaMmXKNdX/0EMP6YsvvsjxTSzru3Gy+kqOz3XdunVas2aNwzLFixe31365ihUraufOnQ7r3bZtm1avXp2neoOCgtSiRQu99957SkhIuGK9N9pHH32k06dP26cXLFighIQEtW3bVpJUt25dBQUF6d1333X4OoFly5Zpx44dateuXZ624+3tneO1XHkdn7wqXbq0mjVrpg8++ECHDh1ymJe1jfy8foBLceQGRcqyZcu0c+fObO2NGjVShQoV9NRTT+nEiRNq2bKlypYtq4MHD2rKlCmqXbu2/Xbv2rVry8XFRRMnTlRycrI8PDzs30NT2Fq3bm0/kvT0008rNTVVM2bMUFBQULY33zp16mjatGl69dVXValSJQUFBally5YaOnSoFi1apAceeEA9evRQnTp1dObMGf32229asGCBDhw4oFKlSql9+/Zq3Lixhg0bpgMHDqhatWpauHBhni5avpIJEyZo5cqVatCggXr37q1q1arpxIkT2rx5s77//nudOHFCkvTAAw9o4cKF6tSpk9q1a6f9+/fr3XffVbVq1ZSammpfn5eXl6pVq6a5c+fqtttuU0BAgGrUqKEaNWqoV69eeuONN9SmTRs9+eSTOnr0qN59911Vr15dKSkpeap36tSpatKkiWrWrKnevXurQoUKSkpK0po1a/Tnn39q27Zt17Q/CiogIEBNmjRRz549lZSUpNjYWFWqVEm9e/eWdPFo08SJE9WzZ081b95cjz76qP1W8IiICA0ePDhP26lTp47mzp2rIUOGqF69eipRooTat2+f5/HJj7feektNmjTRXXfdpT59+igyMlIHDhzQ0qVLtXXrVkl5f/0ADm78DVrAjXelW8F1yW3OCxYsMK1btzZBQUHG3d3dlC9f3jz99NMmISHBYX0zZswwFSpUMC4uLg63hed2K/j8+fNzrGfDhg0O7Vm3Df/999/2tkWLFplatWoZT09PExERYSZOnGg++OADI8ns37/f3i8xMdG0a9fO+Pj4GEkOdZw+fdoMHz7cVKpUybi7u5tSpUqZRo0amddee83hFvXjx4+bJ554wvj6+ho/Pz/zxBNPmC1btlzTreDGGJOUlGT69+9vypUrZ9zc3ExISIhp1aqVmT59ur1PZmam+c9//mPCw8ONh4eHufPOO82SJUuy3cZtjDG//PKLqVOnjnF3d8926/Unn3xiKlSoYNzd3U3t2rXNt99+m+ut4DnVaowxe/fuNd27dzchISHGzc3NlClTxjzwwANmwYIFV9wHxuR+K/ilY2rMxduxvb29sy3fvHlzU716dft01mvos88+M8OHDzdBQUHGy8vLtGvXLtst1MYYM3fuXHPnnXcaDw8PExAQYLp162b+/PPPPG3bGGNSU1PNY489Zvz9/Y0k+37L6/hcad9evm+MMWb79u2mU6dOxt/f33h6eprbb7/djBgxwqFPXl4/wKVsxtyAK9cAAAWyatUq3XPPPZo/f74efvhhZ5cD3BK45gYAAFgK4QYAAFgK4QYAAFgK19wAAABL4cgNAACwFMINAACwlCL5JX6ZmZk6cuSIfHx8buhX6QMAgIIzxuj06dMKCwu74m+jFclwc+TIkWy/xgwAAG4Nhw8fvuKv2hfJcOPj4yNJ2r9/vwICApxcDXKTnp6u7777Tq1bt5abm5uzy0EuGKdbA+N0a2CcriwlJUXlypWzv4/npkiGm6xTUT4+PvL19XVyNchNenq6ihcvLl9fX/4nv4kxTrcGxunWwDjlzdUuKeGCYgAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCk2Y4xxdhE3WkpKivz8/FTxubm64Ort7HKQCw8Xo0n1M/T8ehedy7A5uxzkgnG6NTBOt4YbPU4HJrS77tsoTFnv38nJyfL19c21H0duAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApdz04cYYoz59+iggIEA2m01bt251dkkAAFhaRkaGRowYocjISHl5ealixYoaO3asjDH2Pj169JDNZnN43HfffVdd99SpUxURESFPT081aNBA69evL/T6b/pws3z5cs2ePVtLlixRQkKCatSocUN2DAAARdXEiRM1bdo0vf3229qxY4cmTpyoSZMmacqUKQ797rvvPiUkJNgfn3322RXXO3fuXA0ZMkSvvPKKNm/erDvuuENt2rTR0aNHC7X+mz7c7N27V6GhoWrUqJFCQkL0xRdf3JAdAwBAUfXLL7+oQ4cOateunSIiIvTwww+rdevW2Q4meHh4KCQkxP4oWbLkFdf7xhtvqHfv3urZs6eqVaumd999V8WLF9cHH3xQqPXf1OGmR48eGjhwoA4dOiSbzaaIiIgbtmMAACiqGjVqpLi4OO3atUuStG3bNv38889q27atQ79Vq1YpKChIt99+u5555hkdP34813WeP39emzZtUlRUlL2tWLFiioqK0po1awq1ftdCXVshmzx5sipWrKjp06drw4YNstlsKlOmjIYPH27vc712DAAARdWwYcOUkpKiKlWqyMXFRRkZGRo3bpy6detm73Pfffepc+fOioyM1N69e/Xiiy+qbdu2WrNmjVxcXLKt89ixY8rIyFBwcLBDe3BwsHbu3Fmo9d/U4cbPz08+Pj5ycXFRSEiIjhw5UqAdc+7cOZ07d84+nZKSct1qBgDgVjdv3jx9+umnmjNnjqpXr66tW7cqJiZGYWFhio6OliR17drV3r9mzZqqVauWKlasqFWrVqlVq1bOKl3STX5aqrCMHz9efn5+9ke5cuWcXRIAADetoUOHatiwYeratatq1qypJ554QoMHD9b48eNzXaZChQoqVaqU9uzZk+P8UqVKycXFRUlJSQ7tSUlJCgkJKdT6b6lwU9AdM3z4cCUnJ9sfhw8fvt6lAgBwy0pLS1OxYo4RwcXFRZmZmbku8+eff+r48eMKDQ3Ncb67u7vq1KmjuLg4e1tmZqbi4uLUsGHDwin8/7ulwk1Bd4yHh4d8fX0dHgAAIGft27fXuHHjtHTpUh04cEBffvml3njjDXXq1EmSlJqaqqFDh2rt2rU6cOCA4uLi1KFDB1WqVElt2rSxr6dVq1Z6++237dNDhgzRjBkz9OGHH2rHjh165plndObMGfXs2bNQ67+pr7nJyZAhQxQdHa26deuqfv36io2NvS47BgCAomrKlCkaMWKE+vXrp6NHjyosLExPP/20Ro4cKeniUZxff/1VH374oU6dOqWwsDC1bt1aY8eOlYeHh309e/fu1bFjx+zTjzzyiP7++2+NHDlSiYmJql27tpYvX57tWtprdcuFmxu1YwAAKKp8fHwUGxur2NjYHOd7eXnp22+/vep6Dhw4kK1twIABGjBgwDVWeGU3/WmpmJiYbDtnwIABOnjwoM6dO6d169apQYMGzikOAADcdG76cAMAAJAfhBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGApNmOMcXYRN1pKSor8/Px07NgxBQYGOrsc5CI9PV3ffPON7r//frm5uTm7HOSCcbo1ME63BsbpyrLev5OTk+Xr65trP47cAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAAS3F1dgHO1GB8nC64eju7DOTCw8VoUn2pxqhvdS7D5uxykIuscQKAmwVHbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUUWrg5depUYa0KAACgwAoUbiZOnKi5c+fap7t06aLAwECVKVNG27ZtK7TiAAAA8qtA4ebdd99VuXLlJEkrVqzQihUrtGzZMrVt21ZDhw4t1AIBAADyo0A/nJmYmGgPN0uWLFGXLl3UunVrRUREqEGDBoVaIAAAQH4U6MhNyZIldfjwYUnS8uXLFRUVJUkyxigjI6PwqgMAAMinAh256dy5sx577DFVrlxZx48fV9u2bSVJW7ZsUaVKlQq1QAAAgPwoULh58803FRERocOHD2vSpEkqUaKEJCkhIUH9+vUr1AIBAADyo0Dhxs3NTf/+97+ztQ8ePPiaCwIAALgWBf6em48//lhNmjRRWFiYDh48KEmKjY3V119/XWjFAQAA5FeBws20adM0ZMgQtW3bVqdOnbJfROzv76/Y2NjCrA8AACBfChRupkyZohkzZuill16Si4uLvb1u3br67bffCq04AACA/CpQuNm/f7/uvPPObO0eHh46c+bMNRcFAABQUAUKN5GRkdq6dWu29uXLl6tq1arXWhMAAECBFehuqSFDhqh///46e/asjDFav369PvvsM40fP14zZ84s7BoBAADyrEDh5qmnnpKXl5defvllpaWl6bHHHlNYWJgmT56srl27FnaNAAAAeZbvcHPhwgXNmTNHbdq0Ubdu3ZSWlqbU1FQFBQVdj/oAAADyJd/X3Li6uqpv3746e/asJKl48eIEGwAAcNMo0AXF9evX15YtWwq7FgAAgGtWoGtu+vXrp+eee05//vmn6tSpI29vb4f5tWrVKpTiAAAA8qtA4SbrouFnn33W3maz2WSMkc1ms39jMQAAwI1WoHCzf//+wq4DAACgUBTompvw8PArPgAgJxMmTJDNZlNMTIy97ezZs+rfv78CAwNVokQJPfTQQ0pKSrrieowxGjlypEJDQ+Xl5aWoqCjt3r37OlcP4FZRoCM3H3300RXnd+/evUDF5MQYo6effloLFizQyZMntWXLFtWuXbvQ1g/gxtiwYYPee++9bNfkDR48WEuXLtX8+fPl5+enAQMGqHPnzlq9enWu65o0aZLeeustffjhh4qMjNSIESPUpk0b/fHHH/L09LzeTwXATa5A4WbQoEEO0+np6UpLS5O7u7uKFy9eqOFm+fLlmj17tlatWqUKFSqoVKlS9nkTJkzQ8OHDNWjQIH6NHLiJpaamqlu3bpoxY4ZeffVVe3tycrLef/99zZkzRy1btpQkzZo1S1WrVtXatWt19913Z1uXMUaxsbF6+eWX1aFDB0kXP3AFBwfrq6++4otEARTstNTJkycdHqmpqYqPj1eTJk302WefFWqBe/fuVWhoqBo1aqSQkBC5ul7MY7l9CgRw8+nfv7/atWunqKgoh/ZNmzYpPT3dob1KlSoqX7681qxZk+O69u/fr8TERIdl/Pz81KBBg1yXAVC0FCjc5KRy5cqaMGFCtqM616JHjx4aOHCgDh06JJvNpoiICEmOnwJLlixZaNsDUPg+//xzbd68WePHj882LzExUe7u7vL393doDw4OVmJiYo7ry2oPDg7O8zIAipZCCzfSxW8vPnLkSKGtb/LkyRozZozKli2rhIQEbdiwQVLunwJzc+7cOaWkpDg8AFx/hw8f1qBBg/Tpp59yLQyAG6ZA19wsWrTIYdoYo4SEBL399ttq3LhxoRQmXTzU7OPjIxcXF4WEhEj636fArKCTF+PHj9fo0aMLrS4AebNp0yYdPXpUd911l70tIyNDP/30k95++219++23On/+vE6dOuVw9CYpKcn+//zlstqTkpIUGhrqsAw3GwCQChhuOnbs6DBts9lUunRptWzZUq+//nph1JWjrE+BK1asyNenwOHDh2vIkCH26ZSUFJUrV+56lAjgEq1atdJvv/3m0NazZ09VqVJFL7zwgsqVKyc3NzfFxcXpoYcekiTFx8fr0KFDatiwYY7rjIyMVEhIiOLi4uxhJiUlRevWrdMzzzxzXZ8PgFtDgcJNZmZmYdeRJ1f7FHju3Dm5uLhkW87Dw0MeHh43slQAknx8fFSjRg2HNm9vbwUGBtrbn3zySQ0ZMkQBAQHy9fXVwIED1bBhQ4c7papUqaLx48erU6dO9u/JefXVV1W5cmX7reBhYWHZPngBKJoKdM3NmDFjlJaWlq39n3/+0ZgxY665qNxkfQrcunWr/VG3bl1169ZNW7duzTHYALi5vfnmm3rggQf00EMPqVmzZgoJCdHChQsd+sTHxys5Odk+/fzzz2vgwIHq06eP6tWrp9TUVC1fvpzregBIKuCRm9GjR6tv374qXry4Q3taWppGjx6tkSNHFkpxl8vLp0AAN7dVq1Y5THt6emrq1KmaOnVqrssYYxymbTabxowZc10/TAG4dRXoyE3WD2Rebtu2bQoICLjmogAAAAoqX0duSpYsKZvNJpvNpttuu80h4GRkZCg1NVV9+/Yt1AJjYmIcfofmcpd/CgQAAEVbvsJNbGysjDHq1auXRo8eLT8/P/s8d3d3RURE5HqHAwAAwI2Qr3ATHR0t6eKtmI0aNZKbm9t1KQoAAKCgCnRBcfPmze1/nz17VufPn3eY7+vre21VAQAAFFCBLihOS0vTgAEDFBQUJG9vb5UsWdLhAQAA4CwFCjdDhw7VDz/8oGnTpsnDw0MzZ87U6NGjFRYWpo8++qiwawQAAMizAp2WWrx4sT766CO1aNFCPXv2VNOmTVWpUiWFh4fr008/Vbdu3Qq7TgAAgDwp0JGbEydOqEKFCpIuXl9z4sQJSVKTJk30008/FV51AAAA+VSgcFOhQgXt379f0sXffJk3b56ki0d0Lv1lXwAAgButQOGmZ8+e2rZtmyRp2LBhmjp1qjw9PTV48GANHTq0UAsEAADIjwJdczN48GD731FRUdq5c6c2bdqkSpUqqVatWoVWHAAAQH4VKNxc6uzZswoPD1d4eHhh1AMAAHBNCnRaKiMjQ2PHjlWZMmVUokQJ7du3T5I0YsQIvf/++4VaIAAAQH4UKNyMGzdOs2fP1qRJk+Tu7m5vr1GjhmbOnFloxQEAAORXgcLNRx99pOnTp6tbt25ycXGxt99xxx3auXNnoRUHAACQXwUKN3/99ZcqVaqUrT0zM1Pp6enXXBQAAEBBFSjcVKtWTf/973+ztS9YsEB33nnnNRcFAABQUAW6W2rkyJGKjo7WX3/9pczMTC1cuFDx8fH66KOPtGTJksKuEQAAIM/ydeRm3759MsaoQ4cOWrx4sb7//nt5e3tr5MiR2rFjhxYvXqx77733etUKAABwVfk6clO5cmUlJCQoKChITZs2VUBAgH777TcFBwdfr/oAAADyJV9HbowxDtPLli3TmTNnCrUgAACAa1GgC4qzXB52AAAAnC1f4cZms8lms2VrAwAAuFnk65obY4x69OghDw8PSRd/V6pv377y9vZ26Ldw4cLCqxAAACAf8hVuoqOjHaYff/zxQi0GAADgWuUr3MyaNet61QEAAFAorumCYgAAgJsN4QYAAFgK4QYAAFgK4QYAAFgK4QYAAFhKgX4V3CrWDW+lwMBAZ5eBXKSnp+ubb77R9lFt5Obm5uxykIuscQKAmwVHbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKW4OrsAZ2owPk4XXL2dXQZy4eFiNKm+VGPUtzqXYbvu2zswod113wYA4PrjyA0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUp4YbY4z69OmjgIAA2Ww2bd261ZnlADkaP3686tWrJx8fHwUFBaljx46Kj4936NOiRQvZbDaHR9++fa+4XmOMRo4cqdDQUHl5eSkqKkq7d+++nk8FAIoEp4ab5cuXa/bs2VqyZIkSEhKUkpKi9u3bKywsTDabTV999ZVD//T0dL3wwguqWbOmvL29FRYWpu7du+vIkSPOeQIoEn788Uf1799fa9eu1YoVK5Senq7WrVvrzJkzDv169+6thIQE+2PSpElXXO+kSZP01ltv6d1339W6devk7e2tNm3a6OzZs9fz6QCA5bk6c+N79+5VaGioGjVqJEnasmWL7rjjDvXq1UudO3fO1j8tLU2bN2/WiBEjdMcdd+jkyZMaNGiQHnzwQW3cuPFGl48iYvny5Q7Ts2fPVlBQkDZt2qRmzZrZ24sXL66QkJA8rdMYo9jYWL388svq0KGDJOmjjz5ScHCwvvrqK3Xt2rXwngAAFDFOCzc9evTQhx9+KEmy2WwKDw/XgQMH1LZt21yX8fPz04oVKxza3n77bdWvX1+HDh1S+fLlr2vNgCQlJydLkgICAhzaP/30U33yyScKCQlR+/btNWLECBUvXjzHdezfv1+JiYmKioqyt/n5+alBgwZas2YN4QYAroHTws3kyZNVsWJFTZ8+XRs2bJCLi0uB1pOcnCybzSZ/f/9c+5w7d07nzp2zT6ekpBRoW0BmZqZiYmLUuHFj1ahRw97+2GOPKTw8XGFhYfr111/1wgsvKD4+XgsXLsxxPYmJiZKk4OBgh/bg4GD7PABAwTgt3Pj5+cnHx0cuLi55PpR/ubNnz+qFF17Qo48+Kl9f31z7jR8/XqNHjy5oqYBd//79tX37dv38888O7X369LH/XbNmTYWGhqpVq1bau3evKlaseKPLBIAi7Za9FTw9PV1dunSRMUbTpk27Yt/hw4crOTnZ/jh8+PANqhJWMmDAAC1ZskQrV65U2bJlr9i3QYMGkqQ9e/bkOD8r0CclJTm0JyUlFTjsAwAuuiXDTVawOXjwoFasWHHFozaS5OHhIV9fX4cHkFfGGA0YMEBffvmlfvjhB0VGRl51mayvNQgNDc1xfmRkpEJCQhQXF2dvS0lJ0bp169SwYcNCqRsAiqpbLtxkBZvdu3fr+++/V2BgoLNLgsX1799fn3zyiebMmSMfHx8lJiYqMTFR//zzj6SLd/2NHTtWmzZt0oEDB7Ro0SJ1795dzZo1U61atezrqVKlir788ktJFy+ij4mJ0auvvqpFixbpt99+U/fu3RUWFqaOHTs642kCgGU49Vbwy6Wmpjocxt+/f7+2bt2qgIAAlS9fXunp6Xr44Ye1efNmLVmyRBkZGfaLLwMCAuTu7u6s0mFhWac9W7Ro4dA+a9Ys9ejRQ+7u7vr+++8VGxurM2fOqFy5cnrooYf08ssvO/SPj4+332klSc8//7zOnDmjPn366NSpU2rSpImWL18uT0/P6/6cAMDKbqpws3HjRt1zzz326SFDhkiSoqOjNXv2bP31119atGiRJKl27doOy65cuTLbmw9QGIwxV5xfrlw5/fjjj/lej81m05gxYzRmzJhrqg8A4Mip4SYmJkYxMTH26RYtWlzxjSQiIuKqbzQAAKBou+WuuQEAALgSwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUV2cX4EzrhrdSYGCgs8tALtLT0/XNN99o+6g2cnNzc3Y5AIBbBEduAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApbg6uwBnMMZIkk6fPi03NzcnV4PcpKenKy0tTSkpKYzTTYxxujUwTrcGxunKUlJSJP3vfTw3RTLcHD9+XJIUGRnp5EoAAEB+nT59Wn5+frnOL5LhJiAgQJJ0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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", @@ -215,17 +660,105 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 41, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/html": [ + "\n", + " \n", + " \n", + " \n", + " \n", + "
\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Array Chunk
Bytes 58.59 kiB 600 B
Shape (15000,) (150,)
Dask graph 100 chunks in 1 graph layer
Data type float32 numpy.ndarray
\n", + "
\n", + " \n", + "\n", + " \n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + " \n", + "\n", + " \n", + " 15000\n", + " 1\n", + "\n", + "
" + ], + "text/plain": [ + "dask.array" + ] + }, + "execution_count": 41, + "metadata": {}, + "output_type": "execute_result" + } + ], "source": [ - "y_hat = dask_xgboost.predict(client, bst, X_test).persist()\n", + "from xgboost.dask import predict\n", + "y_hat = predict(client, bst, X_test).persist()\n", "y_hat" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": {}, "outputs": [], "source": [ @@ -237,9 +770,20 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 43, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], "source": [ "from sklearn.metrics import auc\n", "\n", @@ -295,7 +839,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.12" + "version": "3.12.3" } }, "nbformat": 4, From 25b07f6f41816bf7abf2c59162182429129ea117 Mon Sep 17 00:00:00 2001 From: enstenr Date: Tue, 25 Nov 2025 09:49:36 +0000 Subject: [PATCH 2/2] Fixing issue https://github.com/dask/dask-examples/issues/235 --- machine-learning/xgboost.ipynb | 575 +-------------------------------- 1 file changed, 17 insertions(+), 558 deletions(-) diff --git a/machine-learning/xgboost.ipynb b/machine-learning/xgboost.ipynb index dfb1e4e2..e8f9247e 100644 --- a/machine-learning/xgboost.ipynb +++ b/machine-learning/xgboost.ipynb @@ -26,332 +26,9 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "/home/btcchl0040/Documents/git-contribution/dask-examples/dask-venv/lib/python3.12/site-packages/distributed/node.py:188: UserWarning: Port 8787 is already in use.\n", - "Perhaps you already have a cluster running?\n", - "Hosting the HTTP server on port 35137 instead\n", - " warnings.warn(\n" - ] - }, - { - "data": { - "text/html": [ - "
\n", - "
\n", - "
\n", - "

Client

\n", - "

Client-8939d7e0-c9e3-11f0-8cfe-00be43180b70

\n", - " \n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "
Connection method: Cluster objectCluster type: distributed.LocalCluster
\n", - " Dashboard: http://127.0.0.1:35137/status\n", - "
\n", - "\n", - " \n", - "\n", - " \n", - "
\n", - "

Cluster Info

\n", - "
\n", - "
\n", - "
\n", - "
\n", - "

LocalCluster

\n", - "

fc1c5076

\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - "\n", - " \n", - "
\n", - " Dashboard: http://127.0.0.1:35137/status\n", - " \n", - " Workers: 4\n", - "
\n", - " Total threads: 4\n", - " \n", - " Total memory: 15.36 GiB\n", - "
Status: runningUsing processes: True
\n", - "\n", - "
\n", - " \n", - "

Scheduler Info

\n", - "
\n", - "\n", - "
\n", - "
\n", - "
\n", - "
\n", - "

Scheduler

\n", - "

Scheduler-30344c26-1a19-41a2-9fde-df32202a9777

\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " Comm: tcp://127.0.0.1:36901\n", - " \n", - " Workers: 0 \n", - "
\n", - " Dashboard: http://127.0.0.1:35137/status\n", - " \n", - " Total threads: 0\n", - "
\n", - " Started: Just now\n", - " \n", - " Total memory: 0 B\n", - "
\n", - "
\n", - "
\n", - "\n", - "
\n", - " \n", - "

Workers

\n", - "
\n", - "\n", - " \n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "

Worker: 0

\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - "
\n", - " Comm: tcp://127.0.0.1:41233\n", - " \n", - " Total threads: 1\n", - "
\n", - " Dashboard: http://127.0.0.1:40089/status\n", - " \n", - " Memory: 3.84 GiB\n", - "
\n", - " Nanny: tcp://127.0.0.1:45415\n", - "
\n", - " Local directory: /tmp/dask-scratch-space/worker-i4a7bbln\n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "

Worker: 1

\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - "
\n", - " Comm: tcp://127.0.0.1:40655\n", - " \n", - " Total threads: 1\n", - "
\n", - " Dashboard: http://127.0.0.1:42249/status\n", - " \n", - " Memory: 3.84 GiB\n", - "
\n", - " Nanny: tcp://127.0.0.1:39243\n", - "
\n", - " Local directory: /tmp/dask-scratch-space/worker-oi4r3u3u\n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "

Worker: 2

\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - "
\n", - " Comm: tcp://127.0.0.1:37937\n", - " \n", - " Total threads: 1\n", - "
\n", - " Dashboard: http://127.0.0.1:36639/status\n", - " \n", - " Memory: 3.84 GiB\n", - "
\n", - " Nanny: tcp://127.0.0.1:40811\n", - "
\n", - " Local directory: /tmp/dask-scratch-space/worker-rb5_8qal\n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "

Worker: 3

\n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - " \n", - "\n", - " \n", - "\n", - "
\n", - " Comm: tcp://127.0.0.1:40375\n", - " \n", - " Total threads: 1\n", - "
\n", - " Dashboard: http://127.0.0.1:42163/status\n", - " \n", - " Memory: 3.84 GiB\n", - "
\n", - " Nanny: tcp://127.0.0.1:43297\n", - "
\n", - " Local directory: /tmp/dask-scratch-space/worker-m119tm9t\n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "\n", - "
\n", - "
\n", - "\n", - "
\n", - "
\n", - "
\n", - "
\n", - " \n", - "\n", - "
\n", - "
" - ], - "text/plain": [ - "" - ] - }, - "execution_count": 34, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "from dask.distributed import Client\n", "\n", @@ -375,96 +52,9 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Array Chunk
Bytes 15.26 MiB 156.25 kiB
Shape (100000, 20) (1000, 20)
Dask graph 100 chunks in 1 graph layer
Data type float64 numpy.ndarray
\n", - "
\n", - " \n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - " \n", - " \n", - " \n", - "\n", - " \n", - " \n", - "\n", - " \n", - " 20\n", - " 100000\n", - "\n", - "
" - ], - "text/plain": [ - "dask.array" - ] - }, - "execution_count": 35, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "from dask_ml.datasets import make_classification\n", "\n", @@ -491,7 +81,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -518,7 +108,7 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -543,20 +133,9 @@ }, { "cell_type": "code", - "execution_count": 38, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "[09:45:58] Task [xgboost.dask-1]:tcp://127.0.0.1:40655 got rank 1\n", - "[09:45:58] Task [xgboost.dask-2]:tcp://127.0.0.1:37937 got rank 2\n", - "[09:45:58] Task [xgboost.dask-0]:tcp://127.0.0.1:41233 got rank 0\n", - "[09:45:58] Task [xgboost.dask-3]:tcp://127.0.0.1:40375 got rank 3\n" - ] - } - ], + "outputs": [], "source": [ "params = {'objective': 'binary:logistic',\n", " 'max_depth': 4, 'eta': 0.01, 'subsample': 0.5, \n", @@ -583,20 +162,9 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 39, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "bst" ] @@ -619,20 +187,9 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjcAAAHHCAYAAABDUnkqAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQAAPOJJREFUeJzt3Xd4FOX+/vF7SSekkEAaJQlF6aI06QgRRESKHkRRAiiIFAl4UFBBihzK1xJERAEFG0oRlSIoRtAj0puiEHpRkiAtIUQgJM/vD37Zw5IEkhBYmLxf17WXmWeemfnsPCt775RdmzHGCAAAwCKKObsAAACAwkS4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQAAlkK4AQpRixYt1KJFC2eXUagOHDggm82m2bNnX7Xv7t271bp1a/n5+clms+mrr7667vXdbGw2m0aNGuXsMoAijXCDImH27Nmy2Wy5PtauXZvndf3xxx8aNWqUDhw4cP0KLoB33nknTwHkeoqOjtZvv/2mcePG6eOPP1bdunULfRtpaWkaNWqUVq1aVejrhjRnzhzFxsY6uwzgmrg6uwDgRhozZowiIyOztVeqVCnP6/jjjz80evRotWjRQhEREQ7zvvvuu2stscDeeecdlSpVSj169HDK9v/55x+tWbNGL730kgYMGHDdtpOWlqbRo0dL0k15lOyff/6Rq+ut+0/rnDlztH37dsXExDi7FKDAbt3/A4ECaNu27XU5mpDF3d39uq37Zvf3339Lkvz9/Z1bSAFduHBBmZmZ1zyGnp6ehVTRjXXmzBl5e3s7uwygUHBaCrjM559/rjp16sjHx0e+vr6qWbOmJk+eLOni6a1//etfkqR77rnHflor6xTJ5dfcrFq1SjabTfPmzdPo0aNVpkwZ+fj46OGHH1ZycrLOnTunmJgYBQUFqUSJEurZs6fOnTvnUM+sWbPUsmVLBQUFycPDQ9WqVdO0adMc+kREROj333/Xjz/+aK/p0jpOnTqlmJgYlStXTh4eHqpUqZImTpyozMxMh/WcOnVKPXr0kJ+fn/z9/RUdHa1Tp05ddZ+NGjVK4eHhkqShQ4fKZrM5HNX666+/1KtXLwUHB8vDw0PVq1fXBx984LCO8+fPa+TIkapTp478/Pzk7e2tpk2bauXKlfY+Bw4cUOnSpSVJo0ePtj/XrGtccrvmqUePHg71ZF1H9Nprryk2NlYVK1aUh4eH/vjjD0nSzp079fDDDysgIECenp6qW7euFi1adNX9IGW/5mbUqFGy2WzatWuXHn/8cfn5+al06dIaMWKEjDE6fPiwOnToIF9fX4WEhOj11193WF/Wa2ju3Ll68cUXFRISIm9vbz344IM6fPhwtu3Pnz9fderUkZeXl0qVKqXHH39cf/31V7b9UaJECe3du1f333+/fHx81K1bN7Vo0UJLly7VwYMH7fs2a7/lZXwu37fTp0+379t69eppw4YN2erduXOnunTpotKlS8vLy0u33367XnrpJYc+eXn9AJfiyA2KlOTkZB07dsyhzWazKTAwUJK0YsUKPfroo2rVqpUmTpwoSdqxY4dWr16tQYMGqVmzZnr22Wf11ltv6cUXX1TVqlUlyf7f3IwfP15eXl4aNmyY9uzZoylTpsjNzU3FihXTyZMnNWrUKK1du1azZ89WZGSkRo4caV922rRpql69uh588EG5urpq8eLF6tevnzIzM9W/f39JUmxsrAYOHKgSJUrY3xiCg4MlXTyN07x5c/311196+umnVb58ef3yyy8aPny4EhIS7NdXGGPUoUMH/fzzz+rbt6+qVq2qL7/8UtHR0Vfdr507d5a/v78GDx6sRx99VPfff79KlCghSUpKStLdd98tm82mAQMGqHTp0lq2bJmefPJJpaSk2E9/pKSkaObMmXr00UfVu3dvnT59Wu+//77atGmj9evXq3bt2ipdurSmTZumZ555Rp06dVLnzp0lSbVq1bpqjTmZNWuWzp49qz59+sjDw0MBAQH6/fff1bhxY5UpU0bDhg2Tt7e35s2bp44dO+qLL75Qp06dCrStRx55RFWrVtWECRO0dOlSvfrqqwoICNB7772nli1bauLEifr000/173//W/Xq1VOzZs0clh83bpxsNpteeOEFHT16VLGxsYqKitLWrVvl5eUl6WL47tmzp+rVq6fx48crKSlJkydP1urVq7VlyxaHo2oXLlxQmzZt1KRJE7322msqXry4QkJClJycrD///FNvvvmmJNnHMS/jc6k5c+bo9OnTevrpp2Wz2TRp0iR17txZ+/btk5ubmyTp119/VdOmTeXm5qY+ffooIiJCe/fu1eLFizVu3DhJeX/9AA4MUATMmjXLSMrx4eHh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bm0/kvT0008rNTVVM2bMUFBQULY33zp16mjatGl69dVXValSJQUFBally5YaOnSoFi1apAceeEA9evRQnTp1dObMGf32229asGCBDhw4oFKlSql9+/Zq3Lixhg0bpgMHDqhatWpauHBhni5avpIJEyZo5cqVatCggXr37q1q1arpxIkT2rx5s77//nudOHFCkvTAAw9o4cKF6tSpk9q1a6f9+/fr3XffVbVq1ZSammpfn5eXl6pVq6a5c+fqtttuU0BAgGrUqKEaNWqoV69eeuONN9SmTRs9+eSTOnr0qN59911Vr15dKSkpeap36tSpatKkiWrWrKnevXurQoUKSkpK0po1a/Tnn39q27Zt17Q/CiogIEBNmjRRz549lZSUpNjYWFWqVEm9e/eWdPFo08SJE9WzZ081b95cjz76qP1W8IiICA0ePDhP26lTp47mzp2rIUOGqF69eipRooTat2+f5/HJj7feektNmjTRXXfdpT59+igyMlIHDhzQ0qVLtXXrVkl5f/0ADm78DVrAjXelW8F1yW3OCxYsMK1btzZBQUHG3d3dlC9f3jz99NMmISHBYX0zZswwFSpUMC4uLg63hed2K/j8+fNzrGfDhg0O7Vm3Df/999/2tkWLFplatWoZT09PExERYSZOnGg++OADI8ns37/f3i8xMdG0a9fO+Pj4GEkOdZw+fdoMHz7cVKpUybi7u5tSpUqZRo0amddee83hFvXjx4+bJ554wvj6+ho/Pz/zxBNPmC1btlzTreDGGJOUlGT69+9vypUrZ9zc3ExISIhp1aqVmT59ur1PZmam+c9//mPCw8ONh4eHufPOO82SJUuy3cZtjDG//PKLqVOnjnF3d8926/Unn3xiKlSoYNzd3U3t2rXNt99+m+ut4DnVaowxe/fuNd27dzchISHGzc3NlClTxjzwwANmwYIFV9wHxuR+K/ilY2rMxduxvb29sy3fvHlzU716dft01mvos88+M8OHDzdBQUHGy8vLtGvXLtst1MYYM3fuXHPnnXcaDw8PExAQYLp162b+/PPPPG3bGGNSU1PNY489Zvz9/Y0k+37L6/hcad9evm+MMWb79u2mU6dOxt/f33h6eprbb7/djBgxwqFPXl4/wKVsxtyAK9cAAAWyatUq3XPPPZo/f74efvhhZ5cD3BK45gYAAFgK4QYAAFgK4QYAAFgK19wAAABL4cgNAACwFMINAACwlCL5JX6ZmZk6cuSIfHx8buhX6QMAgIIzxuj06dMKCwu74m+jFclwc+TIkWy/xgwAAG4Nhw8fvuKv2hfJcOPj4yNJ2r9/vwICApxcDXKTnp6u7777Tq1bt5abm5uzy0EuGKdbA+N0a2CcriwlJUXlypWzv4/npkiGm6xTUT4+PvL19XVyNchNenq6ihcvLl9fX/4nv4kxTrcGxunWwDjlzdUuKeGCYgAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCmEGwAAYCk2Y4xxdhE3WkpKivz8/FTxubm64Ort7HKQCw8Xo0n1M/T8ehedy7A5uxzkgnG6NTBOt4YbPU4HJrS77tsoTFnv38nJyfL19c21H0duAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApdz04cYYoz59+iggIEA2m01bt251dkkAAFhaRkaGRowYocjISHl5ealixYoaO3asjDH2Pj169JDNZnN43HfffVdd99SpUxURESFPT081aNBA69evL/T6b/pws3z5cs2ePVtLlixRQkKCatSocUN2DAAARdXEiRM1bdo0vf3229qxY4cmTpyoSZMmacqUKQ797rvvPiUkJNgfn3322RXXO3fuXA0ZMkSvvPKKNm/erDvuuENt2rTR0aNHC7X+mz7c7N27V6GhoWrUqJFCQkL0xRdf3JAdAwBAUfXLL7+oQ4cOateunSIiIvTwww+rdevW2Q4meHh4KCQkxP4oWbLkFdf7xhtvqHfv3urZs6eqVaumd999V8WLF9cHH3xQqPXf1OGmR48eGjhwoA4dOiSbzaaIiIgbtmMAACiqGjVqpLi4OO3atUuStG3bNv38889q27atQ79Vq1YpKChIt99+u5555hkdP34813WeP39emzZtUlRUlL2tWLFiioqK0po1awq1ftdCXVshmzx5sipWrKjp06drw4YNstlsKlOmjIYPH27vc712DAAARdWwYcOUkpKiKlWqyMXFRRkZGRo3bpy6detm73Pfffepc+fOioyM1N69e/Xiiy+qbdu2WrNmjVxcXLKt89ixY8rIyFBwcLBDe3BwsHbu3Fmo9d/U4cbPz08+Pj5ycXFRSEiIjhw5UqAdc+7cOZ07d84+nZKSct1qBgDgVjdv3jx9+umnmjNnjqpXr66tW7cqJiZGYWFhio6OliR17drV3r9mzZqqVauWKlasqFWrVqlVq1bOKl3STX5aqrCMHz9efn5+9ke5cuWcXRIAADetoUOHatiwYeratatq1qypJ554QoMHD9b48eNzXaZChQoqVaqU9uzZk+P8UqVKycXFRUlJSQ7tSUlJCgkJKdT6b6lwU9AdM3z4cCUnJ9sfhw8fvt6lAgBwy0pLS1OxYo4RwcXFRZmZmbku8+eff+r48eMKDQ3Ncb67u7vq1KmjuLg4e1tmZqbi4uLUsGHDwin8/7ulwk1Bd4yHh4d8fX0dHgAAIGft27fXuHHjtHTpUh04cEBffvml3njjDXXq1EmSlJqaqqFDh2rt2rU6cOCA4uLi1KFDB1WqVElt2rSxr6dVq1Z6++237dNDhgzRjBkz9OGHH2rHjh165plndObMGfXs2bNQ67+pr7nJyZAhQxQdHa26deuqfv36io2NvS47BgCAomrKlCkaMWKE+vXrp6NHjyosLExPP/20Ro4cKeniUZxff/1VH374oU6dOqWwsDC1bt1aY8eOlYeHh309e/fu1bFjx+zTjzzyiP7++2+NHDlSiYmJql27tpYvX57tWtprdcuFmxu1YwAAKKp8fHwUGxur2NjYHOd7eXnp22+/vep6Dhw4kK1twIABGjBgwDVWeGU3/WmpmJiYbDtnwIABOnjwoM6dO6d169apQYMGzikOAADcdG76cAMAAJAfhBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGAphBsAAGApNmOMcXYRN1pKSor8/Px07NgxBQYGOrsc5CI9PV3ffPON7r//frm5uTm7HOSCcbo1ME63BsbpyrLev5OTk+Xr65trP47cAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAASyHcAAAAS3F1dgHO1GB8nC64eju7DOTCw8VoUn2pxqhvdS7D5uxykIuscQKAmwVHbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUQbgAAgKUUWrg5depUYa0KAACgwAoUbiZOnKi5c+fap7t06aLAwECVKVNG27ZtK7TiAAAA8qtA4ebdd99VuXLlJEkrVqzQihUrtGzZMrVt21ZDhw4t1AIBAADyo0A/nJmYmGgPN0uWLFGXLl3UunVrRUREqEGDBoVaIAAAQH4U6MhNyZIldfjwYUnS8uXLFRUVJUkyxigjI6PwqgMAAMinAh256dy5sx577DFVrlxZx48fV9u2bSVJW7ZsUaVKlQq1QAAAgPwoULh58803FRERocOHD2vSpEkqUaKEJCkhIUH9+vUr1AIBAADyo0Dhxs3NTf/+97+ztQ8ePPiaCwIAALgWBf6em48//lhNmjRRWFiYDh48KEmKjY3V119/XWjFAQAA5FeBws20adM0ZMgQtW3bVqdOnbJfROzv76/Y2NjCrA8AACBfChRupkyZohkzZuill16Si4uLvb1u3br67bffCq04AACA/CpQuNm/f7/uvPPObO0eHh46c+bMNRcFAABQUAUKN5GRkdq6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U/fu3RUWFqaOHTs642kCgGU49Vbwy6Wmpjocxt+/f7+2bt2qgIAAlS9fXunp6Xr44Ye1efNmLVmyRBkZGfaLLwMCAuTu7u6s0mFhWac9W7Ro4dA+a9Ys9ejRQ+7u7vr+++8VGxurM2fOqFy5cnrooYf08ssvO/SPj4+332klSc8//7zOnDmjPn366NSpU2rSpImWL18uT0/P6/6cAMDKbqpws3HjRt1zzz326SFDhkiSoqOjNXv2bP31119atGiRJKl27doOy65cuTLbmw9QGIwxV5xfrlw5/fjjj/lej81m05gxYzRmzJhrqg8A4Mip4SYmJkYxMTH26RYtWlzxjSQiIuKqbzQAAKBou+WuuQEAALgSwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUwg0AALAUV2cX4EzrhrdSYGCgs8tALtLT0/XNN99o+6g2cnNzc3Y5AIBbBEduAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApRBuAACApbg6uwBnMMZIkk6fPi03NzcnV4PcpKenKy0tTSkpKYzTTYxxujUwTrcGxunKUlJSJP3vfTw3RTLcHD9+XJIUGRnp5EoAAEB+nT59Wn5+frnOL5LhJiAgQJJ0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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", @@ -660,96 +217,9 @@ }, { "cell_type": "code", - "execution_count": 41, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " \n", - " \n", - " \n", - " \n", - "
\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
Array Chunk
Bytes 58.59 kiB 600 B
Shape (15000,) (150,)
Dask graph 100 chunks in 1 graph layer
Data type float32 numpy.ndarray
\n", - "
\n", - " \n", - "\n", - " \n", - " \n", - " \n", - "\n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "\n", - " \n", - " \n", - "\n", - " \n", - " 15000\n", - " 1\n", - "\n", - "
" - ], - "text/plain": [ - "dask.array" - ] - }, - "execution_count": 41, - "metadata": {}, - "output_type": "execute_result" - } - ], + "outputs": [], "source": [ "from xgboost.dask import predict\n", "y_hat = predict(client, bst, X_test).persist()\n", @@ -758,7 +228,7 @@ }, { "cell_type": "code", - "execution_count": 42, + "execution_count": null, "metadata": {}, "outputs": [], "source": [ @@ -770,20 +240,9 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": null, "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "
" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "from sklearn.metrics import auc\n", "\n",