{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": true, "pycharm": { "name": "#%% md\n" } }, "source": [ "# Model comparison" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false, "pycharm": { "name": "#%% md\n" } }, "source": [ "## PLS" ] }, { "cell_type": "code", "execution_count": 55, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [ "from sklearn.neural_network import MLPRegressor\n", "from sklearn.svm import SVR\n", "import numpy as np\n", "from scipy.io import loadmat\n", "from sklearn.cross_decomposition import PLSRegression\n", "from sklearn.metrics import mean_squared_error, r2_score\n", "\n", "data = loadmat('./dataset/mango/mango_dm_split.mat')\n", "min_value, max_value = data['min_y'][-1][-1], data['max_y'][-1][-1]\n", "retransform = lambda x: x * (max_value - min_value)" ] }, { "cell_type": "code", "execution_count": 56, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "shape of data:\n", "x_train: (8183, 102), y_train: (8183, 1),\n", "x_test: (3508, 102), y_test: (3508, 1)\n" ] } ], "source": [ "x_train, y_train, x_test, y_test = data['x_train'], data['y_train'], data['x_test'], data['y_test']\n", "print(f\"shape of data:\\n\"\n", " f\"x_train: {x_train.shape}, y_train: {y_train.shape},\\n\"\n", " f\"x_test: {x_test.shape}, y_test: {y_test.shape}\")" ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PLS RMSE: 0.05722520296881164\n", "PLS Dry matter content error 0.8648183977750965\n", "PLS R^2: 0.8793937498230511\n", "SVR RMSE: 0.1139650997574326\n", "SVR Dry matter content error 1.7223025845485895\n", "SVR R^2: 0.5216575965112935\n", "MLP RMSE: 0.15508626630172465\n", "MLP Dry matter content error 2.343748023280531\n", "MLP R^2: 0.11418748397100065\n" ] } ], "source": [ "pls = PLSRegression(n_components=90)\n", "svr = SVR(kernel=\"rbf\", degree=30, gamma=\"scale\")\n", "mlp = MLPRegressor(hidden_layer_sizes=(60, 50, ))\n", "pls = pls.fit(x_train, y_train.ravel())\n", "svr = svr.fit(x_train, y_train.ravel())\n", "mlp = mlp.fit(x_train, y_train.ravel())\n", "\n", "models = {'PLS': pls, \"SVR\": svr, \"MLP\": mlp}\n", "results = {model_name: model.predict(x_test).reshape((-1, )) for model_name, model in models.items()}\n", "for model_name, model_result in results.items():\n", " rmse = np.sqrt(mean_squared_error(y_test, model_result))\n", " print(model_name, \"RMSE: \", rmse)\n", " print(model_name, \"Dry matter content error\", retransform(rmse))\n", " print(model_name, \"R^2: \", r2_score(y_test, model_result))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "pycharm": { "name": "#%%\n" } }, "outputs": [], "source": [] } ], "metadata": { "interpreter": { "hash": "7f619fc91ee8bdab81d49e7c14228037474662e3f2d607687ae505108922fa06" }, "kernelspec": { "display_name": "Python 3.9.7 ('base')", "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.9.7" } }, "nbformat": 4, "nbformat_minor": 0 }