SCNet/04_model_comparision.ipynb
2022-05-28 23:03:14 +08:00

134 lines
3.2 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"collapsed": true,
"pycharm": {
"name": "#%% md\n"
}
},
"source": [
"# Model comparison"
]
},
{
"cell_type": "markdown",
"source": [
"## PLS"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%% md\n"
}
}
},
{
"cell_type": "code",
"execution_count": 44,
"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": [
"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",
"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}\")"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 45,
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"PLS RMSE: 0.7512262994028881 %\n",
"PLS R^2: 0.8748209692384972\n",
"SVR RMSE: 2.870635692210643 %\n",
"SVR R^2: 0.5216575965112935\n",
"MLP RMSE: 4.919371298214537 %\n",
"MLP R^2: 0.18027080314424337\n"
]
}
],
"source": [
"pls = PLSRegression(n_components=20)\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",
" print(model_name, \"RMSE: \", mean_squared_error(y_test, model_result)/np.mean(y_test)*100, \"%\")\n",
" print(model_name, \"R^2: \", r2_score(y_test, model_result))"
],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
},
{
"cell_type": "code",
"execution_count": 45,
"outputs": [],
"source": [],
"metadata": {
"collapsed": false,
"pycharm": {
"name": "#%%\n"
}
}
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.6"
}
},
"nbformat": 4,
"nbformat_minor": 0
}