{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example: Accelerating pipelines\n", "---------------------------------\n", "\n", "This example shows how to accelerate your models on cpu using [sklearnex](https://github.com/intel/scikit-learn-intelex).\n", "\n", "The data used is a variation on the [Australian weather dataset](https://www.kaggle.com/jsphyg/weather-dataset-rattle-package) from Kaggle. You can download it from [here](https://github.com/tvdboom/ATOM/blob/master/examples/datasets/weatherAUS.csv). The goal of this dataset is to predict whether or not it will rain tomorrow training a binary classifier on target `RainTomorrow`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Load the data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# Import packages\n", "import pandas as pd\n", "from atom import ATOMClassifier" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
LocationMinTempMaxTempRainfallEvaporationSunshineWindGustDirWindGustSpeedWindDir9amWindDir3pm...Humidity9amHumidity3pmPressure9amPressure3pmCloud9amCloud3pmTemp9amTemp3pmRainTodayRainTomorrow
0MelbourneAirport18.026.921.47.08.9SSE41.0WSSE...95.054.01019.51017.08.05.018.526.0Yes0
1Adelaide17.223.40.0NaNNaNS41.0SWSW...59.036.01015.71015.7NaNNaN17.721.9No0
2Cairns18.624.67.43.06.1SSE54.0SSESE...78.057.01018.71016.63.03.020.824.1Yes0
3Portland13.616.84.21.20.0ESE39.0ESEESE...76.074.01021.41020.57.08.015.616.0Yes1
4Walpole16.419.90.0NaNNaNSE44.0SESE...78.070.01019.41018.9NaNNaN17.418.1No0
\n", "

5 rows × 22 columns

\n", "
" ], "text/plain": [ " Location MinTemp MaxTemp Rainfall Evaporation Sunshine \\\n", "0 MelbourneAirport 18.0 26.9 21.4 7.0 8.9 \n", "1 Adelaide 17.2 23.4 0.0 NaN NaN \n", "2 Cairns 18.6 24.6 7.4 3.0 6.1 \n", "3 Portland 13.6 16.8 4.2 1.2 0.0 \n", "4 Walpole 16.4 19.9 0.0 NaN NaN \n", "\n", " WindGustDir WindGustSpeed WindDir9am WindDir3pm ... Humidity9am \\\n", "0 SSE 41.0 W SSE ... 95.0 \n", "1 S 41.0 S WSW ... 59.0 \n", "2 SSE 54.0 SSE SE ... 78.0 \n", "3 ESE 39.0 ESE ESE ... 76.0 \n", "4 SE 44.0 SE SE ... 78.0 \n", "\n", " Humidity3pm Pressure9am Pressure3pm Cloud9am Cloud3pm Temp9am \\\n", "0 54.0 1019.5 1017.0 8.0 5.0 18.5 \n", "1 36.0 1015.7 1015.7 NaN NaN 17.7 \n", "2 57.0 1018.7 1016.6 3.0 3.0 20.8 \n", "3 74.0 1021.4 1020.5 7.0 8.0 15.6 \n", "4 70.0 1019.4 1018.9 NaN NaN 17.4 \n", "\n", " Temp3pm RainToday RainTomorrow \n", "0 26.0 Yes 0 \n", "1 21.9 No 0 \n", "2 24.1 Yes 0 \n", "3 16.0 Yes 1 \n", "4 18.1 No 0 \n", "\n", "[5 rows x 22 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load data\n", "X = pd.read_csv(\"./datasets/weatherAUS.csv\")\n", "\n", "# Let's have a look\n", "X.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run the pipeline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<< ================== ATOM ================== >>\n", "Algorithm task: binary classification.\n", "\n", "Dataset stats ==================== >>\n", "Shape: (142193, 22)\n", "Train set size: 113755\n", "Test set size: 28438\n", "-------------------------------------\n", "Memory: 61.69 MB\n", "Scaled: False\n", "Missing values: 316559 (10.1%)\n", "Categorical features: 5 (23.8%)\n", "Duplicate samples: 45 (0.0%)\n", "\n" ] } ], "source": [ "atom = ATOMClassifier(X, \"RainTomorrow\", verbose=2)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Fitting Imputer...\n", "Imputing missing values...\n", " --> Dropping 637 samples due to missing values in feature MinTemp.\n", " --> Dropping 322 samples due to missing values in feature MaxTemp.\n", " --> Dropping 1406 samples due to missing values in feature Rainfall.\n", " --> Dropping 60843 samples due to missing values in feature Evaporation.\n", " --> Dropping 67816 samples due to missing values in feature Sunshine.\n", " --> Dropping 9330 samples due to missing values in feature WindGustDir.\n", " --> Dropping 9270 samples due to missing values in feature WindGustSpeed.\n", " --> Dropping 10013 samples due to missing values in feature WindDir9am.\n", " --> Dropping 3778 samples due to missing values in feature WindDir3pm.\n", " --> Dropping 1348 samples due to missing values in feature WindSpeed9am.\n", " --> Dropping 2630 samples due to missing values in feature WindSpeed3pm.\n", " --> Dropping 1774 samples due to missing values in feature Humidity9am.\n", " --> Dropping 3610 samples due to missing values in feature Humidity3pm.\n", " --> Dropping 14014 samples due to missing values in feature Pressure9am.\n", " --> Dropping 13981 samples due to missing values in feature Pressure3pm.\n", " --> Dropping 53657 samples due to missing values in feature Cloud9am.\n", " --> Dropping 57094 samples due to missing values in feature Cloud3pm.\n", " --> Dropping 904 samples due to missing values in feature Temp9am.\n", " --> Dropping 2726 samples due to missing values in feature Temp3pm.\n", " --> Dropping 1406 samples due to missing values in feature RainToday.\n", "Fitting Encoder...\n", "Encoding categorical columns...\n", " --> LeaveOneOut-encoding feature Location. Contains 26 classes.\n", " --> LeaveOneOut-encoding feature WindGustDir. Contains 16 classes.\n", " --> LeaveOneOut-encoding feature WindDir9am. Contains 16 classes.\n", " --> LeaveOneOut-encoding feature WindDir3pm. Contains 16 classes.\n", " --> Ordinal-encoding feature RainToday. Contains 2 classes.\n" ] } ], "source": [ "# Impute missing values and encode categorical columns\n", "atom.impute()\n", "atom.encode()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Training ========================= >>\n", "Models: KNN\n", "Metric: f1\n", "\n", "\n", "Results for KNearestNeighbors:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.7154\n", "Test evaluation --> f1: 0.6034\n", "Time elapsed: 16.384s\n", "-------------------------------------------------\n", "Total time: 16.384s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 16.384s\n", "-------------------------------------\n", "KNearestNeighbors --> f1: 0.6034\n" ] } ], "source": [ "# Train a K-Nearest Neighbors model (using default sklearn)\n", "atom.run(models=\"KNN\", metric=\"f1\")" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Training ========================= >>\n", "Models: KNN_acc\n", "Metric: f1\n", "\n", "\n", "Results for KNearestNeighbors:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.7154\n", "Test evaluation --> f1: 0.6034\n", "Time elapsed: 6.603s\n", "-------------------------------------------------\n", "Total time: 6.603s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 6.606s\n", "-------------------------------------\n", "KNearestNeighbors --> f1: 0.6034\n" ] } ], "source": [ "# Now, we train an accelerated KNN using engine=\"sklearnex\"\n", "# Note the diffrence in training speed!!\n", "atom.run(models=\"KNN_acc\", metric=\"f1\", engine=\"sklearnex\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analyze the results" ] }, { "cell_type": "code", "execution_count": 7, "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", "
score_trainscore_testtime_fittime
KNN0.71540.603416.38361616.383616
KNN_acc0.71540.60346.6032216.603221
\n", "
" ], "text/plain": [ " score_train score_test time_fit time\n", "KNN 0.7154 0.6034 16.383616 16.383616\n", "KNN_acc 0.7154 0.6034 6.603221 6.603221" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "atom.results" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "KNeighborsClassifier(n_jobs=1)\n", "KNeighborsClassifier(n_jobs=1)\n", "sklearn.neighbors._classification\n", "sklearnex.neighbors.knn_classification\n" ] } ], "source": [ "# Note how the underlying estimators might look the same...\n", "print(atom.knn.estimator)\n", "print(atom.knn_acc.estimator)\n", "\n", "# ... but are using different implementations\n", "print(atom.knn.estimator.__module__)\n", "print(atom.knn_acc.estimator.__module__)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "hovertemplate": "%{x}time_fit", "legendgroup": "time_fit", "marker": { "color": "rgba(0, 98, 98, 0.2)", "line": { "color": "rgb(0, 98, 98)", "width": 2 } }, "name": "time_fit", "orientation": "h", "showlegend": true, "type": "bar", "x": [ 16.383616, 6.603221 ], "xaxis": "x", "y": [ "KNN", "KNN_acc" ], "yaxis": "y" }, { "hovertemplate": "%{x}time", "legendgroup": "time", "marker": { "color": "rgba(56, 166, 165, 0.2)", "line": { "color": "rgb(56, 166, 165)", "width": 2 } }, "name": "time", "orientation": "h", "showlegend": true, "type": "bar", "x": [ 16.383616, 6.603221 ], "xaxis": "x2", "y": [ "KNN", "KNN_acc" ], "yaxis": "y2" } ], "layout": { "annotations": [ { "font": { "size": 20 }, "showarrow": false, "text": "Training", "x": 0.225, "xanchor": "center", "xref": "paper", "y": 1.005, "yanchor": "bottom", "yref": "paper" }, { "font": { "size": 20 }, "showarrow": false, "text": "Total", "x": 0.775, "xanchor": "center", "xref": "paper", "y": 1.005, "yanchor": "bottom", "yref": "paper" } ], "bargroupgap": 0.05, "boxmode": "group", "font": { "size": 12 }, "height": 600, "hoverlabel": { "font": { "size": 16 } }, "legend": { "bgcolor": "rgba(255, 255, 255, 0.5)", "font": { "size": 16 }, "groupclick": "togglegroup", "traceorder": "grouped" }, "margin": { "b": 50, "l": 50, "pad": 0, "r": 0, "t": 73 }, "showlegend": true, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "size": 24 }, "pad": { "b": 15, "t": 15 }, "text": "Timing engines: sklearn vs sklearnex", "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "top" }, "width": 1250, "xaxis": { "anchor": "y", "automargin": true, "autorange": true, "domain": [ 0, 0.45 ], "range": [ 0, 17.245911578947368 ], "title": { "font": { "size": 16 }, "text": "time (s)" }, "type": "linear" }, "xaxis2": { "anchor": "y2", "automargin": true, "autorange": true, "domain": [ 0.55, 1 ], "range": [ 0, 17.245911578947368 ], "title": { "font": { "size": 16 }, "text": "time (s)" }, "type": "linear" }, "yaxis": { "anchor": "x", "automargin": true, "autorange": true, "categoryorder": "total ascending", "domain": [ 0, 1 ], "range": [ -0.5, 1.5 ], "title": { "font": { "size": 16 } }, "type": "category" }, "yaxis2": { "anchor": "x2", "automargin": true, "autorange": true, "categoryorder": "total ascending", "domain": [ 0, 1 ], "range": [ -0.5, 1.5 ], "title": { "font": { "size": 16 } }, "type": "category" } } }, "image/png": "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", "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "with atom.canvas(1, 2, title=\"Timing engines: sklearn vs sklearnex\"):\n", " atom.plot_results(metric=\"time_fit\", title=\"Training\")\n", " atom.plot_results(metric=\"time\", title=\"Total\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.9" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }