{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# simpleRegressor.py\n", "# G. Cowan / RHUL Physics / November 2021\n", "# Simple program to illustrate regression with scikit-learn\n", "\n", "import scipy as sp\n", "import numpy as np\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "import matplotlib.ticker as ticker\n", "\n", "from sklearn import linear_model\n", "from sklearn.model_selection import train_test_split\n", "from sklearn import metrics" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# read the data in from file\n", "events = np.loadtxt('trainingData.txt')\n", "nEvt = events.shape[0]\n", "X = events[:,1:] # columns 1,2,3,4 are eta, s1, s2, s3\n", "y = events[:,0] # target value E is column 0\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.5, random_state=1)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Test R2 score: 0.898\n" ] } ], "source": [ "# create regressor object, train and test\n", "regr = linear_model.LinearRegression()\n", "regr.fit(X_train, y_train)\n", "y_pred = regr.predict(X_test)\n", "R2 = regr.score(X_test, y_test)\n", "print(f\"Test R2 score: {R2:.3f}\")" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# make a plot\n", "matplotlib.rcParams.update({'font.size':12}) # set all font sizes\n", "fig, ax = plt.subplots(1,1)\n", "plt.gcf().subplots_adjust(bottom=0.15)\n", "plt.gcf().subplots_adjust(left=0.15)\n", "ax.set_xlim((0.,1000.))\n", "ax.set_ylim((0.,1000.))\n", "x0,x1 = ax.get_xlim()\n", "y0,y1 = ax.get_ylim()\n", "ax.set_aspect(abs(x1-x0)/abs(y1-y0)) # make square plot\n", "xtick_spacing = 200\n", "ytick_spacing = 200\n", "ax.yaxis.set_major_locator(ticker.MultipleLocator(xtick_spacing))\n", "ax.yaxis.set_major_locator(ticker.MultipleLocator(ytick_spacing))\n", "plt.xlabel('true energy (GeV)', labelpad=3)\n", "plt.ylabel('reconstructed energy (GeV)', labelpad=3)\n", "plt.scatter(y_test, y_pred, s=3, color='dodgerblue', marker='o')\n", "plt.figtext(0.3, 0.81, f'Linear Regressor')\n", "plt.figtext(0.3, 0.73, f'$R^2$ = {R2:.3f}')\n", "plt.show()\n", "plt.savefig(\"LinearRegressor.pdf\", format='pdf')" ] }, { "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.7.12" } }, "nbformat": 4, "nbformat_minor": 4 }