{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example: Regression with XGBoost" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Superconductivty Data Set: Predict the critical temperature based on 81 material features." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.metrics import mean_squared_error" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "filename = \"https://www.physi.uni-heidelberg.de/~reygers/lectures/2021/ml/data/train_critical_temp.csv\"\n", "df = pd.read_csv(filename, engine='python')" ] }, { "cell_type": "code", "execution_count": 21, "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", "
number_of_elementsmean_atomic_masswtd_mean_atomic_massgmean_atomic_masswtd_gmean_atomic_massentropy_atomic_masswtd_entropy_atomic_massrange_atomic_masswtd_range_atomic_massstd_atomic_mass...wtd_mean_Valencegmean_Valencewtd_gmean_Valenceentropy_Valencewtd_entropy_Valencerange_Valencewtd_range_Valencestd_Valencewtd_std_Valencecritical_temp
0488.94446857.86269266.36159236.1166121.1817951.062396122.9060731.79492151.968828...2.2571432.2133642.2197831.3689221.06622111.0857140.4330130.43705929.0
1592.72921458.51841673.13278736.3966021.4493091.057755122.9060736.16193947.094633...2.2571431.8881752.2106791.5571131.04722121.1285710.6324560.46860626.0
2488.94446857.88524266.36159236.1225091.1817950.975980122.9060735.74109951.968828...2.2714292.2133642.2326791.3689221.02917511.1142860.4330130.44469719.0
3488.94446857.87396766.36159236.1195601.1817951.022291122.9060733.76801051.968828...2.2642862.2133642.2262221.3689221.04883411.1000000.4330130.44095222.0
4488.94446857.84014366.36159236.1107161.1817951.129224122.9060727.84874351.968828...2.2428572.2133642.2069631.3689221.09605211.0571430.4330130.42880923.0
\n", "

5 rows × 82 columns

\n", "
" ], "text/plain": [ " number_of_elements mean_atomic_mass wtd_mean_atomic_mass \\\n", "0 4 88.944468 57.862692 \n", "1 5 92.729214 58.518416 \n", "2 4 88.944468 57.885242 \n", "3 4 88.944468 57.873967 \n", "4 4 88.944468 57.840143 \n", "\n", " gmean_atomic_mass wtd_gmean_atomic_mass entropy_atomic_mass \\\n", "0 66.361592 36.116612 1.181795 \n", "1 73.132787 36.396602 1.449309 \n", "2 66.361592 36.122509 1.181795 \n", "3 66.361592 36.119560 1.181795 \n", "4 66.361592 36.110716 1.181795 \n", "\n", " wtd_entropy_atomic_mass range_atomic_mass wtd_range_atomic_mass \\\n", "0 1.062396 122.90607 31.794921 \n", "1 1.057755 122.90607 36.161939 \n", "2 0.975980 122.90607 35.741099 \n", "3 1.022291 122.90607 33.768010 \n", "4 1.129224 122.90607 27.848743 \n", "\n", " std_atomic_mass ... wtd_mean_Valence gmean_Valence wtd_gmean_Valence \\\n", "0 51.968828 ... 2.257143 2.213364 2.219783 \n", "1 47.094633 ... 2.257143 1.888175 2.210679 \n", "2 51.968828 ... 2.271429 2.213364 2.232679 \n", "3 51.968828 ... 2.264286 2.213364 2.226222 \n", "4 51.968828 ... 2.242857 2.213364 2.206963 \n", "\n", " entropy_Valence wtd_entropy_Valence range_Valence wtd_range_Valence \\\n", "0 1.368922 1.066221 1 1.085714 \n", "1 1.557113 1.047221 2 1.128571 \n", "2 1.368922 1.029175 1 1.114286 \n", "3 1.368922 1.048834 1 1.100000 \n", "4 1.368922 1.096052 1 1.057143 \n", "\n", " std_Valence wtd_std_Valence critical_temp \n", "0 0.433013 0.437059 29.0 \n", "1 0.632456 0.468606 26.0 \n", "2 0.433013 0.444697 19.0 \n", "3 0.433013 0.440952 22.0 \n", "4 0.433013 0.428809 23.0 \n", "\n", "[5 rows x 82 columns]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "y = df['critical_temp'].values\n", "X = df[[col for col in df.columns if col!=\"critical_temp\"]]" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, shuffle=True)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "16.105452060699463\n" ] } ], "source": [ "import xgboost as xgb\n", "import time\n", "# XGBreg = xgb.sklearn.XGBRegressor(nthread=-1, seed=1, n_estimators=1000)\n", "XGBreg = xgb.sklearn.XGBRegressor()\n", "\n", "start_time = time.time()\n", "XGBreg.fit(X_train, y_train)\n", "run_time = time.time() - start_time\n", "\n", "print(run_time)" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "y_pred = XGBreg.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.scatter(y_test, y_pred, s=2)\n", "plt.xlabel(\"true critical temperature (K)\", fontsize=14)\n", "plt.ylabel(\"predicted critical temperature (K)\", fontsize=14)\n", "plt.savefig(\"critical_temperature.pdf\")" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "root mean square error 9.68\n" ] } ], "source": [ "rms = np.sqrt(mean_squared_error(y_test, y_pred))\n", "print(f\"root mean square error {rms:.2f}\")" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "# compare with other regressors\n", "\n", "from sklearn.ensemble import RandomForestRegressor\n", "rfr = RandomForestRegressor()\n", "\n", "from sklearn.ensemble import GradientBoostingRegressor\n", "gbr = GradientBoostingRegressor()\n", "\n", "from sklearn.neural_network import MLPRegressor\n", "mlpr = MLPRegressor(hidden_layer_sizes=(50,50), activation='relu', random_state=1, max_iter=5000)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "83.4200599193573\n", "root mean square error 9.54\n", "\n", "28.77874779701233\n", "root mean square error 12.56\n", "\n", "9.2709481716156\n", "root mean square error 18.58\n", "\n" ] } ], "source": [ "regressors = [rfr, gbr, mlpr]\n", "\n", "for reg in regressors:\n", " \n", " start_time = time.time()\n", " reg.fit(X_train, y_train)\n", " run_time = time.time() - start_time\n", " \n", " y_pred = reg.predict(X_test)\n", " rms = np.sqrt(mean_squared_error(y_test, y_pred))\n", " \n", " print(run_time)\n", " print(f\"root mean square error {rms:.2f}\\n\")\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" } }, "nbformat": 4, "nbformat_minor": 4 }