{ "cells": [ { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "# Example1\n", "**This is example 1. In this example, we build a Gaussian process regression surrogate model without transition learning. We then check the validity of its contribution. The test data is evaluated using the R2 indicator.**\n", "\n", "First, we define the formulas to be covered by the surrogate model. For simplicity, we assume that the equation consists of a sin function and a linear function." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "def target_function(x1, x2):\n", " return np.sin(x1) + 0.001*x2 " ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Next, input points are sampled and we create training data." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(10, 2) (10, 1)\n" ] } ], "source": [ "import TL_GPRSM.utils.sampling as sampling\n", "\n", "train_x = sampling.latin_hypercube_sampling(10, 2, False)\n", "train_x = sampling.uniform_scaling(train_x, scale_mins=np.array([-np.pi, -np.pi]), scale_maxs=np.array([np.pi, np.pi]))\n", "train_y = target_function(train_x[:,0], train_x[:,1])[:,np.newaxis]\n", "print(train_x.shape, train_y.shape)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "GPR surrogate model is constructed and trained." ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Optimization restart 1/5, f = 0.23685040920414835\n", "Optimization restart 2/5, f = 0.23685085608053136\n", "Optimization restart 3/5, f = 0.23686404141560313\n", "Optimization restart 4/5, f = 0.236850099616551\n", "Optimization restart 5/5, f = 0.23686213350079122\n" ] } ], "source": [ "import TL_GPRSM.models.GPRSM as GPRSM\n", "gprsm = GPRSM(train_x, train_y, kernel_name=\"Matern52\", is_ard=True)\n", "gprsm.optimize(max_iter=1e4, num_restarts=5)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Check the ARD contribution. I think you can see the contribution of x2 is very small." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[9.99992393e+01 7.60716883e-04]\n" ] } ], "source": [ "ard_contribution = gprsm.get_ard_contribution()\n", "print(ard_contribution)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Create test data and predict data by GPRSM." ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "test_x = sampling.latin_hypercube_sampling(10000, 2, False)\n", "test_x = sampling.uniform_scaling(test_x, scale_mins=np.array([-np.pi, -np.pi]), scale_maxs=np.array([np.pi, np.pi]))\n", "test_y = target_function(test_x[:,0], test_x[:,1])[:,np.newaxis]\n", "predict_mean, predict_var = gprsm.predict(test_x)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Evaluate predicted values with r2 index." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9998653442867246\n" ] } ], "source": [ "import TL_GPRSM.utils.metrics as metrics\n", "\n", "r2_index = metrics.r2_index(test_y, predict_mean)\n", "print(r2_index)" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "Plot the predicted values with matplotlib." ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "image/png": "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SmPenwsXLmDgwIGIiYlBRkaGy4cb4O7++3FXnp6eiImJQVZWlvmD22g0IisrC9OmTbNvceTQTCYTpk+fjq1bt2Lv3r0MNzYwGo0O/xnFgGNnhw4dwuHDh9GvXz/4+/vj7NmzmDdvHsLDw1129KYxLly4gAEDBuC+++7DG2+8gcuXL5vbtFqtHStzHEVFRSgrK0NRURFqa2uRn58PAOjUqRNatWpl3+JkNnPmTEyYMAG9e/dGnz598NZbb6GyshJJSUn2Ls3uKioqcObMGfPP586dQ35+PgICAtC+fXs7VmZ/U6dOxUcffYRt27ahdevW5jlbGo0G3t7edq7O/lJTUzFkyBC0b98eP//8Mz766CPs3bsXO3futHdpwuy7iIu+//5708CBA00BAQEmtVptCgsLMz399NOm8+fP27s0h5CRkWEC0OCN6kyYMKHB9yc7O9vepdnFypUrTe3btzd5enqa+vTpYzp48KC9S3II2dnZDf53MmHCBHuXZnfW/o3JyMiwd2kO4f/+7/9M9913n8nT09MUGBhoGjRokGnXrl32LksU5+AQERGRy3H9yQxERETkdhhwiIiIyOUw4BAREZHLYcAhIiIil8OAQ0RERC6HAYeIiIhcDgMOERERuRwGHCIiInI5DDhERETkchhwiIiIyOUw4BAREZHLYcAhIiIil/P/SabZB+tnGHIAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(test_x[:,0], predict_mean, \".\", label=\"predict\")\n", "plt.plot(train_x[:,0], train_y, \".\", label=\"train\")\n", "plt.legend()\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "surrogate_model", "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.10" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }