From 908ba9aa1c7235fbf4bbb8a0cfff6d117ea0fb75 Mon Sep 17 00:00:00 2001 From: rasbt Date: Sun, 1 May 2016 17:35:01 -0400 Subject: [PATCH 1/3] major refactoring of base classes --- docs/mkdocs.yml | 2 +- docs/sources/CHANGELOG.md | 9 +- docs/sources/USER_GUIDE_INDEX.md | 2 +- .../user_guide/classifier/Adaline.ipynb | 27 +- mlxtend/_base/__init__.py | 19 + mlxtend/_base/_base_classifier.py | 62 +++ mlxtend/_base/_base_cluster.py | 25 ++ .../tf_base.py => _base/_base_estimator.py} | 102 +++-- mlxtend/_base/_base_multiclass.py | 40 ++ mlxtend/_base/_base_multilayer.py | 62 +++ mlxtend/_base/_base_regressor.py | 30 ++ mlxtend/_base/_base_supervised_estimator.py | 59 +++ mlxtend/_base/_base_unsupervised_estimator.py | 52 +++ mlxtend/_base/tests/test_base_classifier.py | 53 +++ mlxtend/_base/tests/test_base_cluster.py | 13 + mlxtend/_base/tests/test_base_estimator.py | 125 ++++++ mlxtend/_base/tests/test_base_multiclass.py | 49 +++ mlxtend/_base/tests/test_base_multilayer.py | 64 +++ mlxtend/_base/tests/test_base_regressor.py | 28 ++ .../tests/test_base_supervised_estimator.py | 35 ++ .../tests/test_base_unsupervised_estimator.py | 20 + mlxtend/classifier/__init__.py | 4 +- mlxtend/classifier/adaline.py | 127 ++---- mlxtend/classifier/base.py | 151 ------- mlxtend/classifier/logistic_regression.py | 104 ++--- mlxtend/classifier/multilayerperceptron.py | 257 +++++++++++ mlxtend/classifier/neuralnet_mlp.py | 411 ------------------ mlxtend/classifier/perceptron.py | 107 ++--- mlxtend/classifier/softmax_regression.py | 138 ++---- mlxtend/classifier/tests/test_adaline.py | 85 ++-- .../classifier/tests/test_baseclassifer.py | 40 -- .../tests/test_logistic_regression.py | 67 ++- .../tests/test_multilayerperceptron.py | 140 ++++++ .../classifier/tests/test_neuralnet_mlp.py | 155 ------- mlxtend/classifier/tests/test_perceptron.py | 74 ++-- .../tests/test_softmax_regression.py | 71 ++- mlxtend/cluster/base.py | 115 ----- mlxtend/cluster/kmeans.py | 30 +- mlxtend/cluster/tests/test_base.py | 71 --- mlxtend/cluster/tests/test_kmeans.py | 24 + mlxtend/regressor/base.py | 129 ------ mlxtend/regressor/linear_regression.py | 120 ++--- .../regressor/tests/test_linear_regression.py | 39 +- .../tests/tests_tf_multilayerperceptron.py | 40 +- .../tf_classifier/tests/tests_tf_softmax.py | 30 +- mlxtend/tf_classifier/tf_base.py | 160 ------- .../tf_classifier/tf_multilayerperceptron.py | 180 ++------ mlxtend/tf_classifier/tf_softmax.py | 155 ++----- mlxtend/tf_cluster/tests/test_tf_base.py | 71 --- mlxtend/tf_cluster/tests/test_tf_kmeans.py | 23 + mlxtend/tf_cluster/tf_base.py | 120 ----- mlxtend/tf_cluster/tf_kmeans.py | 32 +- mlxtend/tf_regressor/tests/test_tf_base.py | 113 ----- .../tests/test_tf_linear_regression.py | 20 +- mlxtend/tf_regressor/tf_linear_regression.py | 42 +- 55 files changed, 1888 insertions(+), 2435 deletions(-) create mode 100644 mlxtend/_base/__init__.py create mode 100644 mlxtend/_base/_base_classifier.py create mode 100644 mlxtend/_base/_base_cluster.py rename mlxtend/{tf_regressor/tf_base.py => _base/_base_estimator.py} (53%) create mode 100644 mlxtend/_base/_base_multiclass.py create mode 100644 mlxtend/_base/_base_multilayer.py create mode 100644 mlxtend/_base/_base_regressor.py create mode 100644 mlxtend/_base/_base_supervised_estimator.py create mode 100644 mlxtend/_base/_base_unsupervised_estimator.py create mode 100644 mlxtend/_base/tests/test_base_classifier.py create mode 100644 mlxtend/_base/tests/test_base_cluster.py create mode 100644 mlxtend/_base/tests/test_base_estimator.py create mode 100644 mlxtend/_base/tests/test_base_multiclass.py create mode 100644 mlxtend/_base/tests/test_base_multilayer.py create mode 100644 mlxtend/_base/tests/test_base_regressor.py create mode 100644 mlxtend/_base/tests/test_base_supervised_estimator.py create mode 100644 mlxtend/_base/tests/test_base_unsupervised_estimator.py delete mode 100644 mlxtend/classifier/base.py create mode 100644 mlxtend/classifier/multilayerperceptron.py delete mode 100644 mlxtend/classifier/neuralnet_mlp.py delete mode 100644 mlxtend/classifier/tests/test_baseclassifer.py create mode 100644 mlxtend/classifier/tests/test_multilayerperceptron.py delete mode 100644 mlxtend/classifier/tests/test_neuralnet_mlp.py delete mode 100644 mlxtend/cluster/base.py delete mode 100644 mlxtend/cluster/tests/test_base.py delete mode 100644 mlxtend/regressor/base.py delete mode 100644 mlxtend/tf_classifier/tf_base.py delete mode 100644 mlxtend/tf_cluster/tests/test_tf_base.py delete mode 100644 mlxtend/tf_cluster/tf_base.py delete mode 100644 mlxtend/tf_regressor/tests/test_tf_base.py diff --git a/docs/mkdocs.yml b/docs/mkdocs.yml index 77f801397..0e98d54fc 100755 --- a/docs/mkdocs.yml +++ b/docs/mkdocs.yml @@ -38,7 +38,7 @@ pages: - user_guide/classifier/Adaline.md - user_guide/classifier/LogisticRegression.md - user_guide/classifier/SoftmaxRegression.md - - user_guide/classifier/NeuralNetMLP.md + - user_guide/classifier/MultiLayerPerceptron.md - tf_classifier: - user_guide/tf_classifier/TfMultiLayerPerceptron.md - user_guide/tf_classifier/TfSoftmaxRegression.md diff --git a/docs/sources/CHANGELOG.md b/docs/sources/CHANGELOG.md index 77848dd2e..e2869d657 100755 --- a/docs/sources/CHANGELOG.md +++ b/docs/sources/CHANGELOG.md @@ -12,8 +12,13 @@ ##### Changes -- Adding optional `dropout` to the [`tf_classifier.TfMultiLayerPerceptron`](./user_guide/tf_classifier/TfMultiLayerPerceptron.md) classifier for regularization -- Adding an optional `decay` parameter to the [`tf_classifier.TfMultiLayerPerceptron`](./user_guide/tf_classifier/TfMultiLayerPerceptron.md) classifier for adaptive learning via an exponential decay of the learning rate eta +- Due to refactoring of the estimator classes, the `init_weights` parameter of the `fit` methods was globally renamed to `init_params` +- Overall performance improvements of estimators due to code clean-up and refactoring +- Added several additional checks for correct array types and more meaningful exception messages +- Added optional `dropout` to the [`tf_classifier.TfMultiLayerPerceptron`](./user_guide/tf_classifier/TfMultiLayerPerceptron.md) classifier for regularization +- Added an optional `decay` parameter to the [`tf_classifier.TfMultiLayerPerceptron`](./user_guide/tf_classifier/TfMultiLayerPerceptron.md) classifier for adaptive learning via an exponential decay of the learning rate eta +- Replaced old `NeuralNetMLP` by more streamlined `MultiLayerPerceptron` ([`classifier.MultiLayerPerceptron`](./user_guide/classifier/MultiLayerPerceptron.md)); now also with softmax in the output layer and categorical cross-entropy loss. +- Unified `init_params` parameter for fit functions to continue training where the algorithm left off (if supported) ### Version 0.4.0 (2016-04-09) diff --git a/docs/sources/USER_GUIDE_INDEX.md b/docs/sources/USER_GUIDE_INDEX.md index d6d966f29..ff9258a20 100755 --- a/docs/sources/USER_GUIDE_INDEX.md +++ b/docs/sources/USER_GUIDE_INDEX.md @@ -6,7 +6,7 @@ - [`Perceptron`](user_guide/classifier/Perceptron.md) - [`Adaline`](user_guide/classifier/Adaline.md) - [`LogisticRegression`](user_guide/classifier/LogisticRegression.md) - - [`NeuralNetMLP`](user_guide/classifier/NeuralNetMLP.md) + - [`MultiLayerPerceptron`](user_guide/classifier/MultiLayerPerceptron.md) - [`SoftmaxRegression`](user_guide/classifier/SoftmaxRegression.md) ## `tf_classifier` (TensorFlow Classifier) diff --git a/docs/sources/user_guide/classifier/Adaline.ipynb b/docs/sources/user_guide/classifier/Adaline.ipynb index 6502966e1..2f6d94266 100644 --- a/docs/sources/user_guide/classifier/Adaline.ipynb +++ b/docs/sources/user_guide/classifier/Adaline.ipynb @@ -25,14 +25,14 @@ "output_type": "stream", "text": [ "Sebastian Raschka \n", - "last updated: 2016-02-23 \n", + "last updated: 2016-04-30 \n", "\n", "CPython 3.5.1\n", "IPython 4.0.3\n", "\n", - "mlxtend 0.3.1.dev0\n", + "mlxtend 0.4.1.dev0\n", "matplotlib 1.5.1\n", - "numpy 1.10.4\n", + "numpy 1.11.0\n", "scipy 0.17.0\n" ] } @@ -200,20 +200,23 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { - "data": { - "image/png": "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\n2r59O4sWXcPzzz9J8p0czdbB2LF788Y3nsHIkdnSr5O3mbWtBx9cyIEHTuDEEz/AqFGd1XdosG3b\ntnLHHfN58MGFHHnkyZna8py3mbWtdeuWc8wx/60lEjfAqFGdvOENx7Nu3fLMbTl5m1nb2r79ecaP\nn9jsMHYzYcJktm/fkrkdJ28za2sdHa2V5pJ4ss+/t9ZRmZlZTZy8zcxKyMnbzCwHa9eu5G1vm8a0\naSM58sjxXHHFxQ3tz8nbzCwH55wzh87OTu69989ceunX+cY3vsB99/2sYf05eZuZZbRx4waWL+/h\n4ou/zoQJk3jb205j2rTXcO21X25Yn/6QjplZH289dh92bH5ut+dG7DGO/7hrbb/bL116N5KYPv31\nu56bOvWvWLLk3obF6ORtZtbHjs3P8egeL9ntuUP7JPNKGzduoLNz9w8CjR8/iRdeeL4h8YGnTczM\nMps4cTJbt27d7blnntnAmDFjG9ank7eZWUbTpx9DRLB06T27nlux4jccfPChDevTydvMrI8Re4zj\n0M2bdvs3Yo9xA24/ceJkDjvs1Vx22UfYuHEDt9xyHcuX/5rTT/9Ew2L0nLeZWR8DXZgczJVX3sLf\n//1JvP71L2PMmLGcc85nmDnz+AZEl3DyNjPLwT77HMCtty4rrD9Pm5iZlZCTt5lZCTl5m5mVkJO3\nmVkJOXmbmZWQk7eZWQk5eZuZlZCTt5lZCTl5m5mVkJO3mVkOPve5D3Pssftw2GEjeO97Zza8v8zJ\nW9L+kn4m6SFJPZLOzSMwM7MymTLlYM4++5846qhjC+kvj5H3duC8iDgceD3wEUmvyqFdM7Om2bJl\nCxdf/CE2b95U0/Znn30hZ555PhMnTm5wZInMyTsi1kbE0vTxc8ByYErWds3Mmum73/0q8+d3c9VV\n/9bsUPqV65y3pIOB6cB9ebZrZlakLVu2cM01NzJy5AXccMMPah59Fym35C1pHHAz8PF0BG5mVkrf\n/e5X2bRpKmPHns2WLUe15Og7l/t5SxpJkrivi4j5/W3T09NNT0/3ruWurll0dc3Ko3szs9z0jroj\nPsy2bYuJmMUNN8zlrLPOZ48+X0rcTHl9GcNVwLKI+MpAGzhZm1kZrFu3lkmTXsKYMdcC1wLQ2TmJ\ntWsf55BDpg2437ZtW9my5QV27tzBjh072Lz5OUaN6mTUqM4B98kic/KWdAzwfqBH0hIggM9ExG1Z\n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\nZ9fyrK4uZnV11RFqueRx+9JqbdRSoletjVpK4ya//e2MrljeAmy45Zaa+6gl1lriqNZGESWLLiW0\nVlE1eUfEiXl01O7Juq88bl9atY0aSvSqtVFLadxoYG3F8j71xllDrDWV6FU73gJKFl1KaK0iz2mT\n/O8SZGZm/cpaKvgOSSuBo4FbJf04n7DMzGwwmUoFI+KHwA9ziqWt5HH70qpt1FCiV62NWkrjtrD7\nVMmWeuOsIdaaSvSqHW8BJYsuJbRW4VvCmpm1MpcKmpm1D9+YaojKUjJWLc4ivpG9ljjMrD5O3kNU\nlpKxanEW8Y3stcRhZvXxtImZWQk5eZuZlZCnTYaoLCVj1eIs4hvZa4nDzOrjUkEzs1bmUkEzs/bh\n5G1mVkJO3mZmJeTkbWZWQk7eZmYl5ORtZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZWQk7eZmYl5ORt\nZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZWQk7eZmYl5ORtZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZW\nQk7eZmYllCl5S5orabmkpZK+L2lCXoGZmdnAso68FwKHR8R04BHg09lDMjOzajIl74j4SUTsTBfv\nBfbPHpKZmVWT55z3WcCPc2zPzMwGMLLaBpLuAPaufAoI4KKIWJBucxGwLSKub0iUZma2m6rJOyJO\nHGy9pA8CJwPHD7Zdd08P3T09u5ZndXUxq6urtijNzGw3VZP3YCTNBs4H3hQRWwbb1snazCw/Wee8\nrwDGAXdIWizpyhxiMjOzKjKNvCPiL/MKxMzMaudPWJqZlZCTt5lZCTl5m5mVkJO3mVkJOXmbmZWQ\nIqKovgrryMysjai/Jz3yNjMrISdvM7MScvI2MyshJ28zsxJy8jYzKyEn70F0d3c3O4SGaMfjasdj\nAh9X2RR5XE7eg/APWHm04zGBj6tsnLzNzGxQTt5mZiVU5CcsS0fSrIjobnYceWvH42rHYwIfV9kU\neVxO3mZmJeRpEzOzEnLyNjMrISfvKiTNlbRc0lJJ35c0odkxZSXp3ZJ+I2mHpNc2O56sJM2W9LCk\nFZIubHY8eZA0T9KTkn7d7FjyJGl/ST+T9JCkHknnNjumPEgaLek+SUvS47qk0X06eVe3EDg8IqYD\njwCfbnI8eegB3gn8vNmBZCWpA/gacBJwOPA+Sa9qblS5uJrkmNrNduC8iDgceD3wkXZ4vSJiC/Dm\niDgCmA78taQZjezTybuKiPhJROxMF+8F9m9mPHmIiN9GxCMMcJ/gkpkBPBIRj0fENuBG4JQmx5RZ\nRNwFbGh2HHmLiLURsTR9/BywHJjS3KjyERGb04ejgZE0+DsMnLzrcxbw42YHYbuZAqysWH6CNkkG\n7U7SwSSj1PuaG0k+JHVIWgKsBe6IiAca2d/IRjZeFpLuAPaufIrkr+ZFEbEg3eYiYFtEXN+EEOtW\nyzGZNYukccDNwMfTEXjppe/Qj0ivi/1Q0rSIWNao/py8gYg4cbD1kj4InAwcX0hAOah2TG1kFXBg\nxfL+6XPWoiSNJEnc10XE/GbHk7eIeEbSncBsoGHJ29MmVUiaDZwPvD29KNFuyj7v/QBwqKSDJHUC\n7wVuaXJMeRHlf336cxWwLCK+0uxA8iLppZImpo/HAicCDzeyTyfv6q4AxgF3SFos6cpmB5SVpHdI\nWgkcDdwqqbTz+BGxA/goSVXQQ8CNEbG8uVFlJ+l64JfAVEl/lHRms2PKg6RjgPcDx6dldYvTAVLZ\n7QvcKWkpyRz+7RHxo0Z26I/Hm5mVkEfeZmYl5ORtZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZWQk7e\nZmYl5ORtZlZC/x/Th7LXU7AHPgAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" + "ename": "ImportError", + "evalue": "No module named 'mlxtend.classifier.base'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mmlxtend\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0miris_data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mmlxtend\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mplot_decision_regions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mmlxtend\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclassifier\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mAdaline\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpyplot\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/Sebastian/Dropbox/_ot/code/mlxtend/mlxtend/classifier/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;31m# License: BSD 3 clause\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mperceptron\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPerceptron\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0madaline\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mAdaline\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mlogistic_regression\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mLogisticRegression\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;32m/Users/Sebastian/Dropbox/_ot/code/mlxtend/mlxtend/classifier/perceptron.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtime\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mbase\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0m_BaseClassifier\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mImportError\u001b[0m: No module named 'mlxtend.classifier.base'" + ] } ], "source": [ diff --git a/mlxtend/_base/__init__.py b/mlxtend/_base/__init__.py new file mode 100644 index 000000000..bce7b0e94 --- /dev/null +++ b/mlxtend/_base/__init__.py @@ -0,0 +1,19 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +from ._base_estimator import _BaseEstimator +from ._base_supervised_estimator import _BaseSupervisedEstimator +from ._base_unsupervised_estimator import _BaseUnsupervisedEstimator +from ._base_classifier import _BaseClassifier +from ._base_multiclass import _BaseMultiClass +from ._base_multilayer import _BaseMultiLayer +from ._base_regressor import _BaseRegressor +from ._base_cluster import _BaseCluster + +__all__ = ["_BaseEstimator", + "_BaseSupervisedEstimator", "_BaseUnsupervisedEstimator", + "_BaseClassifier", "_BaseMultiClass", "_BaseMultiLayer", + "_BaseRegressor", "_BaseCluster"] diff --git a/mlxtend/_base/_base_classifier.py b/mlxtend/_base/_base_classifier.py new file mode 100644 index 000000000..c63d90332 --- /dev/null +++ b/mlxtend/_base/_base_classifier.py @@ -0,0 +1,62 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# +# Base Clusteer (Clutering Parent Class) +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +import numpy as np +from sys import stderr +from time import time +from ._base_supervised_estimator import _BaseSupervisedEstimator + + +class _BaseClassifier(_BaseSupervisedEstimator): + + """Parent Class Classifier + + A base class that is implemented by classifiers + + """ + def __init__(self, print_progress=0, random_seed=0): + super(_BaseClassifier, self).__init__( + print_progress=print_progress, + random_seed=random_seed) + self._binary_classifier = False + + def _check_target_array(self, y, allowed=None): + if not np.issubdtype(y[0], int): + raise AttributeError('y must be an integer array.\nFound %s' + % y.dtype) + found_labels = np.unique(y) + if (found_labels < 0).any(): + raise AttributeError('y array must not contain negative labels.' + '\nFound %s' % found_labels) + if allowed is not None: + found_labels = tuple(found_labels) + if found_labels not in allowed: + raise AttributeError('Labels not in %s.\nFound %s' + % (allowed, found_labels)) + + def score(self, X, y): + """ Compute the prediction accuracy + + Parameters + ---------- + X : {array-like, sparse matrix}, shape = [n_samples, n_features] + Training vectors, where n_samples is the number of samples and + n_features is the number of features. + y : array-like, shape = [n_samples] + Target values (true class labels). + + Returns + --------- + acc : float + The prediction accuracy as a float + between 0.0 and 1.0 (perfect score). + + """ + y_pred = self.predict(X) + acc = np.sum(y == y_pred, axis=0) / float(X.shape[0]) + return acc diff --git a/mlxtend/_base/_base_cluster.py b/mlxtend/_base/_base_cluster.py new file mode 100644 index 000000000..bd0f86b23 --- /dev/null +++ b/mlxtend/_base/_base_cluster.py @@ -0,0 +1,25 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# +# Base Clusteer (Clutering Parent Class) +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +import numpy as np +from sys import stderr +from time import time +from ._base_unsupervised_estimator import _BaseUnsupervisedEstimator + + +class _BaseCluster(_BaseUnsupervisedEstimator): + + """Parent Class Unsupervised Estimator + + A base class that is implemented by clustering estimators + + """ + def __init__(self, print_progress=0, random_seed=0): + super(_BaseCluster, self).__init__( + print_progress=print_progress, + random_seed=random_seed) diff --git a/mlxtend/tf_regressor/tf_base.py b/mlxtend/_base/_base_estimator.py similarity index 53% rename from mlxtend/tf_regressor/tf_base.py rename to mlxtend/_base/_base_estimator.py index efd173306..047fe214d 100644 --- a/mlxtend/tf_regressor/tf_base.py +++ b/mlxtend/_base/_base_estimator.py @@ -1,7 +1,7 @@ # Sebastian Raschka 2014-2016 # mlxtend Machine Learning Library Extensions # -# Base Regressor (Regressor Parent Class) +# Base Clusteer (Clutering Parent Class) # Author: Sebastian Raschka # # License: BSD 3 clause @@ -11,21 +11,29 @@ from time import time -class _TfBaseRegressor(object): +class _BaseEstimator(object): - """Parent Class Base Regressor + """Parent Class Estimator A base class that is implemented by - regressor child classes. + classifiers, regressors, and clustering estimators. """ - def __init__(self, print_progress=0, random_seed=None): + def __init__(self, print_progress=0, + random_seed=None): self.print_progress = print_progress self.random_seed = random_seed + if self.random_seed is not None: + np.random.seed(self.random_seed) self._is_fitted = False + self._allowed_labels = None + + def _fit(self, X, y=None, init_params=True): + # Implemented in child class + pass - def fit(self, X, y, init_weights=True): - """Learn weight coefficients from training data. + def fit(self, X, y=None, init_params=True): + """Learn model from training data. Parameters ---------- @@ -34,8 +42,10 @@ def fit(self, X, y, init_weights=True): n_features is the number of features. y : array-like, shape = [n_samples] Target values. - init_weights : bool (default: True) - Reinitialize weights + init_params : bool (default: True) + Re-initializes model parametersprior to fitting. + Set False to continue training with weights from + a previous model fitting. Returns ------- @@ -43,21 +53,17 @@ def fit(self, X, y, init_weights=True): """ self._is_fitted = False - if not (init_weights is None or isinstance(init_weights, bool)): - raise AttributeError("init_weights must be True or False") self._check_arrays(X=X, y=y) if self.random_seed is not None: np.random.seed(self.random_seed) - self._fit(X=X, y=y, init_weights=init_weights) + if init_params: + self._init_params + self._fit(X=X, y=y) self._is_fitted = True return self - def _fit(self, X, y, init_weights=True): - # Implemented in child class - pass - def predict(self, X): - """Predict class labels of X. + """Predict targets from X. Parameters ---------- @@ -67,11 +73,11 @@ def predict(self, X): Returns ---------- - class_labels : array-like, shape = [n_samples] - Predicted class labels. + target_values : array-like, shape = [n_samples] + Predicted target values. """ - self._check_arrays(X) + self._check_arrays(X=X) if not self._is_fitted: raise AttributeError('Model is not fitted, yet.') return self._predict(X) @@ -80,29 +86,34 @@ def _predict(self, X): # Implemented in child class pass - def _shuffle(self, arrays): + def _init_params(self): + # Implemented in child class + pass + + def _shuffle_arrays(self, arrays): """Shuffle arrays in unison.""" r = np.random.permutation(len(arrays[0])) return [ary[r] for ary in arrays] - def _print_progress(self, epoch, cost=None, time_interval=10): + def _print_progress(self, iteration, n_iter, + cost=None, time_interval=10): if self.print_progress > 0: - s = '\rEpoch: %d/%d' % (epoch, self.epochs) + s = '\rIteration: %d/%d' % (iteration, n_iter) if cost: s += ' | Cost %.2f' % cost if self.print_progress > 1: if not hasattr(self, 'ela_str_'): self.ela_str_ = '00:00:00' - if not epoch % time_interval: + if not iteration % time_interval: ela_sec = time() - self.init_time_ self.ela_str_ = self._to_hhmmss(ela_sec) s += ' | Elapsed: %s' % self.ela_str_ if self.print_progress > 2: if not hasattr(self, 'eta_str_'): self.eta_str_ = '00:00:00' - if not epoch % time_interval: - eta_sec = ((ela_sec / float(epoch)) * - self.epochs - ela_sec) + if not iteration % time_interval: + eta_sec = ((ela_sec / float(iteration)) * + n_iter - ela_sec) self.eta_str_ = self._to_hhmmss(eta_sec) s += ' | ETA: %s' % self.eta_str_ stderr.write(s) @@ -122,12 +133,39 @@ def _check_arrays(self, X, y=None): if y is None: return except(AttributeError): - pass - else: - if not isinstance(y, np.ndarray): - raise ValueError('y must be a numpy array.') if not len(y.shape) == 1: - raise ValueError('y must be a 1D numpy array.') + raise ValueError('y must be a 1D array.') if not len(y) == X.shape[0]: raise ValueError('X and y must contain the same number of samples') + + def _init_params(self, weights_shape, bias_shape=(1,), dtype='float64', + scale=0.01, random_seed=None): + """Initialize weight coefficients.""" + if random_seed: + np.random.seed(random_seed) + w = np.random.normal(loc=0.0, scale=scale, size=weights_shape) + b = np.zeros(shape=bias_shape) + return b.astype(dtype), w.astype(dtype) + + def _yield_minibatches_idx(self, n_batches, data_ary, shuffle=True): + indices = np.arange(data_ary.shape[0]) + + if shuffle: + indices = np.random.permutation(indices) + if n_batches > 1: + remainder = data_ary.shape[0] % n_batches + + if remainder: + minis = np.array_split(indices[:-remainder], n_batches) + minis[-1] = np.concatenate((minis[-1], + indices[-remainder:]), + axis=0) + else: + minis = np.array_split(indices, n_batches) + + else: + minis = (indices,) + + for idx_batch in minis: + yield idx_batch diff --git a/mlxtend/_base/_base_multiclass.py b/mlxtend/_base/_base_multiclass.py new file mode 100644 index 000000000..07a69ae63 --- /dev/null +++ b/mlxtend/_base/_base_multiclass.py @@ -0,0 +1,40 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# +# Base Clusteer (Clutering Parent Class) +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +import numpy as np + + +class _BaseMultiClass(object): + """Add-on Parent Class for Multi-class classifier""" + + def __init__(self): + pass + + def _one_hot(self, y, n_labels, dtype): + """Returns a matrix where each sample in y is represented + as a row, and each column represents the class label in + the one-hot encoding scheme. + + Example: + + y = np.array([0, 1, 2, 3, 4, 2]) + mc = _BaseMultiClass() + mc._one_hot(y=y, n_labels=5, dtype='float') + + np.array([[1., 0., 0., 0., 0.], + [0., 1., 0., 0., 0.], + [0., 0., 1., 0., 0.], + [0., 0., 0., 1., 0.], + [0., 0., 0., 0., 1.], + [0., 0., 1., 0., 0.]]) + + """ + mat = np.zeros((len(y), n_labels)) + for i, val in enumerate(y): + mat[i, val] = 1 + return mat.astype(dtype) diff --git a/mlxtend/_base/_base_multilayer.py b/mlxtend/_base/_base_multilayer.py new file mode 100644 index 000000000..e32749577 --- /dev/null +++ b/mlxtend/_base/_base_multilayer.py @@ -0,0 +1,62 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# +# Base Clusteer (Clutering Parent Class) +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +import numpy as np + + +class _BaseMultiLayer(object): + """Add-on Parent Class for Multi-layer classifiers""" + + def __init__(self): + pass + + def _layermapping(self, n_features, n_classes, hidden_layers): + """Creates a dictionaries of layer dimensions for weights and biases. + + For example, given + `n_features=10`, `n_classes=10`, and `hidden_layers=[8, 7, 6]`: + + biases = + {1: [[8], 'n_hidden_1'], + 2: [[7], 'n_hidden_2'], + 3: [[6], 'n_hidden_3'], + 'out': [[10], 'n_classes'] + } + + weights = + {1: [[10, 8], 'n_features, n_hidden_1'], + 2: [[8, 7], 'n_hidden_1, n_hidden_2'], + 3: [[7, 6], 'n_hidden_2, n_hidden_3'], + 'out': [[6, 10], 'n_hidden_3, n_classes'] + } + + """ + weights = {1: [[n_features, hidden_layers[0]], + 'n_features, n_hidden_1'], + 'out': [[hidden_layers[-1], n_classes], + 'n_hidden_%d, n_classes' % len(hidden_layers)]} + biases = {1: [[hidden_layers[0]], 'n_hidden_1'], + 'out': [[n_classes], 'n_classes']} + + if len(hidden_layers) > 1: + for i, h in enumerate(hidden_layers[1:]): + layer = i + 2 + weights[layer] = [[weights[layer - 1][0][1], h], + 'n_hidden_%d, n_hidden_%d' % (layer - + 1, layer)] + biases[layer] = [[h], 'n_hidden_%d' % layer] + return weights, biases + + def _init_params_from_layermapping(self, weight_maps, bias_maps): + weights, biases = {}, {} + for i, k in enumerate(zip(weight_maps, bias_maps)): + weights[k[0]] = np.random.normal(loc=0.0, + scale=0.01, + size=weight_maps[k[0]][0]) + biases[k[1]] = np.zeros(shape=bias_maps[k[1]][0]) + return weights, biases diff --git a/mlxtend/_base/_base_regressor.py b/mlxtend/_base/_base_regressor.py new file mode 100644 index 000000000..735d88c74 --- /dev/null +++ b/mlxtend/_base/_base_regressor.py @@ -0,0 +1,30 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# +# Base Clusteer (Clutering Parent Class) +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +import numpy as np +from sys import stderr +from time import time +from ._base_supervised_estimator import _BaseSupervisedEstimator + + +class _BaseRegressor(_BaseSupervisedEstimator): + + """Parent Class Classifier + + A base class that is implemented by regressors + + """ + def __init__(self, print_progress=0, random_seed=0): + super(_BaseRegressor, self).__init__( + print_progress=print_progress, + random_seed=random_seed) + + def _check_target_array(self, y, allowed=None): + if not np.issubdtype(y[0], float): + raise AttributeError('y must be a float array.\nFound %s' + % y.dtype) diff --git a/mlxtend/_base/_base_supervised_estimator.py b/mlxtend/_base/_base_supervised_estimator.py new file mode 100644 index 000000000..5d4cadf3d --- /dev/null +++ b/mlxtend/_base/_base_supervised_estimator.py @@ -0,0 +1,59 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# +# Base Clusteer (Clutering Parent Class) +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +import numpy as np +from sys import stderr +from time import time +from ._base_estimator import _BaseEstimator + + +class _BaseSupervisedEstimator(_BaseEstimator): + + """Parent Class Supervised Estimator + + A base class that is implemented by + classifiers and regressors + + """ + def __init__(self, print_progress=0, random_seed=0): + super(_BaseSupervisedEstimator, self).__init__( + print_progress=print_progress, + random_seed=random_seed) + + def fit(self, X, y, init_params=True): + """Learn model from training data. + + Parameters + ---------- + X : {array-like, sparse matrix}, shape = [n_samples, n_features] + Training vectors, where n_samples is the number of samples and + n_features is the number of features. + y : array-like, shape = [n_samples] + Target values. + init_params : bool (default: True) + Re-initializes model parametersprior to fitting. + Set False to continue training with weights from + a previous model fitting. + + Returns + ------- + self : object + + """ + self._is_fitted = False + self._check_arrays(X=X, y=y) + self._check_target_array(y) + if self.random_seed is not None: + np.random.seed(self.random_seed) + self._fit(X=X, y=y, init_params=init_params) + self._is_fitted = True + return self + + def _check_target_array(self, y): + # implemented by child class + pass diff --git a/mlxtend/_base/_base_unsupervised_estimator.py b/mlxtend/_base/_base_unsupervised_estimator.py new file mode 100644 index 000000000..9676c40fb --- /dev/null +++ b/mlxtend/_base/_base_unsupervised_estimator.py @@ -0,0 +1,52 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# +# Base Clusteer (Clutering Parent Class) +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +import numpy as np +from sys import stderr +from time import time +from ._base_estimator import _BaseEstimator + + +class _BaseUnsupervisedEstimator(_BaseEstimator): + + """Parent Class Supervised Estimator + + A base class that is implemented by + classifiers and regressors + + """ + def __init__(self, print_progress=0, random_seed=0): + super(_BaseUnsupervisedEstimator, self).__init__( + print_progress=print_progress, + random_seed=random_seed) + + def fit(self, X, init_params=True): + """Learn model from training data. + + Parameters + ---------- + X : {array-like, sparse matrix}, shape = [n_samples, n_features] + Training vectors, where n_samples is the number of samples and + n_features is the number of features. + init_params : bool (default: True) + Re-initializes model parametersprior to fitting. + Set False to continue training with weights from + a previous model fitting. + + Returns + ------- + self : object + + """ + self._is_fitted = False + self._check_arrays(X=X) + if self.random_seed is not None: + np.random.seed(self.random_seed) + self._fit(X=X, init_params=init_params) + self._is_fitted = True + return self diff --git a/mlxtend/_base/tests/test_base_classifier.py b/mlxtend/_base/tests/test_base_classifier.py new file mode 100644 index 000000000..97d779414 --- /dev/null +++ b/mlxtend/_base/tests/test_base_classifier.py @@ -0,0 +1,53 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +from mlxtend._base import _BaseClassifier +import numpy as np +from mlxtend.utils import assert_raises + + +def test_init(): + cl = _BaseClassifier(print_progress=0, random_seed=1) + + +def test_check_labels_ok_1(): + y = np.array([1, 1, 0]) + cl = _BaseClassifier(print_progress=0, random_seed=1) + cl._check_target_array(y=y, allowed={(0, 1)}) + + +def test_check_labels_ok_2(): + y = np.array([1, 2, 2]) + cl = _BaseClassifier(print_progress=0, random_seed=1) + cl._check_target_array(y=y, allowed={(1, 2), (0, 1)}) + + +def test_check_labels_not_ok_1(): + y = np.array([1, 3, 2]) + cl = _BaseClassifier(print_progress=0, random_seed=1) + assert_raises(AttributeError, + 'Labels not in {(1, 2), (0, 1)}.\nFound (1, 2, 3)', + cl._check_target_array, + y, + {(0, 1), (1, 2)}) + + +def test_check_labels_interger_notok(): + y = np.array([1., 2.], dtype=np.float64) + cl = _BaseClassifier(print_progress=0, random_seed=1) + assert_raises(AttributeError, + 'y must be an integer array.\nFound float64', + cl._check_target_array, + y) + + +def test_check_labels_positive_notok(): + y = np.array([1, 1, -1]) + cl = _BaseClassifier(print_progress=0, random_seed=1) + assert_raises(AttributeError, + 'y array must not contain negative labels.\nFound [-1 1]', + cl._check_target_array, + y) diff --git a/mlxtend/_base/tests/test_base_cluster.py b/mlxtend/_base/tests/test_base_cluster.py new file mode 100644 index 000000000..3cb47029f --- /dev/null +++ b/mlxtend/_base/tests/test_base_cluster.py @@ -0,0 +1,13 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +from mlxtend._base import _BaseCluster +import numpy as np +from mlxtend.utils import assert_raises + + +def test_init(): + cl = _BaseCluster(print_progress=0, random_seed=1) diff --git a/mlxtend/_base/tests/test_base_estimator.py b/mlxtend/_base/tests/test_base_estimator.py new file mode 100644 index 000000000..6f7c316af --- /dev/null +++ b/mlxtend/_base/tests/test_base_estimator.py @@ -0,0 +1,125 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +from mlxtend._base import _BaseEstimator +import numpy as np +from mlxtend.utils import assert_raises + + +def test_init(): + est = _BaseEstimator(print_progress=0, random_seed=1) + + +def test_check_array_1(): + X = np.array([1, 2, 3]) + est = _BaseEstimator(print_progress=0, random_seed=1) + assert_raises(ValueError, + 'X must be a 2D array. Try X[:, numpy.newaxis]', + est._check_arrays, + X) + + +def test_check_array_2(): + X = list([[1], [2], [3]]) + est = _BaseEstimator(print_progress=0, random_seed=1) + + assert_raises(ValueError, + 'X must be a numpy array', + est._check_arrays, + X) + + +def test_check_array_3(): + X = np.array([[1], [2], [3]]) + est = _BaseEstimator(print_progress=0, random_seed=1) + est._check_arrays(X) + + +def test_fit(): + X = np.array([[1], [2], [3]]) + est = _BaseEstimator(print_progress=0, random_seed=1) + est._fit(X) + + +def test_predict_1(): + X = np.array([[1], [2], [3]]) + est = _BaseEstimator(print_progress=0, random_seed=1) + + assert_raises(AttributeError, + 'Model is not fitted, yet.', + est.predict, + X) + + +def test_predict_2(): + X = np.array([[1], [2], [3]]) + est = _BaseEstimator(print_progress=0, random_seed=1) + + est.fit(X) + est.predict(X) + + +def test_shuffle(): + X = np.array([[1], [2], [3]]) + y = np.array([1, 2, 3]) + est = _BaseEstimator(print_progress=0, random_seed=1) + X_sh, y_sh = est._shuffle_arrays(arrays=[X, np.array(y)]) + np.testing.assert_equal(X_sh, np.array([[1], [3], [2]])) + np.testing.assert_equal(y_sh, np.array([1, 3, 2])) + + +def test_init_params(): + est = _BaseEstimator(print_progress=0, random_seed=1) + b, w = est._init_params(weights_shape=(3, 3), + bias_shape=(1,), + random_seed=0) + assert b == np.array([0.0]), b + + expect_w = np.array([[0.016, -0.006, -0.005], + [-0.011, 0.009, -0.023], + [0.017, -0.008, 0.003]]) + np.testing.assert_almost_equal(w, expect_w, decimal=3) + + +def test_minibatches_divisible(): + ary = np.array([1, 2, 3, 4, 5, 6, 7, 8]) + est = _BaseEstimator(print_progress=0, random_seed=1) + gen_arys = est._yield_minibatches_idx(n_batches=2, data_ary=ary) + arys = list(gen_arys) + + assert (arys[0] == np.array([7, 2, 1, 6])).all() + assert (arys[1] == np.array([0, 4, 3, 5])).all() + + +def test_minibatches_remainder(): + ary = np.array([1, 2, 3, 4, 5, 6, 7]) + est = _BaseEstimator(print_progress=0, random_seed=1) + gen_arys = est._yield_minibatches_idx(n_batches=2, data_ary=ary) + arys = list(gen_arys) + + assert len(arys) == 2 + assert (arys[0] == np.array([6, 2, 1])).all() + assert (arys[1] == np.array([0, 4, 3, 5])).all() + + +def test_minibatch_1sample(): + ary = np.array([1, 2, 3, 4, 5, 6, 7]) + est = _BaseEstimator(print_progress=0, random_seed=1) + gen_arys = est._yield_minibatches_idx(n_batches=7, data_ary=ary) + arys = list(gen_arys) + + assert len(arys) == 7 + assert arys[0] == np.array([6]) + + +def test_minibatch_allsample(): + ary = np.array([1, 2, 3, 4, 5, 6, 7]) + est = _BaseEstimator(print_progress=0, random_seed=1) + gen_arys = est._yield_minibatches_idx(n_batches=1, + data_ary=ary, + shuffle=False) + arys = list(gen_arys)[0] + assert (arys == np.array([0, 1, 2, 3, 4, 5, 6])).all() diff --git a/mlxtend/_base/tests/test_base_multiclass.py b/mlxtend/_base/tests/test_base_multiclass.py new file mode 100644 index 000000000..341851a2c --- /dev/null +++ b/mlxtend/_base/tests/test_base_multiclass.py @@ -0,0 +1,49 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +from mlxtend._base import _BaseMultiClass +import numpy as np +from mlxtend.utils import assert_raises + + +def test_default(): + y = np.array([0, 1, 2, 3, 4, 2]) + mc = _BaseMultiClass() + expect = np.array([[1., 0., 0., 0., 0.], + [0., 1., 0., 0., 0.], + [0., 0., 1., 0., 0.], + [0., 0., 0., 1., 0.], + [0., 0., 0., 0., 1.], + [0., 0., 1., 0., 0.]], dtype='float') + out = mc._one_hot(y=y, n_labels=5, dtype='float') + np.testing.assert_array_equal(expect, out) + + +def test_oneclass(): + y = np.array([0, 0, 0]) + mc = _BaseMultiClass() + out = mc._one_hot(y=y, n_labels=1, dtype='float') + expect = np.array([[1.], [1.], [1.]]) + np.testing.assert_array_equal(expect, out) + + +def test_morelabels(): + y = np.array([0, 0, 1]) + mc = _BaseMultiClass() + out = mc._one_hot(y=y, n_labels=4, dtype='float') + expect = np.array([[1., 0., 0., 0.], + [1., 0., 0., 0.], + [0., 1., 0., 0.]]) + np.testing.assert_array_equal(expect, out) + +""" +def test_list_morelabels(): + y = [0, 1] + expect = np.array([[1., 0., 0.], + [0., 1., 0.]], dtype='float') + out = one_hot(y, num_labels=3) + np.testing.assert_array_equal(expect, out) +""" diff --git a/mlxtend/_base/tests/test_base_multilayer.py b/mlxtend/_base/tests/test_base_multilayer.py new file mode 100644 index 000000000..d55871900 --- /dev/null +++ b/mlxtend/_base/tests/test_base_multilayer.py @@ -0,0 +1,64 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +import numpy as np +from mlxtend._base import _BaseMultiLayer + + +def test_layermapping(): + mlp = _BaseMultiLayer() + w, b = mlp._layermapping(n_features=10, + n_classes=11, + hidden_layers=[8, 7, 6]) + + expect_b = {1: [[8], 'n_hidden_1'], + 2: [[7], 'n_hidden_2'], + 3: [[6], 'n_hidden_3'], + 'out': [[11], 'n_classes']} + + expect_w = {1: [[10, 8], 'n_features, n_hidden_1'], + 2: [[8, 7], 'n_hidden_1, n_hidden_2'], + 3: [[7, 6], 'n_hidden_2, n_hidden_3'], + 'out': [[6, 11], 'n_hidden_3, n_classes']} + + assert expect_b == b, b + assert expect_w == w, w + + +def test_init_from_layermapping(): + mlp = _BaseMultiLayer() + wm, bm = mlp._layermapping(n_features=5, + n_classes=4, + hidden_layers=[3, 2]) + w, b = mlp._init_params_from_layermapping(weight_maps=wm, bias_maps=bm) + + expect_w = {1: np.array([[0.016, -0.006, -0.005], + [-0.011, 0.009, -0.023], + [0.017, -0.008, 0.003], + [-0.002, 0.015, -0.021], + [-0.003, -0.004, 0.011]]), + 2: np.array([[-0.011, -0.002], + [-0.009, 0.000], + [0.006, -0.011]]), + 'out': np.array([[0.011, 0.009, 0.005, 0.009], + [-0.007, -0.001, -0.009, -0.003]])} + + expect_b = {1: np.array([0., 0., 0.]), + 2: np.array([0., 0.]), + 'out': np.array([0., 0., 0., 0.])} + + assert len(w.keys()) == 3 + assert len(b.keys()) == 3 + assert set(w.keys()) == set([1, 2, 'out']) + assert set(b.keys()) == set([1, 2, 'out']) + + assert w[1].shape == (5, 3) + assert w[2].shape == (3, 2) + assert w['out'].shape == (2, 4) + + assert b[1].shape == (3,) + assert b[2].shape == (2,) + assert b['out'].shape == (4,) diff --git a/mlxtend/_base/tests/test_base_regressor.py b/mlxtend/_base/tests/test_base_regressor.py new file mode 100644 index 000000000..5b641cd6b --- /dev/null +++ b/mlxtend/_base/tests/test_base_regressor.py @@ -0,0 +1,28 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +from mlxtend._base import _BaseRegressor +import numpy as np +from mlxtend.utils import assert_raises + + +def test_init(): + reg = _BaseRegressor(print_progress=0, random_seed=1) + + +def test_float_ok(): + y = np.array([1., 2.]) + reg = _BaseRegressor(print_progress=0, random_seed=1) + reg._check_target_array(y=y) + + +def test_float_fail(): + y = np.array([1, 2], dtype=np.int64) + reg = _BaseRegressor(print_progress=0, random_seed=1) + assert_raises(AttributeError, + 'y must be a float array.\nFound int64', + reg._check_target_array, + y) diff --git a/mlxtend/_base/tests/test_base_supervised_estimator.py b/mlxtend/_base/tests/test_base_supervised_estimator.py new file mode 100644 index 000000000..7a9a16f5e --- /dev/null +++ b/mlxtend/_base/tests/test_base_supervised_estimator.py @@ -0,0 +1,35 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +from mlxtend._base import _BaseSupervisedEstimator +import numpy as np +from mlxtend.utils import assert_raises + + +def test_init(): + est = _BaseSupervisedEstimator(print_progress=0, random_seed=1) + + +def test_fit_1(): + X = np.array([[1], [2], [3]]) + est = _BaseSupervisedEstimator(print_progress=0, random_seed=1) + assert_raises(TypeError, + "fit() missing 1 required positional argument: 'y'", + est.fit, + X) + + +def test_fit_2(): + X = np.array([[1], [2], [3]]) + y = np.array([1, 2, 3]) + est = _BaseSupervisedEstimator(print_progress=0, random_seed=1) + est.fit(X=X, y=y) + + +def test_check_target_array(): + y = np.array([1, 2, 3]) + est = _BaseSupervisedEstimator(print_progress=0, random_seed=1) + est._check_target_array(y) diff --git a/mlxtend/_base/tests/test_base_unsupervised_estimator.py b/mlxtend/_base/tests/test_base_unsupervised_estimator.py new file mode 100644 index 000000000..145dccc52 --- /dev/null +++ b/mlxtend/_base/tests/test_base_unsupervised_estimator.py @@ -0,0 +1,20 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +from mlxtend._base import _BaseUnsupervisedEstimator +import numpy as np +from mlxtend.utils import assert_raises + + +def test_init(): + est = _BaseUnsupervisedEstimator(print_progress=0, random_seed=1) + + +def test_fit(): + X = np.array([[1], [2], [3]]) + y = np.array([1, 2, 3]) + est = _BaseUnsupervisedEstimator(print_progress=0, random_seed=1) + est.fit(X=X) diff --git a/mlxtend/classifier/__init__.py b/mlxtend/classifier/__init__.py index a7eb7ef57..d9cdb5116 100644 --- a/mlxtend/classifier/__init__.py +++ b/mlxtend/classifier/__init__.py @@ -8,11 +8,11 @@ from .adaline import Adaline from .logistic_regression import LogisticRegression from .softmax_regression import SoftmaxRegression -from .neuralnet_mlp import NeuralNetMLP +from .multilayerperceptron import MultiLayerPerceptron from .ensemble_vote import EnsembleVoteClassifier from .stacking_classification import StackingClassifier __all__ = ["Perceptron", "Adaline", "LogisticRegression", "SoftmaxRegression", - "NeuralNetMLP", + "MultiLayerPerceptron", "EnsembleVoteClassifier", "StackingClassifier"] diff --git a/mlxtend/classifier/adaline.py b/mlxtend/classifier/adaline.py index 2f471134c..53ab206cc 100644 --- a/mlxtend/classifier/adaline.py +++ b/mlxtend/classifier/adaline.py @@ -8,32 +8,32 @@ import numpy as np from time import time -from .base import _BaseClassifier +from .._base import _BaseClassifier class Adaline(_BaseClassifier): """ADAptive LInear NEuron classifier. + Note that this implementation of Adaline expects binary class labels + in {0, 1}. + Parameters ------------ eta : float (default: 0.01) solver rate (between 0.0 and 1.0) epochs : int (default: 50) Passes over the training dataset. + Prior to each epoch, the dataset is shuffled + if `minibatches > 1` to prevent cycles in stochastic gradient descent. minibatches : int (default: None) The number of minibatches for gradient-based optimization. If None: Normal Equations (closed-form solution) If 1: Gradient Descent learning - If len(y): Stochastic Gradient Descent learning - If 1 < minibatches < len(y): Minibatch learning + If len(y): Stochastic Gradient Descent (SGD) online learning + If 1 < minibatches < len(y): SGD Minibatch learning random_seed : int (default: None) Set random state for shuffling and initializing the weights. - zero_init_weight : bool (default: False) - If True, weights are initialized to zero instead of small random - numbers following a standard normal distribution with mean=0 and - stddev=1; - ignored if solver='normal equation' print_progress : int (default: 0) Prints progress in fitting to stderr if not solver='normal equation' 0: No output @@ -41,93 +41,62 @@ class Adaline(_BaseClassifier): 2: 1 plus time elapsed 3: 2 plus estimated time until completion - Attributes ----------- - w_ : 1d-array - Weights after fitting. + w_ : 2d-array, shape={n_features, 1} + Model weights after fitting. + b_ : 1d-array, shape={1,} + Bias unit after fitting. cost_ : list Sum of squared errors after each epoch. """ def __init__(self, eta=0.01, epochs=50, minibatches=None, random_seed=None, - zero_init_weight=False, print_progress=0): + print_progress=0): - super(Adaline, self).__init__(print_progress=print_progress) - self.random_seed = random_seed + super(Adaline, self).__init__(print_progress=0, + random_seed=random_seed) self.eta = eta self.minibatches = minibatches self.epochs = epochs - self.zero_init_weight = zero_init_weight - - def fit(self, X, y, init_weights=True): - """Learn weight coefficients from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values. - init_weights : bool (default: True) - Re-initializes weights prior to fitting. Set False to continue - training with weights from a previous fitting. - - Returns - ------- - self : object - - """ - self._check_arrays(X, y) - - # check if {0, 1} or {-1, 1} class labels are used - self.classes_ = np.unique(y) - if not len(self.classes_) == 2 \ - or not self.classes_[0] in (-1, 0) \ - or not self.classes_[1] == 1: - raise ValueError('Only supports binary class' - ' labels {0, 1} or {-1, 1}.') - if self.classes_[0] == -1: - self.thres_ = 0.0 - else: - self.thres_ = 0.5 - - if init_weights: - self.w_ = self._init_weights( - shape=1 + X.shape[1], - zero_init_weight=self.zero_init_weight, - seed=self.random_seed) - self.cost_ = [] + def _fit(self, X, y, init_params=True): + self._check_target_array(y, allowed={(0, 1)}) + y_data = np.where(y == 0, -1., 1.) - # random seed for shuffling - if self.random_seed: - np.random.seed(self.random_seed) + if init_params: + self.b_, self.w_ = self._init_params( + weights_shape=(X.shape[1], 1), + bias_shape=(1,), + random_seed=self.random_seed) + self.cost_ = [] if self.minibatches is None: - self.w_ = self._normal_equation(X, y) + self.b_, self.w_ = self._normal_equation(X, y_data) # Gradient descent or stochastic gradient descent learning else: - n_idx = list(range(y.shape[0])) - # skip shuffling if gradient descent - if self.minibatches > 1: - n_idx = np.random.permutation(n_idx) self.init_time_ = time() for i in range(self.epochs): - minis = np.array_split(n_idx, self.minibatches) - for idx in minis: - y_val = self._activation(X[idx]) - errors = (y[idx] - y_val) - self.w_[1:] += self.eta * X[idx].T.dot(errors) - self.w_[0] += self.eta * errors.sum() - - cost = self._sum_squared_error_cost(y, self._activation(X)) + + for idx in self._yield_minibatches_idx( + n_batches=self.minibatches, + data_ary=y_data, + shuffle=True): + + y_val = self._net_input(X[idx]) + errors = (y_data[idx] - y_val) + self.w_ += (self.eta * + X[idx].T.dot(errors).reshape(self.w_.shape)) + self.b_ += self.eta * errors.sum() + + cost = self._sum_squared_error_cost(y_data, self._net_input(X)) self.cost_.append(cost) if self.print_progress: - self._print_progress(epoch=i + 1, cost=cost) + self._print_progress(iteration=(i + 1), + n_iter=self.epochs, + cost=cost) return self @@ -140,17 +109,13 @@ def _normal_equation(self, X, y): Xb = np.hstack((np.ones((X.shape[0], 1)), X)) w = np.zeros(X.shape[1]) z = np.linalg.inv(np.dot(Xb.T, Xb)) - w = np.dot(z, np.dot(Xb.T, y)) - return w + params = np.dot(z, np.dot(Xb.T, y)) + b, w = np.array([params[0]]), params[1:].reshape(X.shape[1], 1) + return b, w def _net_input(self, X): """Compute the linear net input.""" - return np.dot(X, self.w_[1:]) + self.w_[0] - - def _activation(self, X): - """Compute the linear activation from the net input.""" - return self._net_input(X) + return (np.dot(X, self.w_) + self.b_).flatten() def _predict(self, X): - return np.where(self._net_input(X) >= self.thres_, - self.classes_[1], self.classes_[0]) + return np.where(self._net_input(X) < 0.0, 0, 1) diff --git a/mlxtend/classifier/base.py b/mlxtend/classifier/base.py deleted file mode 100644 index e488b8be1..000000000 --- a/mlxtend/classifier/base.py +++ /dev/null @@ -1,151 +0,0 @@ -# Sebastian Raschka 2014-2016 -# mlxtend Machine Learning Library Extensions -# -# Base Classifier (Classifier Parent Class) -# Author: Sebastian Raschka -# -# License: BSD 3 clause - -import numpy as np -from sys import stderr -from time import time - - -class _BaseClassifier(object): - - """Parent Class Base Classifier - - A base class that is important by - classifier child classes. - - """ - def __init__(self, print_progress=0): - self.print_progress = print_progress - - def fit(self, X, y, init_weights=True): - """Learn weight coefficients from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values. - init_weights : bool (default: None) - Reinitialize weights - - Returns - ------- - self : object - - """ - if not (init_weights is None or isinstance(init_weights, bool)): - raise AttributeError("init_weights must be True, False, or None") - init_weights - self._check_arrays(X=X, y=y) - return self - - def predict(self, X): - """Predict class labels of X. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - - Returns - ---------- - class_labels : array-like, shape = [n_samples] - Predicted class labels. - - """ - self._check_arrays(X) - return self._predict(X) - - def _predict(X, y): - # Implemented in child class - pass - - def _shuffle(self, arrays): - """Shuffle arrays in unison.""" - r = np.random.permutation(len(arrays[0])) - return [ary[r] for ary in arrays] - - def _print_progress(self, epoch, cost=None, time_interval=10): - if self.print_progress > 0: - s = '\rEpoch: %d/%d' % (epoch, self.epochs) - if cost: - s += ' | Cost %.2f' % cost - if self.print_progress > 1: - if not hasattr(self, 'ela_str_'): - self.ela_str_ = '00:00:00' - if not epoch % time_interval: - ela_sec = time() - self.init_time_ - self.ela_str_ = self._to_hhmmss(ela_sec) - s += ' | Elapsed: %s' % self.ela_str_ - if self.print_progress > 2: - if not hasattr(self, 'eta_str_'): - self.eta_str_ = '00:00:00' - if not epoch % time_interval: - eta_sec = ((ela_sec / float(epoch)) * - self.epochs - ela_sec) - self.eta_str_ = self._to_hhmmss(eta_sec) - s += ' | ETA: %s' % self.eta_str_ - stderr.write(s) - stderr.flush() - - def _to_hhmmss(self, sec): - m, s = divmod(sec, 60) - h, m = divmod(m, 60) - return "%d:%02d:%02d" % (h, m, s) - - def _check_arrays(self, X, y=None): - if isinstance(X, list): - raise ValueError('X must be a numpy array') - if not len(X.shape) == 2: - raise ValueError('X must be a 2D array. Try X[:,numpy.newaxis]') - try: - if y is None: - return - except(AttributeError): - if not len(y.shape) == 1: - raise ValueError('y must be a 1D array.') - - if not len(y) == X.shape[0]: - raise ValueError('X and y must contain the same number of samples') - - def _init_weights(self, shape, zero_init_weight=False, - coef=0.001, - dtype='float64', seed=None): - """Initialize weight coefficients.""" - if seed: - np.random.seed(seed) - if zero_init_weight: - w = np.zeros(shape) - else: - w = coef * np.random.normal(loc=0.0, scale=1.0, size=shape) - return w.astype(dtype) - - def score(self, X, y): - """ Compute the prediction accuracy - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values (true class labels). - - Returns - --------- - acc : float - The prediction accuracy as a float - between 0.0 and 1.0 (perfect score). - - """ - y_pred = self.predict(X) - acc = np.sum(y == y_pred, axis=0) / float(X.shape[0]) - return acc diff --git a/mlxtend/classifier/logistic_regression.py b/mlxtend/classifier/logistic_regression.py index 8e4a9ea4f..72f2b597a 100644 --- a/mlxtend/classifier/logistic_regression.py +++ b/mlxtend/classifier/logistic_regression.py @@ -8,34 +8,34 @@ import numpy as np from time import time -from .base import _BaseClassifier +from .._base import _BaseClassifier class LogisticRegression(_BaseClassifier): """Logistic regression classifier. + Note that this implementation of Logistic Regression + expects binary class labels in {0, 1}. + Parameters ------------ eta : float (default: 0.01) Learning rate (between 0.0 and 1.0) epochs : int (default: 50) Passes over the training dataset. + Prior to each epoch, the dataset is shuffled + if `minibatches > 1` to prevent cycles in stochastic gradient descent. l2_lambda : float Regularization parameter for L2 regularization. No regularization if l2_lambda=0.0. minibatches : int (default: 1) - Divide the training data into *k* minibatches - for accelerated stochastic gradient descent learning. - Gradient Descent Learning if `minibatches` = 1 - Stochastic Gradient Descent learning if `minibatches` = len(y) - Minibatch learning if `minibatches` > 1 + The number of minibatches for gradient-based optimization. + If 1: Gradient Descent learning + If len(y): Stochastic Gradient Descent (SGD) online learning + If 1 < minibatches < len(y): SGD Minibatch learning random_seed : int (default: None) Set random state for shuffling and initializing the weights. - zero_init_weight : bool (default: False) - If True, weights are initialized to zero instead of small random - numbers following a standard normal distribution with mean=0 and - stddev=1. print_progress : int (default: 0) Prints progress in fitting to stderr. 0: No output @@ -45,90 +45,68 @@ class LogisticRegression(_BaseClassifier): Attributes ----------- - w_ : 1d-array - Weights after fitting. + w_ : 2d-array, shape={n_features, 1} + Model weights after fitting. + b_ : 1d-array, shape={1,} + Bias unit after fitting. cost_ : list - List of floats with sum of squared error cost (sgd or gd) for every + List of floats with cross_entropy cost (sgd or gd) for every epoch. """ def __init__(self, eta=0.01, epochs=50, l2_lambda=0.0, minibatches=1, - random_seed=None, zero_init_weight=False, + random_seed=None, print_progress=0): - super(LogisticRegression, self).__init__(print_progress=print_progress) - self.random_seed = random_seed + super(LogisticRegression, self).__init__(print_progress=0, + random_seed=random_seed) self.eta = eta self.epochs = epochs self.l2_lambda = l2_lambda self.minibatches = minibatches - self.zero_init_weight = zero_init_weight - - def fit(self, X, y, init_weights=True): - """Learn weight coefficients from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values. - init_weights : bool (default: True) - (Re)initializes weights to small random floats if True. - - Returns - ------- - self : object - """ - self._check_arrays(X, y) + def _fit(self, X, y, init_params=True): - if (np.unique(y) != np.array([0, 1])).all(): - raise ValueError('Supports only binary class labels 0 and 1') + self._check_target_array(y, allowed={(0, 1)}) - if init_weights: - self.w_ = self._init_weights( - shape=1 + X.shape[1], - zero_init_weight=self.zero_init_weight, - seed=self.random_seed) + if init_params: + self.b_, self.w_ = self._init_params( + weights_shape=(X.shape[1], 1), + bias_shape=(1,), + random_seed=self.random_seed) + self.cost_ = [] - self.m_ = len(self.w_) - self.cost_ = [] - - # random seed for shuffling - if self.random_seed: - np.random.seed(self.random_seed) - - n_idx = list(range(y.shape[0])) self.init_time_ = time() for i in range(self.epochs): - if self.minibatches > 1: - n_idx = np.random.permutation(n_idx) - minis = np.array_split(n_idx, self.minibatches) - for idx in minis: + for idx in self._yield_minibatches_idx( + n_batches=self.minibatches, + data_ary=y, + shuffle=True): + y_val = self._activation(X[idx]) errors = (y[idx] - y_val) - neg_grad = X[idx].T.dot(errors) - l2_reg = self.l2_lambda * self.w_[1:] - self.w_[1:] += self.eta * (neg_grad - l2_reg) - self.w_[0] += self.eta * errors.sum() + neg_grad = X[idx].T.dot(errors).reshape(self.w_.shape) + l2_reg = self.l2_lambda * self.w_ + self.w_ += self.eta * (neg_grad - l2_reg) + self.b_ += self.eta * errors.sum() cost = self._logit_cost(y, self._activation(X)) self.cost_.append(cost) if self.print_progress: - self._print_progress(epoch=i + 1, cost=cost) + self._print_progress(iteration=(i + 1), + n_iter=self.epochs, + cost=cost) return self def _predict(self, X): - # equivalent to np.where(self._activation(X) >= 0.5, 1, 0) - return np.where(self._net_input(X) >= 0.0, 1, 0) + # equivalent to np.where(self._activation(X) < 0.5, 0, 1) + return np.where(self._net_input(X) < 0.0, 0, 1) def _net_input(self, X): """Compute the linear net input.""" - return X.dot(self.w_[1:]) + self.w_[0] + return (X.dot(self.w_) + self.b_).flatten() def _activation(self, X): """ Compute sigmoid activation.""" diff --git a/mlxtend/classifier/multilayerperceptron.py b/mlxtend/classifier/multilayerperceptron.py new file mode 100644 index 000000000..1eb2d2b54 --- /dev/null +++ b/mlxtend/classifier/multilayerperceptron.py @@ -0,0 +1,257 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# +# Implementation of a Multi-layer Perceptron in Tensorflow +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +import numpy as np +from time import time +from scipy.special import expit +from .._base import _BaseClassifier +from .._base import _BaseMultiClass +from .._base import _BaseMultiLayer + + +class MultiLayerPerceptron(_BaseClassifier, _BaseMultiClass, _BaseMultiLayer): + """Multi-layer perceptron classifier with logistic sigmoid activations + + Parameters + ------------ + eta : float (default: 0.5) + Learning rate (between 0.0 and 1.0) + epochs : int (default: 50) + Passes over the training dataset. + Prior to each epoch, the dataset is shuffled + if `minibatches > 1` to prevent cycles in stochastic gradient descent. + hidden_layers : list (default: [50]) + Number of units per hidden layer. By default 50 units in the + first hidden layer. At the moment only 1 hidden layer is supported + n_classes : int (default: None) + A positive integer to declare the number of class labels + if not all class labels are present in a partial training set. + Gets the number of class labels automatically if None. + l1 : float (default: 0.0) + L1 regularization strength + l2 : float (default: 0.0) + L2 regularization strength + momentum : float (default: 0.0) + Momentum constant. Factor multiplied with the + gradient of the previous epoch t-1 to improve + learning speed + w(t) := w(t) - (grad(t) + momentum * grad(t-1)) + decrease_const : float (default: 0.0) + Decrease constant. Shrinks the learning rate + after each epoch via eta / (1 + epoch*decrease_const) + minibatches : int (default: 1) + Divide the training data into *k* minibatches + for accelerated stochastic gradient descent learning. + Gradient Descent Learning if `minibatches` = 1 + Stochastic Gradient Descent learning if `minibatches` = len(y) + Minibatch learning if `minibatches` > 1 + random_seed : int (default: None) + Set random state for shuffling and initializing the weights. + print_progress : int (default: 0) + Prints progress in fitting to stderr. + 0: No output + 1: Epochs elapsed and cost + 2: 1 plus time elapsed + 3: 2 plus estimated time until completion + + Attributes + ----------- + w_ : 2d-array, shape=[n_features, n_classes] + Weights after fitting. + b_ : 1D-array, shape=[n_classes] + Bias units after fitting. + cost_ : list + List of floats; the mean categorical cross entropy + cost after each epoch. + + """ + def __init__(self, eta=0.5, epochs=50, + hidden_layers=[50], + n_classes=None, + momentum=0.0, l1=0.0, l2=0.0, + dropout=1.0, + decrease_const=0.0, + minibatches=1, random_seed=None, + print_progress=0): + + super(MultiLayerPerceptron, self).__init__(print_progress=0, + random_seed=random_seed) + if len(hidden_layers) > 1: + raise AttributeError('Currently, only 1 hidden layer is supported') + self.hidden_layers = hidden_layers + self.eta = eta + self.n_classes = n_classes + self.l1 = l1 + self.l2 = l2 + self.decrease_const = decrease_const + self.momentum = momentum + self.epochs = epochs + self.minibatches = minibatches + + def _fit(self, X, y, init_params=True): + + self._check_target_array(y) + + if init_params: + self._decr_eta = self.eta + if self.n_classes is None: + self.n_classes = np.max(y) + 1 + + self._n_features = X.shape[1] + self._weight_maps, self._bias_maps = self._layermapping( + n_features=self._n_features, + n_classes=self.n_classes, + hidden_layers=self.hidden_layers) + + self.w_, self.b_ = self._init_params_from_layermapping( + weight_maps=self._weight_maps, + bias_maps=self._bias_maps) + + self.cost_ = [] + + if self.momentum != 0.0: + prev_grad_b_1 = np.zeros(shape=self.b_[1].shape) + prev_grad_w_1 = np.zeros(shape=self.w_[1].shape) + prev_grad_b_out = np.zeros(shape=self.b_['out'].shape) + prev_grad_w_out = np.zeros(shape=self.w_['out'].shape) + + y_enc = self._one_hot(y=y, n_labels=self.n_classes, dtype=np.float) + + self.init_time_ = time() + for i in range(self.epochs): + for idx in self._yield_minibatches_idx( + n_batches=self.minibatches, + data_ary=y, + shuffle=True): + + net_1, act_1, net_out, act_out = self._feedforward(X[idx]) + + # GRADIENTS VIA BACKPROPAGATION + + # [n_samples, n_classlabels] + sigma_out = act_out - y_enc[idx] + + # [n_samples, n_hidden] + sigmoid_derivative_1 = act_1 * (1.0 - act_1) + + # [n_samples, n_classlabels] dot [n_classlabels, n_hidden] + # -> [n_samples, n_hidden] + sigma_1 = (np.dot(sigma_out, self.w_['out'].T) * + sigmoid_derivative_1) + + # [n_features, n_samples] dot [n_samples, n_hidden] + # -> [n_features, n_hidden] + grad_W_1 = np.dot(X[idx].T, sigma_1) + + grad_B_1 = np.sum(sigma_1, axis=0) + + # [n_hidden, n_samples] dot [n_samples, n_classlabels] + # -> [n_hidden, n_classlabels] + grad_W_out = np.dot(act_1.T, sigma_out) + + grad_B_out = np.sum(sigma_out, axis=0) + + # LEARNING RATE ADJUSTEMENTS + self._decr_eta /= (1 + self.decrease_const * i) + + # REGULARIZATION AND WEIGHT UPDATES + + dW_1 = (self._decr_eta * grad_W_1 + + self._decr_eta * self.l2 * self.w_[1]) + + dW_out = (self._decr_eta * grad_W_out + + self._decr_eta * self.l2 * self.w_['out']) + + dB_1 = self._decr_eta * grad_B_1 + dB_out = self._decr_eta * grad_B_out + + self.w_[1] -= dW_1 + self.b_[1] -= dB_1 + self.w_['out'] -= dW_out + self.b_['out'] -= dB_out + + if self.momentum != 0.0: + self.w_[1] -= self.momentum * prev_grad_w_1 + self.b_[1] -= self.momentum * prev_grad_b_1 + self.w_['out'] -= self.momentum * prev_grad_w_out + self.b_['out'] -= self.momentum * prev_grad_b_out + prev_grad_b_1 = grad_B_1 + prev_grad_w_1 = grad_W_1 + prev_grad_b_out = grad_B_out + prev_grad_w_out = grad_W_out + + net_1, act_1, net_out, act_out = self._feedforward(X) + cross_ent = self._cross_entropy(output=act_out, y_target=y_enc) + cost = self._compute_cost(cross_ent) + + self.cost_.append(cost) + if self.print_progress: + self._print_progress(epoch=i + 1, cost=cost) + + return self + + def _feedforward(self, X): + + # [n_samples, n_features] dot [n_features, n_hidden] + # -> [n_samples, n_hidden] + net_1 = np.dot(X, self.w_[1]) + self.b_[1] + act_1 = self._sigmoid(net_1) + + # [n_samples, n_hidden] dot [n_hidden, n_classlabels] + # -> [n_samples, n_classlabels] + net_out = np.dot(act_1, self.w_['out']) + self.b_['out'] + act_out = self._softmax(net_out) + + return net_1, act_1, net_out, act_out + + def _compute_cost(self, cross_entropy): + L2_term = (self.l2 * + (np.sum(self.w_[1] ** 2) + np.sum(self.w_['out'] ** 2))) + + L1_term = (self.l1 * + (np.abs(self.w_[1]).sum() + np.abs(self.w_['out']).sum())) + + cross_entropy = cross_entropy + L2_term + L1_term + return 0.5 * np.mean(cross_entropy) + + def _predict(self, X): + net_1, act_1, net_out, act_out = self._feedforward(X) + y_pred = np.argmax(net_out, axis=1) + return y_pred + + def _softmax(self, z): + return (np.exp(z.T) / np.sum(np.exp(z), axis=1)).T + + def _cross_entropy(self, output, y_target): + return - np.sum(np.log(output) * (y_target), axis=1) + + def predict_proba(self, X): + """Predict class probabilities of X from the net input. + + Parameters + ---------- + X : {array-like, sparse matrix}, shape = [n_samples, n_features] + Training vectors, where n_samples is the number of samples and + n_features is the number of features. + + Returns + ---------- + Class probabilties : array-like, shape= [n_samples, n_classes] + + """ + net_1, act_1, net_out, act_out = self._feedforward(X) + softm = self._softmax(act_out) + return softm + + def _sigmoid(self, z): + """Compute logistic function (sigmoid). + Uses scipy.special.expit to avoid overflow + error for very small input values z. + """ + # return 1.0 / (1.0 + np.exp(-z)) + return expit(z) diff --git a/mlxtend/classifier/neuralnet_mlp.py b/mlxtend/classifier/neuralnet_mlp.py deleted file mode 100644 index c1aa07ac6..000000000 --- a/mlxtend/classifier/neuralnet_mlp.py +++ /dev/null @@ -1,411 +0,0 @@ -# Sebastian Raschka 2014-2016 -# mlxtend Machine Learning Library Extensions -# -# Implementation of a multi-layer perceptron for classification. -# Author: Sebastian Raschka -# -# License: BSD 3 clause - -import numpy as np -from .base import _BaseClassifier -from scipy.special import expit -from time import time - - -class NeuralNetMLP(_BaseClassifier): - - """ Feedforward neural network / Multi-layer perceptron classifier. - - Parameters - ------------ - n_output : int - Number of output units, should be equal to the - number of unique class labels. - n_features : int - Number of features (dimensions) in the target dataset. - Should be equal to the number of columns in the X array. - n_hidden : int (default: 30) - Number of hidden units. - l1 : float (default: 0.0) - Lambda value for L1-regularization. - No regularization if l1=0.0 (default) - l2 : float (default: 0.0) - Lambda value for L2-regularization. - No regularization if l2=0.0 (default) - epochs : int (default: 500) - Number of passes over the training set. - eta : float (default: 0.001) - Learning rate. - alpha : float (default: 0.0) - Momentum constant. Factor multiplied with the - gradient of the previous epoch t-1 to improve - learning speed - w(t) := w(t) - (grad(t) + alpha*grad(t-1)) - decrease_const : float (default: 0.0) - Decrease constant. Shrinks the learning rate - after each epoch via eta / (1 + epoch*decrease_const) - random_weights : list (default: [-1.0, 1.0]) - Min and max values for initializing the random weights. - Initializes weights to 0 if None or False. - shuffle_init : bool (default: True) - Shuffles (a copy of the) training data before training. - shuffle_epoch : bool (default: True) - Shuffles training data before every epoch if True to prevent circles. - minibatches : int (default: 1) - Divides training data into k minibatches for efficiency. - Normal gradient descent learning if k=1 (default). - random_seed : int (default: None) - Set random seed for shuffling and initializing the weights. - zero_init_weight : bool (default: False) - If True, weights are initialized to zero instead of small random - numbers following a standard normal distribution with mean=0 and - stddev=1. - print_progress : int (default: 0) - Prints progress in fitting to stderr. - 0: No output - 1: Epochs elapsed and cost - 2: 1 plus time elapsed - 3: 2 plus estimated time until completion - - Attributes - ----------- - cost_ : list - Sum of squared errors after each epoch. - - """ - def __init__(self, n_output, n_features, n_hidden=30, - l1=0.0, l2=0.0, epochs=500, eta=0.001, - alpha=0.0, decrease_const=0.0, - shuffle_init=True, - shuffle_epoch=True, - minibatches=1, - zero_init_weight=False, - random_seed=None, - print_progress=0): - - super(NeuralNetMLP, self).__init__(print_progress=print_progress) - self.n_output = n_output - self.n_features = n_features - self.n_hidden = n_hidden - self.random_seed = random_seed - self.zero_init_weight = zero_init_weight - self.w1, self.w2 = self._initialize_weights() - self.l1 = l1 - self.l2 = l2 - self.epochs = epochs - self.eta = eta - self.alpha = alpha - self.decrease_const = decrease_const - self.shuffle_init = shuffle_init - self.shuffle_epoch = shuffle_epoch - self.minibatches = minibatches - self.print_progress = print_progress - - def _encode_labels(self, y, k): - """Encode labels into one-hot representation. - - Parameters - ------------ - y : array, shape = [n_samples] - Target values. - - Returns - ----------- - onehot : array, shape = (n_labels, n_samples) - One-hot encoded class labels. - - """ - onehot = np.zeros((k, y.shape[0])) - for idx, val in enumerate(y): - onehot[val, idx] = 1.0 - return onehot - - def _initialize_weights(self): - """Initialize weights with small random numbers.""" - w1 = self._init_weights(shape=self.n_hidden * (self.n_features + 1), - zero_init_weight=self.zero_init_weight, - seed=self.random_seed) - w1 = w1.reshape(self.n_hidden, self.n_features + 1) - w2 = self._init_weights(shape=self.n_output * (self.n_hidden + 1), - zero_init_weight=self.zero_init_weight, - seed=self.random_seed) - w2 = w2.reshape(self.n_output, self.n_hidden + 1) - return w1, w2 - - def _sigmoid(self, z): - """Compute logistic function (sigmoid). - Uses scipy.special.expit to avoid overflow - error for very small input values z. - """ - # return 1.0 / (1.0 + np.exp(-z)) - return expit(z) - - def _sigmoid_gradient(self, z): - """Compute gradient of the logistic function.""" - sg = self._sigmoid(z) - return sg * (1.0 - sg) - - def _add_bias_unit(self, X, how='column'): - """Add bias unit (column or row of 1s) to array at index 0.""" - if how == 'column': - X_new = np.ones((X.shape[0], X.shape[1] + 1)) - X_new[:, 1:] = X - elif how == 'row': - X_new = np.ones((X.shape[0] + 1, X.shape[1])) - X_new[1:, :] = X - else: - raise AttributeError('how must be columns or row') - return X_new - - def _feedforward(self, X, w1, w2): - """Compute feedforward step - - Parameters - ----------- - X : array, shape = [n_samples, n_features] - Input layer with original features. - w1 : array, shape = [n_hidden_units, n_features] - Weight matrix for input layer -> hidden layer. - w2 : array, shape = [n_output_units, n_hidden_units] - Weight matrix for hidden layer -> output layer. - - Returns - ---------- - a1 : array, shape = [n_samples, n_features+1] - Input values with bias unit. - z2 : array, shape = [n_hidden, n_samples] - Net input of hidden layer. - a2 : array, shape = [n_hidden+1, n_samples] - Activation of hidden layer. - z3 : array, shape = [n_output_units, n_samples] - Net input of output layer. - a3 : array, shape = [n_output_units, n_samples] - Activation of output layer. - - """ - a1 = self._add_bias_unit(X, how='column') - z2 = w1.dot(a1.T) - a2 = self._sigmoid(z2) - a2 = self._add_bias_unit(a2, how='row') - z3 = w2.dot(a2) - a3 = self._sigmoid(z3) - return a1, z2, a2, z3, a3 - - def _L2_reg(self, lambda_, w1, w2): - """Compute L2-regularization cost.""" - return ((lambda_ / 2.0) * (np.sum(w1[:, 1:] ** 2) + - np.sum(w2[:, 1:] ** 2))) - - def _L1_reg(self, lambda_, w1, w2): - """Compute L1-regularization cost.""" - return ((lambda_ / 2.0) * (np.abs(w1[:, 1:]).sum() + - np.abs(w2[:, 1:]).sum())) - - def _get_cost(self, y_enc, output, w1, w2): - """Compute cost function. - - y_enc : array, shape = (n_labels, n_samples) - one-hot encoded class labels. - output : array, shape = [n_output_units, n_samples] - Activation of the output layer (feedforward) - w1 : array, shape = [n_hidden_units, n_features] - Weight matrix for input layer -> hidden layer. - w2 : array, shape = [n_output_units, n_hidden_units] - Weight matrix for hidden layer -> output layer. - - Returns - --------- - cost : float - Regularized cost. - - """ - term1 = -y_enc * (np.log(output)) - term2 = (1.0 - y_enc) * np.log(1.0 - output) - cost = np.sum(term1 - term2) - L1_term = self._L1_reg(self.l1, w1, w2) - L2_term = self._L2_reg(self.l2, w1, w2) - cost = cost + L1_term + L2_term - return cost - - def _get_gradient(self, a1, a2, a3, z2, y_enc, w1, w2): - """Compute gradient step using backpropagation. - - Parameters - ------------ - a1 : array, shape = [n_samples, n_features+1] - Input values with bias unit. - a2 : array, shape = [n_hidden+1, n_samples] - Activation of hidden layer. - a3 : array, shape = [n_output_units, n_samples] - Activation of output layer. - z2 : array, shape = [n_hidden, n_samples] - Net input of hidden layer.= - y_enc : array, shape = (n_labels, n_samples) - one-hot encoded class labels. - w1 : array, shape = [n_hidden_units, n_features] - Weight matrix for input layer -> hidden layer. - w2 : array, shape = [n_output_units, n_hidden_units] - Weight matrix for hidden layer -> output layer. - - Returns - --------- - grad1 : array, shape = [n_hidden_units, n_features] - Gradient of the weight matrix w1. - grad2 : array, shape = [n_output_units, n_hidden_units] - Gradient of the weight matrix w2. - - """ - # backpropagation - sigma3 = a3 - y_enc - z2 = self._add_bias_unit(z2, how='row') - sigma2 = w2.T.dot(sigma3) * self._sigmoid_gradient(z2) - sigma2 = sigma2[1:, :] - grad1 = sigma2.dot(a1) - grad2 = sigma3.dot(a2.T) - - # regularize - grad1[:, 1:] += (w1[:, 1:] * (self.l1 + self.l2)) - grad2[:, 1:] += (w2[:, 1:] * (self.l1 + self.l2)) - - return grad1, grad2 - - def _predict(self, X): - a1, z2, a2, z3, a3 = self._feedforward(X, self.w1, self.w2) - y_pred = np.argmax(z3, axis=0) - return y_pred - - def fit(self, X, y): - """Learn weight coefficients from training data. - - Parameters - ----------- - X : array, shape = [n_samples, n_features] - Input layer with original features. - y : array, shape = [n_samples] - Target class labels. - - Returns: - ---------- - self - - """ - np.random.seed(self.random_seed) - self.cost_ = [] - self.gradient_ = np.array([]) - X_data, y_data = X.copy(), y.copy() - - if self.shuffle_init: - X_data, y_data = self._shuffle([X_data, y_data]) - - y_enc = self._encode_labels(y_data, self.n_output) - - delta_w1_prev = np.zeros(self.w1.shape) - delta_w2_prev = np.zeros(self.w2.shape) - - self.init_time_ = time() - for i in range(self.epochs): - - # adaptive learning rate - self.eta /= (1 + self.decrease_const * i) - - if self.shuffle_epoch: - idx = np.random.permutation(y_enc.shape[1]) - X_data, y_enc = X_data[idx], y_enc[:, idx] - - mini = np.array_split(range(y_data.shape[0]), self.minibatches) - for idx in mini: - - # feedforward - a1, z2, a2, z3, a3 = self._feedforward(X_data[idx], - self.w1, - self.w2) - cost = self._get_cost(y_enc=y_enc[:, idx], - output=a3, - w1=self.w1, - w2=self.w2) - self.cost_.append(cost) - - # compute gradient via backpropagation - grad1, grad2 = self._get_gradient(a1=a1, a2=a2, - a3=a3, z2=z2, - y_enc=y_enc[:, idx], - w1=self.w1, - w2=self.w2) - - # gradient_ attribute used for gradient checking - self.gradient_ = np.hstack((grad1.flatten(), grad2.flatten())) - - # update weights; [alpha * delta_w_prev] for momentum learning - delta_w1, delta_w2 = self.eta * grad1, self.eta * grad2 - self.w1 -= (delta_w1 + (self.alpha * delta_w1_prev)) - self.w2 -= (delta_w2 + (self.alpha * delta_w2_prev)) - delta_w1_prev, delta_w2_prev = delta_w1, delta_w2 - - if self.print_progress: - self._print_progress(epoch=i + 1) - - return self - - def _numerically_approximated_gradient(self, X, y, w1, w2, epsilon): - """Numerically approx. gradient for gradient checking (debugging only). - - Returns - --------- - num_grad : array-like, shape = [n_weights] - Numerical gradient enrolled as row vector. - - """ - y_enc = self._encode_labels(y, self.n_output) - num_grad1 = np.zeros(np.shape(w1)) - epsilon_ary1 = np.zeros(np.shape(w1)) - for i in range(w1.shape[0]): - for j in range(w1.shape[1]): - epsilon_ary1[i, j] = epsilon - a1, z2, a2, z3, a3 = self._feedforward(X, - w1 - epsilon_ary1, - w2) - cost1 = self._get_cost(y_enc, a3, w1 - epsilon_ary1, w2) - a1, z2, a2, z3, a3 = self._feedforward(X, - w1 + epsilon_ary1, - w2) - cost2 = self._get_cost(y_enc, a3, w1 + epsilon_ary1, w2) - num_grad1[i, j] = (cost2 - cost1) / (2 * epsilon) - epsilon_ary1[i, j] = 0 - - num_grad2 = np.zeros(np.shape(w2)) - epsilon_ary2 = np.zeros(np.shape(w2)) - for i in range(w2.shape[0]): - for j in range(w2.shape[1]): - epsilon_ary2[i, j] = epsilon - a1, z2, a2, z3, a3 = self._feedforward(X, - w1, - w2 - epsilon_ary2) - cost1 = self._get_cost(y_enc, a3, w1, w2 - epsilon_ary2) - a1, z2, a2, z3, a3 = self._feedforward(X, - w1, - w2 + epsilon_ary2) - cost2 = self._get_cost(y_enc, a3, w1, w2 + epsilon_ary2) - num_grad2[i, j] = (cost2 - cost1) / (2 * epsilon) - epsilon_ary2[i, j] = 0 - - num_grad = np.hstack((num_grad1.flatten(), num_grad2.flatten())) - return num_grad - - def _gradient_checking(self, X, y, epsilon=1e-5): - """ Apply gradient checking (for debugging only). - - Returns - --------- - eucl_dist : float - Euclidean distance (L2) between the numerically - approximated gradients and the backpropagated gradients. - - """ - num_grad = self._numerically_approximated_gradient(X=X, - y=y, - w1=self.w1, - w2=self.w2, - epsilon=epsilon) - self.fit(X=X, y=y) - eucl_dist = np.linalg.norm(num_grad - self.gradient_) - return eucl_dist diff --git a/mlxtend/classifier/perceptron.py b/mlxtend/classifier/perceptron.py index 9e7ddbfab..2502ab9ae 100644 --- a/mlxtend/classifier/perceptron.py +++ b/mlxtend/classifier/perceptron.py @@ -8,27 +8,25 @@ import numpy as np from time import time -from .base import _BaseClassifier +from .._base import _BaseClassifier class Perceptron(_BaseClassifier): - + """Perceptron classifier. + Note that this implementation of the Perceptron expects binary class labels + in {0, 1}. + Parameters ------------ eta : float (default: 0.1) Learning rate (between 0.0 and 1.0) epochs : int (default: 50) Number of passes over the training dataset. - shuffle : bool (default: True) - Shuffles training data every epoch if True to prevent circles. + Prior to each epoch, the dataset is shuffled to prevent cycles. random_seed : int Random state for initializing random weights and shuffling. - zero_init_weight : bool (default: False) - If True, weights are initialized to zero instead of small random - numbers following a standard normal distribution with mean=0 and - stddev=1. print_progress : int (default: 0) Prints progress in fitting to stderr. 0: No output @@ -38,72 +36,45 @@ class Perceptron(_BaseClassifier): Attributes ----------- - w_ : 1d-array - Weights after fitting. + w_ : 2d-array, shape={n_features, 1} + Model weights after fitting. + b_ : 1d-array, shape={1,} + Bias unit after fitting. cost_ : list Number of misclassifications in every epoch. """ - def __init__(self, eta=0.1, epochs=50, shuffle=True, - random_seed=None, zero_init_weight=False, + def __init__(self, eta=0.1, epochs=50, random_seed=None, print_progress=0): - super(Perceptron, self).__init__(print_progress=print_progress) - self.random_seed = random_seed + super(Perceptron, self).__init__(print_progress=0, + random_seed=random_seed) self.eta = eta self.epochs = epochs - self.shuffle = shuffle - self.zero_init_weight = zero_init_weight - - def fit(self, X, y, init_weights=True): - """Learn weight coefficients from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values. - init_weights : bool (default: True) - Re-initializes weights prior to fitting. Set False to continue - training with weights from a previous fitting. - - Returns - ------- - self - - """ - self._check_arrays(X, y) - - # check if {0, 1} or {-1, 1} class labels are used - self.classes_ = np.unique(y) - if not (np.all(np.array([0, 1]) == self.classes_) or - np.all(np.array([-1, 1]) == self.classes_)): - raise ValueError('Only supports binary' - ' class labels {0, 1} or {-1, 1}.') - - if init_weights: - self.w_ = self._init_weights( - shape=1 + X.shape[1], - zero_init_weight=self.zero_init_weight, - seed=self.random_seed) - - self.cost_ = [] - - if self.shuffle: - np.random.seed(self.random_seed) - - # learn weights + + def _fit(self, X, y, init_params=True): + self._check_target_array(y, allowed={(0, 1)}) + y_data = np.where(y == 0, -1., 1.) + + if init_params: + self.b_, self.w_ = self._init_params( + weights_shape=(X.shape[1], 1), + bias_shape=(1,), + random_seed=self.random_seed) + self.cost_ = [] + + n_idx = list(range(y_data.shape[0])) self.init_time_ = time() - n_idx = list(range(y.shape[0])) + for i in range(self.epochs): - if self.shuffle: - n_idx = np.random.permutation(n_idx) errors = 0 - for xi, target in zip(X[n_idx], y[n_idx]): - update = self.eta * (target - self._predict(xi)) - self.w_[1:] += update * xi - self.w_[0] += update + + for idx in self._yield_minibatches_idx( + n_batches=y_data.shape[0], data_ary=y_data, shuffle=True): + + update = self.eta * (y_data[idx] - + self._to_classlabels(X[idx])) + self.w_ += (update * X[idx]).reshape(self.w_.shape) + self.b_ += update errors += int(update != 0.0) if self.print_progress: @@ -113,8 +84,10 @@ def fit(self, X, y, init_weights=True): def _net_input(self, X): """ Net input function """ - return np.dot(X, self.w_[1:]) + self.w_[0] + return (np.dot(X, self.w_) + self.b_).flatten() + + def _to_classlabels(self, X): + return np.where(self._net_input(X) < 0.0, -1., 1.) def _predict(self, X): - return np.where(self._net_input(X) >= 0.0, - self.classes_[1], self.classes_[0]) + return np.where(self._net_input(X) < 0.0, 0, 1) diff --git a/mlxtend/classifier/softmax_regression.py b/mlxtend/classifier/softmax_regression.py index cdd8d14bf..fd6018a34 100644 --- a/mlxtend/classifier/softmax_regression.py +++ b/mlxtend/classifier/softmax_regression.py @@ -10,10 +10,11 @@ import numpy as np from time import time -from .base import _BaseClassifier +from .._base import _BaseClassifier +from .._base import _BaseMultiClass -class SoftmaxRegression(_BaseClassifier): +class SoftmaxRegression(_BaseClassifier, _BaseMultiClass,): """Softmax regression classifier. @@ -23,21 +24,22 @@ class SoftmaxRegression(_BaseClassifier): Learning rate (between 0.0 and 1.0) epochs : int (default: 50) Passes over the training dataset. - l2_lambda : float + Prior to each epoch, the dataset is shuffled + if `minibatches > 1` to prevent cycles in stochastic gradient descent. + l2 : float Regularization parameter for L2 regularization. - No regularization if l2_lambda=0.0. + No regularization if l2=0.0. minibatches : int (default: 1) - Divide the training data into *k* minibatches - for accelerated stochastic gradient descent learning. - Gradient Descent Learning if `minibatches` = 1 - Stochastic Gradient Descent learning if `minibatches` = len(y) - Minibatch learning if `minibatches` > 1 + The number of minibatches for gradient-based optimization. + If 1: Gradient Descent learning + If len(y): Stochastic Gradient Descent (SGD) online learning + If 1 < minibatches < len(y): SGD Minibatch learning + n_classes : int (default: None) + A positive integer to declare the number of class labels + if not all class labels are present in a partial training set. + Gets the number of class labels automatically if None. random_seed : int (default: None) Set random state for shuffling and initializing the weights. - zero_init_weight : bool (default: False) - If True, weights are initialized to zero instead of small random - numbers following a standard normal distribution with mean=0 and - stddev=1. print_progress : int (default: 0) Prints progress in fitting to stderr. 0: No output @@ -47,31 +49,27 @@ class SoftmaxRegression(_BaseClassifier): Attributes ----------- - w_ : 2d-array, shape=[n_features, n_classes] - Weights after fitting. + w_ : 2d-array, shape={n_features, 1} + Model weights after fitting. + b_ : 1d-array, shape={1,} + Bias unit after fitting. cost_ : list List of floats, the average cross_entropy for each epoch. """ def __init__(self, eta=0.01, epochs=50, - l2_lambda=0.0, minibatches=1, + l2=0.0, minibatches=1, + n_classes=None, random_seed=None, - zero_init_weight=False, print_progress=0): - super(SoftmaxRegression, self).__init__(print_progress=print_progress) - self.random_seed = random_seed + super(SoftmaxRegression, self).__init__(print_progress=0, + random_seed=random_seed) self.eta = eta self.epochs = epochs - self.l2_lambda = l2_lambda + self.l2 = l2 self.minibatches = minibatches - self.zero_init_weight = zero_init_weight - - def _one_hot(self, y, n_labels): - mat = np.zeros((len(y), n_labels)) - for i, val in enumerate(y): - mat[i, val] = 1 - return mat.astype(float) + self.n_classes = n_classes def _net_input(self, X, W, b): return (X.dot(W) + b) @@ -83,64 +81,34 @@ def _cross_entropy(self, output, y_target): return - np.sum(np.log(output) * (y_target), axis=1) def _cost(self, cross_entropy): - return np.mean(cross_entropy) + L2_term = np.sum(self.w_ ** 2) + cross_entropy = cross_entropy + L2_term + return 0.5 * np.mean(cross_entropy) def _to_classlabels(self, z): return z.argmax(axis=1) - def fit(self, X, y, init_weights=True, n_classes=None): - """Learn weight coefficients from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values. - init_weights : bool (default: True) - (Re)initializes weights to small random floats if True. - n_classes : int (default: None) - A positive integer to declare the number of class labels - if not all class labels are present in a partial training set. - Gets the number of class labels automatically if None. - Ignored if init_weights=False. - - Returns - ------- - self : object - - """ - if init_weights: - if n_classes: - self._n_classes = n_classes - else: - self._n_classes = np.max(y) + 1 + def _fit(self, X, y, init_params=True): + self._check_target_array(y) + if init_params: + if self.n_classes is None: + self.n_classes = np.max(y) + 1 self._n_features = X.shape[1] - self.w_ = self._init_weights( - shape=(self._n_features, self._n_classes), - zero_init_weight=self.zero_init_weight, - seed=self.random_seed) - self.b_ = self._init_weights( - shape=self._n_classes, - zero_init_weight=self.zero_init_weight, - seed=self.random_seed) - self.cost_ = [] - n_idx = list(range(y.shape[0])) - y_enc = self._one_hot(y, self._n_classes) + self.b_, self.w_ = self._init_params( + weights_shape=(self._n_features, self.n_classes), + bias_shape=(self.n_classes,), + random_seed=self.random_seed) + self.cost_ = [] - # random seed for shuffling - if self.random_seed: - np.random.seed(self.random_seed) + y_enc = self._one_hot(y=y, n_labels=self.n_classes, dtype=np.float) self.init_time_ = time() for i in range(self.epochs): - if self.minibatches > 1: - n_idx = np.random.permutation(n_idx) - - minis = np.array_split(n_idx, self.minibatches) - for idx in minis: + for idx in self._yield_minibatches_idx( + n_batches=self.minibatches, + data_ary=y, + shuffle=True): # givens: # w_ -> n_feat x n_classes @@ -156,8 +124,8 @@ def fit(self, X, y, init_weights=True, n_classes=None): # update in opp. direction of the cost gradient self.w_ -= (self.eta * grad + - self.eta * self.l2_lambda * self.w_) - self.b_ -= np.mean(diff, axis=0) + self.eta * self.l2 * self.w_) + self.b_ -= (self.eta * np.mean(diff, axis=0)) # compute cost of the whole epoch net = self._net_input(X, self.w_, self.b_) @@ -189,20 +157,6 @@ def predict_proba(self, X): softm = self._softmax(net) return softm - def predict(self, X): - """Predict class labels of X. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - - Returns - ---------- - class_labels : array-like, shape = [n_samples] - Predicted class labels. - - """ + def _predict(self, X): probas = self.predict_proba(X) return self._to_classlabels(probas) diff --git a/mlxtend/classifier/tests/test_adaline.py b/mlxtend/classifier/tests/test_adaline.py index 863241c14..7ae732dee 100644 --- a/mlxtend/classifier/tests/test_adaline.py +++ b/mlxtend/classifier/tests/test_adaline.py @@ -4,9 +4,10 @@ # # License: BSD 3 clause +import numpy as np from mlxtend.classifier import Adaline from mlxtend.data import iris_data -import numpy as np +from mlxtend.utils import assert_raises from nose.tools import raises @@ -14,9 +15,7 @@ X, y = iris_data() X = X[:, [0, 3]] # sepal length and petal width X = X[0:100] # class 0 and class 1 -y0 = y[0:100] # class 0 and class 1 -y1 = np.where(y[0:100] == 0, -1, 1) # class -1 and class 1 -y2 = np.where(y[0:100] == 0, -2, 1) # class -2 and class 1 +y1 = y[0:100] # standardize X_std = np.copy(X) @@ -24,36 +23,55 @@ X_std[:, 1] = (X[:, 1] - X[:, 1].mean()) / X[:, 1].std() -@raises(Exception) -def test_array_dimensions(): +def test_invalid_labels_1(): + y2 = np.where(y1 == 0, 2, 1) ada = Adaline(epochs=15, eta=0.01, random_seed=1) - ada = ada.fit(np.array([1, 2, 3]), [-1]) + assert_raises(AttributeError, + 'Labels not in {(0, 1)}.\nFound (1, 2)', + ada.fit, + X, + y2, + {(0, 1)}) + + +def test_invalid_labels_2(): + y2 = np.where(y1 == 0, -1, 1) + ada = Adaline(epochs=15, eta=0.01, random_seed=1) + assert_raises(AttributeError, + 'y array must not contain negative labels.\nFound [-1 1]', + ada.fit, + X, + y2, + {(-1, 1)}) def test_normal_equation(): - t1 = np.array([-5.21e-16, -7.86e-02, 1.02e+00]) + t1 = np.array([[-0.08], [1.02]]) + b1 = np.array([0.00]) ada = Adaline(epochs=30, eta=0.01, minibatches=None, - random_seed=1) + random_seed=None) ada.fit(X_std, y1) - np.testing.assert_almost_equal(ada.w_, t1, 2) - assert((y1 == ada.predict(X_std)).all()) + np.testing.assert_almost_equal(ada.w_, t1, decimal=2) + np.testing.assert_almost_equal(ada.b_, b1, decimal=2) + assert (y1 == ada.predict(X_std)).all(), ada.predict(X_std) def test_gradient_descent(): - t1 = np.array([-5.21e-16, -7.86e-02, 1.02e+00]) + t1 = np.array([[-0.08], [1.02]]) + b1 = np.array([0.00]) ada = Adaline(epochs=30, eta=0.01, minibatches=1, random_seed=1) ada.fit(X_std, y1) - np.testing.assert_almost_equal(ada.w_, t1, 2) + np.testing.assert_almost_equal(ada.w_, t1, decimal=2) + np.testing.assert_almost_equal(ada.b_, b1, decimal=2) assert((y1 == ada.predict(X_std)).all()) def test_score_function(): - t1 = np.array([-5.21e-16, -7.86e-02, 1.02e+00]) ada = Adaline(epochs=30, eta=0.01, minibatches=1, @@ -64,31 +82,19 @@ def test_score_function(): def test_refit_weights(): - t1 = np.array([-5.21e-16, -7.86e-02, 1.02e+00]) + t1 = np.array([[-0.08], [1.02]]) ada = Adaline(epochs=15, eta=0.01, minibatches=1, random_seed=1) - ada.fit(X_std, y1, init_weights=True) - ada.fit(X_std, y1, init_weights=False) - np.testing.assert_almost_equal(ada.w_, t1, 2) - assert((y1 == ada.predict(X_std)).all()) - - -def test_standardized_iris_data_with_zero_weights(): - t1 = np.array([-5.21e-16, -7.86e-02, 1.02e+00]) - ada = Adaline(epochs=30, - eta=0.01, - minibatches=1, - random_seed=1, - zero_init_weight=True) - ada.fit(X_std, y1) + ada.fit(X_std, y1, init_params=True) + ada.fit(X_std, y1, init_params=False) np.testing.assert_almost_equal(ada.w_, t1, 2) assert((y1 == ada.predict(X_std)).all()) def test_stochastic_gradient_descent(): - t1 = np.array([-5.21e-16, -7.86e-02, 1.02e+00]) + t1 = np.array([[-0.08], [1.02]]) ada = Adaline(epochs=30, eta=0.01, minibatches=len(y), @@ -106,22 +112,3 @@ def test_ary_persistency_in_shuffling(): random_seed=1) ada.fit(X_std, y1) np.testing.assert_almost_equal(orig, X_std, 6) - - -def test_0_1_class(): - t1 = np.array([0.51, -0.04, 0.51]) - ada = Adaline(epochs=30, - eta=0.01, - minibatches=1, - random_seed=1) - ada.fit(X_std, y0) - np.testing.assert_almost_equal(ada.w_, t1, 2) - assert((y0 == ada.predict(X_std)).all()) - - -def test_invalid_class(): - ada = Adaline(epochs=40, eta=0.01, random_seed=1) - try: - ada.fit(X, y2) # 0, 1 class - except ValueError: - pass diff --git a/mlxtend/classifier/tests/test_baseclassifer.py b/mlxtend/classifier/tests/test_baseclassifer.py deleted file mode 100644 index 7cde631a9..000000000 --- a/mlxtend/classifier/tests/test_baseclassifer.py +++ /dev/null @@ -1,40 +0,0 @@ -# Sebastian Raschka 2014-2016 -# mlxtend Machine Learning Library Extensions -# Author: Sebastian Raschka -# -# License: BSD 3 clause - -from mlxtend.classifier.base import _BaseClassifier -import numpy as np -from nose.tools import raises - - -@raises(ValueError) -def test_X_array(): - X = [1, 2, 4] - y = [2, 3, 4] - bc = _BaseClassifier() - bc._check_arrays(X, y) - - -@raises(ValueError) -def test_X_dim(): - X = np.array([2, 3, 4]) - y = [1, 2, 4] - bc = _BaseClassifier() - bc._check_arrays(X, y) - - -def test_okay(): - X = np.array([[2], [3], [4]]) - y = [1, 2, 4] - bc = _BaseClassifier() - bc._check_arrays(X, y) - - -@raises(ValueError) -def test_wrong_dim(): - X = np.array([[2], [3], [4]]) - y = [1, 2, 4, 5] - bc = _BaseClassifier() - bc._check_arrays(X, y) diff --git a/mlxtend/classifier/tests/test_logistic_regression.py b/mlxtend/classifier/tests/test_logistic_regression.py index 39a643987..f973cda00 100644 --- a/mlxtend/classifier/tests/test_logistic_regression.py +++ b/mlxtend/classifier/tests/test_logistic_regression.py @@ -4,9 +4,10 @@ # # License: BSD 3 clause +import numpy as np from mlxtend.classifier import LogisticRegression from mlxtend.data import iris_data -import numpy as np +from mlxtend.utils import assert_raises X, y = iris_data() @@ -19,41 +20,81 @@ X[:, 1] = (X[:, 1] - X[:, 1].mean()) / X[:, 1].std() +def test_invalid_labels_1(): + y1 = np.where(y == 0, 2, 1) + lr = LogisticRegression(epochs=15, eta=0.01, random_seed=1) + assert_raises(AttributeError, + 'Labels not in {(0, 1)}.\nFound (1, 2)', + lr.fit, + X, + y1, + {(0, 1)}) + + +def test_invalid_labels_2(): + y1 = np.where(y == 0, -1, 1) + lr = LogisticRegression(epochs=15, eta=0.01, random_seed=1) + assert_raises(AttributeError, + 'y array must not contain negative labels.\nFound [-1 1]', + lr.fit, + X, + y1, + {(-1, 1)}) + + def test_logistic_regression_gd(): - t = np.array([0.52, 1.2, 4.4]) + w = np.array([[1.2], [4.4]]) + b = np.array([0.52]) lr = LogisticRegression(epochs=100, eta=0.01, minibatches=1, random_seed=1) - lr.fit(X, y) # 0, 1 class - np.testing.assert_almost_equal(lr.w_, t, 2) + lr.fit(X, y) + np.testing.assert_almost_equal(lr.w_, w, 2) + np.testing.assert_almost_equal(lr.b_, b, 2) y_pred = lr.predict(X) acc = np.sum(y == y_pred, axis=0) / float(X.shape[0]) assert acc == 1.0, "Acc: %s" % acc def test_score_function(): - t = np.array([0.52, 1.2, 4.4]) lr = LogisticRegression(epochs=100, eta=0.01, minibatches=1, random_seed=1) - lr.fit(X, y) # 0, 1 class - np.testing.assert_almost_equal(lr.w_, t, 2) + lr.fit(X, y) acc = lr.score(X, y) assert acc == 1.0, "Acc: %s" % acc +def test_refit_weights(): + w = np.array([[1.2], [4.4]]) + b = np.array([0.52]) + lr = LogisticRegression(epochs=50, + eta=0.01, + minibatches=1, + random_seed=1) + + lr.fit(X, y) + w1 = lr.w_[0][0] + w2 = lr.w_[0][0] + lr.fit(X, y, init_params=False) + + assert w1 != lr.w_[0][0] + assert w2 != lr.w_[1][0] + np.testing.assert_almost_equal(lr.w_, w, 2) + np.testing.assert_almost_equal(lr.b_, b, 2) + + def test_predict_proba(): lr = LogisticRegression(epochs=100, eta=0.01, minibatches=1, random_seed=1) - lr.fit(X, y) # 0, 1 class - + lr.fit(X, y) idx = [0, 48, 99] # sample labels: 0, 0, 1 y_pred = lr.predict_proba(X[idx]) expect = np.array([0.009, 0.012, 0.993]) @@ -61,14 +102,14 @@ def test_predict_proba(): def test_logistic_regression_sgd(): - t = np.array([0.51, 1.18, 4.38]) + w = np.array([[1.18], [4.38]]) lr = LogisticRegression(epochs=100, eta=0.01, minibatches=len(y), random_seed=1) lr.fit(X, y) # 0, 1 class - np.testing.assert_almost_equal(lr.w_, t, 2) + np.testing.assert_almost_equal(lr.w_, w, 2) y_pred = lr.predict(X) acc = np.sum(y == y_pred, axis=0) / float(X.shape[0]) assert acc == 1.0, "Acc: %s" % acc @@ -82,7 +123,7 @@ def test_l2_regularization_gd(): random_seed=1) lr.fit(X, y) y_pred = lr.predict(X) - expect_weights = np.array([0.153, 1.055, 2.284]) + expect_weights = np.array([[1.061], [2.280]]) np.testing.assert_almost_equal(lr.w_, expect_weights, 3) y_pred = lr.predict(X) @@ -98,7 +139,7 @@ def test_l2_regularization_sgd(): random_seed=1) lr.fit(X, y) y_pred = lr.predict(X) - expect_weights = np.array([-2.73e-04, 2.40e-01, 3.53e-01]) + expect_weights = np.array([[0.24], [0.35]]) np.testing.assert_almost_equal(lr.w_, expect_weights, 2) y_pred = lr.predict(X) diff --git a/mlxtend/classifier/tests/test_multilayerperceptron.py b/mlxtend/classifier/tests/test_multilayerperceptron.py new file mode 100644 index 000000000..4a6c986b9 --- /dev/null +++ b/mlxtend/classifier/tests/test_multilayerperceptron.py @@ -0,0 +1,140 @@ +# Sebastian Raschka 2014-2016 +# mlxtend Machine Learning Library Extensions +# Author: Sebastian Raschka +# +# License: BSD 3 clause + +from mlxtend.classifier import MultiLayerPerceptron as MLP +from mlxtend.data import iris_data +import numpy as np +from mlxtend.utils import assert_raises + + +X, y = iris_data() +X = X[:, [0, 3]] # sepal length and petal width +X_bin = X[0:100] # class 0 and class 1 +y_bin = y[0:100] # class 0 and class 1 + +# standardize +X_bin[:, 0] = (X_bin[:, 0] - X_bin[:, 0].mean()) / X_bin[:, 0].std() +X_bin[:, 1] = (X_bin[:, 1] - X_bin[:, 1].mean()) / X_bin[:, 1].std() +X[:, 0] = (X[:, 0] - X[:, 0].mean()) / X[:, 0].std() +X[:, 1] = (X[:, 1] - X[:, 1].mean()) / X[:, 1].std() + + +def test_multiclass_gd_acc(): + mlp = MLP(epochs=20, + eta=0.05, + hidden_layers=[25], + minibatches=1, + random_seed=1) + mlp.fit(X, y) + assert round(mlp.cost_[0], 2) == 0.55, mlp.cost_[0] + assert round(mlp.cost_[-1], 2) == 0.02, mlp.cost_[-1] + assert (y == mlp.predict(X)).all() + + +def test_predict_proba(): + mlp = MLP(epochs=20, + eta=0.05, + hidden_layers=[25], + minibatches=1, + random_seed=1) + mlp.fit(X, y) + + pred = mlp.predict_proba(X[0, np.newaxis]) + exp = np.array([[0.56, 0.22, 0.22]]) + np.testing.assert_almost_equal(pred, exp, decimal=2) + + +def test_multiclass_sgd_acc(): + mlp = MLP(epochs=20, + eta=0.05, + hidden_layers=[25], + minibatches=len(y), + random_seed=1) + mlp.fit(X, y) + assert round(mlp.cost_[-1], 3) == 0.024, mlp.cost_[-1] + assert (y == mlp.predict(X)).all() + + +def test_multiclass_minibatch_acc(): + mlp = MLP(epochs=20, + eta=0.05, + hidden_layers=[25], + minibatches=5, + random_seed=1) + mlp.fit(X, y) + assert round(mlp.cost_[-1], 3) == 0.025, mlp.cost_[-1] + assert (y == mlp.predict(X)).all() + + +def test_num_hidden_layers(): + assert_raises(AttributeError, + 'Currently, only 1 hidden layer is supported', + MLP, 20, 0.05, [25, 10]) + + +def test_binary_gd(): + mlp = MLP(epochs=20, + eta=0.05, + hidden_layers=[25], + minibatches=5, + random_seed=1) + + mlp.fit(X_bin, y_bin) + assert (y_bin == mlp.predict(X_bin)).all() + + +def test_score_function(): + mlp = MLP(epochs=20, + eta=0.05, + hidden_layers=[25], + minibatches=5, + random_seed=1) + mlp.fit(X, y) + acc = mlp.score(X, y) + assert acc == 1.0, acc + + +def test_decay_function(): + mlp = MLP(epochs=20, + eta=0.05, + decrease_const=0.01, + hidden_layers=[25], + minibatches=5, + random_seed=1) + + mlp.fit(X, y) + assert mlp._decr_eta < mlp.eta + acc = mlp.score(X, y) + assert round(acc, 2) == 0.98, acc + + +def test_momentum_1(): + mlp = MLP(epochs=20, + eta=0.05, + momentum=0.1, + hidden_layers=[25], + minibatches=len(y), + random_seed=1) + + mlp.fit(X, y) + assert round(mlp.cost_[-1], 4) == 0.0059, mlp.cost_[-1] + assert (y == mlp.predict(X)).all() + + +def test_retrain(): + mlp = MLP(epochs=10, + eta=0.05, + hidden_layers=[25], + minibatches=len(y), + random_seed=1) + + mlp.fit(X, y) + cost_1 = mlp.cost_[-1] + mlp.fit(X, y, init_params=False) + + assert round(cost_1, 3) == 0.058, cost_1 + assert round(mlp.cost_[-1], 3) == 0.023, mlp.cost_[-1] + assert (y == mlp.predict(X)).all() diff --git a/mlxtend/classifier/tests/test_neuralnet_mlp.py b/mlxtend/classifier/tests/test_neuralnet_mlp.py deleted file mode 100644 index bc83c13cf..000000000 --- a/mlxtend/classifier/tests/test_neuralnet_mlp.py +++ /dev/null @@ -1,155 +0,0 @@ -# Sebastian Raschka 2014-2016 -# mlxtend Machine Learning Library Extensions -# Author: Sebastian Raschka -# -# License: BSD 3 clause - -from mlxtend.classifier import NeuralNetMLP -from mlxtend.data import iris_data -import numpy as np - - -# Iris Data -X, y = iris_data() - -# standardize -X_std = np.copy(X) -for i in range(4): - X_std[:, i] = (X[:, i] - X[:, i].mean()) / X[:, i].std() - - -def test_gradient_checking(): - nn3 = NeuralNetMLP(n_output=len(np.unique(y)), - n_features=X_std.shape[1], - n_hidden=25, - l2=0.0, - l1=0.0, - epochs=1, - eta=0.01, - alpha=0.0, - decrease_const=0.0, - minibatches=1, - shuffle_init=False, - shuffle_epoch=False, - random_seed=1) - - for epoch in range(10): - eucldist = nn3._gradient_checking(X=X_std, y=y) - assert eucldist < 1e-07, 'Gradient difference is %s' % eucldist - - -def test_gradient_descent(): - - nn = NeuralNetMLP(n_output=3, - n_features=X.shape[1], - n_hidden=10, - l2=0.0, - l1=0.0, - epochs=100, - eta=0.1, - minibatches=1, - shuffle_init=False, - shuffle_epoch=False, - random_seed=1) - - nn.fit(X_std, y) - y_pred = nn.predict(X_std) - acc = np.sum(y == y_pred, axis=0) / float(X_std.shape[0]) - assert round(acc, 2) == 0.99, "Acc: %s" % acc - - -def test_score_function(): - - nn = NeuralNetMLP(n_output=3, - n_features=X.shape[1], - n_hidden=10, - l2=0.0, - l1=0.0, - epochs=100, - eta=0.1, - minibatches=1, - shuffle_init=False, - shuffle_epoch=False, - random_seed=1) - - nn.fit(X_std, y) - acc = nn.score(X_std, y) - assert round(acc, 2) == 0.99, "Acc: %s" % acc - - -def test_shuffle(): - - nn = NeuralNetMLP(n_output=3, - n_features=X.shape[1], - n_hidden=10, - l2=0.0, - l1=0.0, - epochs=100, - eta=0.1, - minibatches=1, - shuffle_init=True, - shuffle_epoch=False, - random_seed=1) - - nn.fit(X_std, y) - y_pred = nn.predict(X_std) - acc = np.sum(y == y_pred, axis=0) / float(X_std.shape[0]) - assert round(acc, 2) == 0.99, "Acc: %s" % acc - - nn = NeuralNetMLP(n_output=3, - n_features=X.shape[1], - n_hidden=10, - l2=0.0, - l1=0.0, - epochs=100, - eta=0.1, - minibatches=1, - shuffle_init=True, - shuffle_epoch=True, - random_seed=1) - - nn.fit(X_std, y) - y_pred = nn.predict(X_std) - acc = np.sum(y == y_pred, axis=0) / float(X_std.shape[0]) - assert round(acc, 2) == 0.99, "Acc: %s" % acc - - -def test_minibatch(): - nn = NeuralNetMLP(n_output=3, - n_features=X.shape[1], - n_hidden=10, - l2=0.0, - l1=0.0, - epochs=30, - alpha=2.0, - eta=0.05, - minibatches=10, - shuffle_init=True, - shuffle_epoch=False, - random_seed=1) - - nn.fit(X_std, y) - y_pred = nn.predict(X_std) - acc = np.sum(y == y_pred, axis=0) / float(X_std.shape[0]) - assert round(acc, 2) == 0.99, "Acc: %s" % acc - - -def test_binary(): - X0 = X_std[0:100] # class 0 and class 1 - y0 = y[0:100] # class 0 and class 1 - - nn = NeuralNetMLP(n_output=2, - n_features=X0.shape[1], - n_hidden=10, - l2=0.0, - l1=0.0, - epochs=100, - eta=0.1, - minibatches=10, - shuffle_init=True, - shuffle_epoch=True, - random_seed=1) - nn.fit(X0, y0) - y_pred = nn.predict(X0) - acc = np.sum(y0 == y_pred, axis=0) / float(X0.shape[0]) - assert round(acc, 2) == 1.0, "Acc: %s" % acc diff --git a/mlxtend/classifier/tests/test_perceptron.py b/mlxtend/classifier/tests/test_perceptron.py index 7fadffee6..0ba7e962c 100644 --- a/mlxtend/classifier/tests/test_perceptron.py +++ b/mlxtend/classifier/tests/test_perceptron.py @@ -4,18 +4,16 @@ # # License: BSD 3 clause +import numpy as np from mlxtend.classifier import Perceptron from mlxtend.data import iris_data -import numpy as np -from nose.tools import raises +from mlxtend.utils import assert_raises # Iris Data X, y = iris_data() X = X[:, [0, 3]] # sepal length and petal width X = X[0:100] # class 0 and class 1 y0 = y[0:100] # class 0 and class 1 -y1 = np.where(y[0:100] == 0, -1, 1) # class -1 and class 1 -y2 = np.where(y[0:100] == 0, -2, 1) # class -2 and class 1 # standardize X_std = np.copy(X) @@ -23,62 +21,42 @@ X_std[:, 1] = (X[:, 1] - X[:, 1].mean()) / X[:, 1].std() -@raises(Exception) -def test_array_dimensions(): +def test_invalid_labels_1(): + y1 = np.where(y0 == 0, 2, 1) ppn = Perceptron(epochs=15, eta=0.01, random_seed=1) - ppn = ppn.fit(np.array([1, 2, 3]), [-1]) + assert_raises(AttributeError, + 'Labels not in {(0, 1)}.\nFound (1, 2)', + ppn.fit, + X, + y1, + {(0, 1)}) -def test_standardized_iris_data(): +def test_invalid_labels_2(): + y1 = np.where(y0 == 0, -1, 1) ppn = Perceptron(epochs=15, eta=0.01, random_seed=1) - ppn = ppn.fit(X_std, y1) # -1, 1 class - assert (y1 == ppn.predict(X_std)).all() + assert_raises(AttributeError, + 'y array must not contain negative labels.\nFound [-1 1]', + ppn.fit, + X, + y1, + {(-1, 1)}) -def test_standardized_iris_data_with_shuffle(): - ppn = Perceptron(epochs=15, eta=0.01, random_seed=1, shuffle=True) - ppn = ppn.fit(X_std, y1) # -1, 1 class - assert (y1 == ppn.predict(X_std)).all() +def test_standardized_iris_data(): + ppn = Perceptron(epochs=15, eta=0.01, random_seed=1) + ppn = ppn.fit(X_std, y0) + assert (y0 == ppn.predict(X_std)).all(), ppn.predict(X_std) def test_score_function(): - ppn = Perceptron(epochs=15, eta=0.01, random_seed=1, shuffle=True) - ppn = ppn.fit(X_std, y1) # -1, 1 class - acc = ppn.score(X_std, y1) + ppn = Perceptron(epochs=15, eta=0.01, random_seed=1) + ppn = ppn.fit(X_std, y0) + acc = ppn.score(X_std, y0) assert acc == 1.0, acc -def test_standardized_iris_data_with_zero_weights(): - ppn = Perceptron(epochs=15, eta=0.01, random_seed=1, zero_init_weight=True) - ppn = ppn.fit(X_std, y1) # -1, 1 class - assert (y1 == ppn.predict(X_std)).all() - - def test_nonstandardized_iris_data(): ppn = Perceptron(epochs=100, eta=0.01, random_seed=1) - ppn = ppn.fit(X, y1) # -1, 1 class - assert (y1 == ppn.predict(X)).all() - - -def test_0_1_class_iris_data(): - ppn = Perceptron(epochs=40, eta=0.05, random_seed=1) - ppn = ppn.fit(X, y0) # 0, 1 class - print(y0) - print(ppn.predict(X)) + ppn = ppn.fit(X, y0) assert (y0 == ppn.predict(X)).all() - - -def test_invalid_class(): - ppn = Perceptron(epochs=40, eta=0.01, random_seed=1) - try: - ppn.fit(X, y2) # -2, 1 class - assert(1 == 2) - except ValueError: - pass - - -def test_ary_persistency_in_shuffling(): - orig = X.copy() - ppn = Perceptron(epochs=40, eta=0.05, random_seed=1) - ppn = ppn.fit(X, y0) # 0, 1 class - np.testing.assert_almost_equal(orig, X, 6) diff --git a/mlxtend/classifier/tests/test_softmax_regression.py b/mlxtend/classifier/tests/test_softmax_regression.py index 3929ed6f2..1d7a019c7 100644 --- a/mlxtend/classifier/tests/test_softmax_regression.py +++ b/mlxtend/classifier/tests/test_softmax_regression.py @@ -4,9 +4,10 @@ # # License: BSD 3 clause +import numpy as np from mlxtend.classifier import SoftmaxRegression from mlxtend.data import iris_data -import numpy as np +from mlxtend.utils import assert_raises X, y = iris_data() @@ -21,9 +22,23 @@ X[:, 1] = (X[:, 1] - X[:, 1].mean()) / X[:, 1].std() +def test_labels(): + X = np.array([[1, 2], [3, 4]]) + y = np.array([-1, 1]) + lr = SoftmaxRegression(epochs=200, + eta=0.005, + minibatches=1, + random_seed=1) + assert_raises(AttributeError, + 'y array must not contain negative labels.\nFound [-1 1]', + lr.fit, + X, + y) + + def test_binary_logistic_regression_gd(): - t = np.array([[-0.2, 0.2], - [-3.09, 3.09]]) + t = np.array([[1.92, -1.91], + [-3.15, 3.13]]) lr = SoftmaxRegression(epochs=200, eta=0.005, minibatches=1, @@ -34,9 +49,27 @@ def test_binary_logistic_regression_gd(): assert (y_bin == lr.predict(X_bin)).all() +def test_refit_weights(): + t = np.array([[1.92, -1.91], + [-3.15, 3.13]]) + lr = SoftmaxRegression(epochs=100, + eta=0.005, + minibatches=1, + random_seed=1) + + lr.fit(X_bin, y_bin) + w1 = lr.w_[0][0] + w2 = lr.w_[0][0] + lr.fit(X_bin, y_bin, init_params=False) + + assert w1 != lr.w_[0][0] + assert w2 != lr.w_[1][0] + np.testing.assert_almost_equal(lr.w_, t, 2) + + def test_binary_logistic_regression_sgd(): - t = np.array([[-0.68, 0.68], - [-3.2, 3.2]]) + t = np.array([[0.13, -0.12], + [-3.06, 3.05]]) lr = SoftmaxRegression(epochs=200, eta=0.005, minibatches=len(y_bin), @@ -48,24 +81,22 @@ def test_binary_logistic_regression_sgd(): def test_binary_l2_regularization_gd(): - lr = SoftmaxRegression(eta=0.005, - epochs=200, + t = np.array([[1.23, -1.23], + [-2.28, 2.27]]) + lr = SoftmaxRegression(epochs=200, + eta=0.005, + l2=1.0, minibatches=1, - l2_lambda=1.0, random_seed=1) - lr.fit(X_bin, y_bin) - y_pred = lr.predict(X_bin) - expect_weights = np.array([[-0.316, 0.317], - [-2.265, 2.265]]) - np.testing.assert_almost_equal(lr.w_, expect_weights, 3) - acc = sum(y_pred == y_bin) / len(y_bin) - assert acc == 1.0 + lr.fit(X_bin, y_bin) + np.testing.assert_almost_equal(lr.w_, t, 2) + assert (y_bin == lr.predict(X_bin)).all() def test_multi_logistic_regression_gd_weights(): - t = np.array([[-1.04, -2.39, 3.43], - [-3.98, 2.31, 1.67]]) + t = np.array([[0.58, -3.72, 3.15], + [-3.52, 3.21, 0.28]]) lr = SoftmaxRegression(epochs=200, eta=0.005, minibatches=1, @@ -82,9 +113,9 @@ def test_multi_logistic_probas(): lr.fit(X, y) idx = [0, 50, 149] # sample labels: 0, 1, 2 y_pred = lr.predict_proba(X[idx]) - exp = np.array([[0.99, 0.01, 0.0], - [0.01, 0.89, 0.1], - [0.0, 0.02, 0.98]]) + exp = np.array([[1.0, 0.0, 0.0], + [0.08, 0.60, 0.32], + [0.0, 0.00, 0.99]]) np.testing.assert_almost_equal(y_pred, exp, 2) diff --git a/mlxtend/cluster/base.py b/mlxtend/cluster/base.py deleted file mode 100644 index 72b1e4193..000000000 --- a/mlxtend/cluster/base.py +++ /dev/null @@ -1,115 +0,0 @@ -# Sebastian Raschka 2014-2016 -# mlxtend Machine Learning Library Extensions -# -# Base Clusteer (Clutering Parent Class) -# Author: Sebastian Raschka -# -# License: BSD 3 clause - -import numpy as np -from sys import stderr -from time import time - - -class _BaseCluster(object): - - """Parent Class Base Cluster - - A base class that is implemented by - clustering child classes. - - """ - def __init__(self, print_progress=0, random_seed=None): - self.print_progress = print_progress - self.random_seed = random_seed - self._is_fitted = False - - def fit(self, X): - """Learn cluster centroids from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - - Returns - ------- - self : object - - """ - self._is_fitted = False - self._check_array(X=X) - if self.random_seed is not None: - np.random.seed(self.random_seed) - self._fit(X=X) - self._is_fitted = True - return self - - def _fit(self, X): - # Implemented in child class - pass - - def predict(self, X): - """Predict cluster labels of X. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - - Returns - ---------- - cluster_labels : array-like, shape = [n_samples] - Predicted cluster labels. - - """ - self._check_array(X=X) - if not self._is_fitted: - raise AttributeError('Model is not fitted, yet.') - return self._predict(X) - - def _predict(self, X): - # Implemented in child class - pass - - def _shuffle(self, arrays): - """Shuffle arrays in unison.""" - r = np.random.permutation(len(arrays[0])) - return [ary[r] for ary in arrays] - - def _print_progress(self, iteration, n_iter, - cost=None, time_interval=10): - if self.print_progress > 0: - s = '\rIteration: %d/%d' % (iteration, n_iter) - if cost: - s += ' | Cost %.2f' % cost - if self.print_progress > 1: - if not hasattr(self, 'ela_str_'): - self.ela_str_ = '00:00:00' - if not iteration % time_interval: - ela_sec = time() - self.init_time_ - self.ela_str_ = self._to_hhmmss(ela_sec) - s += ' | Elapsed: %s' % self.ela_str_ - if self.print_progress > 2: - if not hasattr(self, 'eta_str_'): - self.eta_str_ = '00:00:00' - if not iteration % time_interval: - eta_sec = ((ela_sec / float(iteration)) * - n_iter - ela_sec) - self.eta_str_ = self._to_hhmmss(eta_sec) - s += ' | ETA: %s' % self.eta_str_ - stderr.write(s) - stderr.flush() - - def _to_hhmmss(self, sec): - m, s = divmod(sec, 60) - h, m = divmod(m, 60) - return "%d:%02d:%02d" % (h, m, s) - - def _check_array(self, X): - if isinstance(X, list): - raise ValueError('X must be a numpy array') - if not len(X.shape) == 2: - raise ValueError('X must be a 2D array. Try X[:, numpy.newaxis]') diff --git a/mlxtend/cluster/kmeans.py b/mlxtend/cluster/kmeans.py index ab7b8b691..278d8ec5b 100644 --- a/mlxtend/cluster/kmeans.py +++ b/mlxtend/cluster/kmeans.py @@ -6,9 +6,10 @@ # # License: BSD 3 clause -from .base import _BaseCluster + import numpy as np from time import time +from .._base import _BaseCluster # from scipy.spatial.distance import euclidean @@ -25,6 +26,10 @@ class Kmeans(_BaseCluster): Number of iterations during cluster assignment. Cluster re-assignment stops automatically when the algorithm converged. + convergence_tolerance : float (default: 1e-05) + Compares current centroids with centroids of the previous iteration + using the given tolerance (a small positive float)to determine + if the algorithm converged early. random_seed : int (default: None) Set random state for the initial centroid assignment. print_progress : int (default: 0) @@ -48,27 +53,31 @@ class Kmeans(_BaseCluster): """ - def __init__(self, k, max_iter=10, random_seed=None, print_progress=0): + def __init__(self, k, max_iter=10, + convergence_tolerance=1e-05, + random_seed=None, print_progress=0): super(Kmeans, self).__init__(print_progress=print_progress, random_seed=random_seed) self.k = k self.max_iter = max_iter + self.convergence_tolerance = convergence_tolerance - def _fit(self, X): + def _fit(self, X, init_params=True): """Learn cluster centroids from training data. Called in self.fit """ - self.iterations_ = 0 + n_samples = X.shape[0] - # initialize centroids - idx = np.random.choice(n_samples, self.k, replace=False) - self.centroids_ = X[idx] + if init_params: + self.iterations_ = 0 + # initialize centroids + idx = np.random.choice(n_samples, self.k, replace=False) + self.centroids_ = X[idx] for _ in range(self.max_iter): - # assign samples to cluster centroids self.clusters_ = {i: [] for i in range(self.k)} for sample_idx, cluster_idx in enumerate( @@ -80,7 +89,10 @@ def _fit(self, X): for k in sorted(self.clusters_.keys())]) # stop if cluster assignment doesn't change - if (self.centroids_ == new_centroids).all(): + + if np.allclose(self.centroids_, new_centroids, + rtol=self.convergence_tolerance, + atol=1e-08, equal_nan=False): break else: self.centroids_ = new_centroids diff --git a/mlxtend/cluster/tests/test_base.py b/mlxtend/cluster/tests/test_base.py deleted file mode 100644 index c4be47b61..000000000 --- a/mlxtend/cluster/tests/test_base.py +++ /dev/null @@ -1,71 +0,0 @@ -# Sebastian Raschka 2014-2016 -# mlxtend Machine Learning Library Extensions -# Author: Sebastian Raschka -# -# License: BSD 3 clause - -from mlxtend.cluster.base import _BaseCluster -import numpy as np -from mlxtend.utils import assert_raises - - -def test_init(): - cl = _BaseCluster(print_progress=0, random_seed=1) - - -def test_check_array_1(): - X = np.array([1, 2, 3]) - cl = _BaseCluster(print_progress=0, random_seed=1) - assert_raises(ValueError, - 'X must be a 2D array. Try X[:, numpy.newaxis]', - cl._check_array, - X) - - -def test_check_array_2(): - X = list([[1], [2], [3]]) - cl = _BaseCluster(print_progress=0, random_seed=1) - - assert_raises(ValueError, - 'X must be a numpy array', - cl._check_array, - X) - - -def test_check_array_3(): - X = np.array([[1], [2], [3]]) - cl = _BaseCluster(print_progress=0, random_seed=1) - cl._check_array(X) - - -def test_fit(): - X = np.array([[1], [2], [3]]) - tfr = _BaseCluster(print_progress=0, random_seed=1) - tfr.fit(X) - - -def test_predict_1(): - X = np.array([[1], [2], [3]]) - cl = _BaseCluster(print_progress=0, random_seed=1) - - assert_raises(AttributeError, - 'Model is not fitted, yet.', - cl.predict, - X) - - -def test_predict_2(): - X = np.array([[1], [2], [3]]) - cl = _BaseCluster(print_progress=0, random_seed=1) - - cl.fit(X) - cl.predict(X) - - -def test_shuffle(): - X = np.array([[1], [2], [3]]) - y = np.array([1, 2, 3]) - cl = _BaseCluster(print_progress=0, random_seed=1) - X_sh, y_sh = cl._shuffle(arrays=[X, np.array(y)]) - np.testing.assert_equal(X_sh, np.array([[1], [3], [2]])) - np.testing.assert_equal(y_sh, np.array([1, 3, 2])) diff --git a/mlxtend/cluster/tests/test_kmeans.py b/mlxtend/cluster/tests/test_kmeans.py index 90593c21b..1d564e7e2 100644 --- a/mlxtend/cluster/tests/test_kmeans.py +++ b/mlxtend/cluster/tests/test_kmeans.py @@ -56,4 +56,28 @@ def test_three_blobs_centroids(): [0.9329651, 4.35420713]]) km.fit(X) + assert km.iterations_ == 2 np.testing.assert_almost_equal(centroids, km.centroids_, decimal=2) + + +def test_continue_training(): + km = Kmeans(k=3, + max_iter=1, + random_seed=1, + print_progress=0) + + first_iter = np.array([[-1.33, 3.26], + [1.95, 0.99], + [1.09, 4.26]]) + + second_iter = np.array([[-1.5947298, 2.92236966], + [2.06521743, 0.96137409], + [0.9329651, 4.35420713]]) + + km.fit(X) + np.testing.assert_almost_equal(first_iter, km.centroids_, decimal=2) + assert km.iterations_ == 1, km.iterations_ + + km.fit(X, init_params=False) + np.testing.assert_almost_equal(second_iter, km.centroids_, decimal=2) + assert km.iterations_ == 2, km.iterations_ diff --git a/mlxtend/regressor/base.py b/mlxtend/regressor/base.py deleted file mode 100644 index cfa3d700f..000000000 --- a/mlxtend/regressor/base.py +++ /dev/null @@ -1,129 +0,0 @@ -# Sebastian Raschka 2014-2016 -# mlxtend Machine Learning Library Extensions -# -# Base Regressor (Regressor Parent Class) -# Author: Sebastian Raschka -# -# License: BSD 3 clause - -import numpy as np -from sys import stderr -from time import time - - -class _BaseRegressor(object): - - """Parent Class Base Regressor - - A base class that is implemented by - regressor child classes. - - """ - def __init__(self, print_progress=0): - self.print_progress = print_progress - - def fit(self, X, y, init_weights=True): - """Learn weight coefficients from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values. - init_weights : bool (default: None) - Reinitialize weights - - Returns - ------- - self : object - - """ - if not (init_weights is None or isinstance(init_weights, bool)): - raise AttributeError("init_weights must be True, False, or None") - init_weights - self._check_arrays(X=X, y=y) - return self - - def predict(self, X): - """Predict class labels of X. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - - Returns - ---------- - class_labels : array-like, shape = [n_samples] - Predicted class labels. - - """ - self._check_arrays(X) - return self._predict(X) - - def _predict(X, y): - # Implemented in child class - pass - - def _shuffle(self, arrays): - """Shuffle arrays in unison.""" - r = np.random.permutation(len(arrays[0])) - return [ary[r] for ary in arrays] - - def _print_progress(self, epoch, cost=None, time_interval=10): - if self.print_progress > 0: - s = '\rEpoch: %d/%d' % (epoch, self.epochs) - if cost: - s += ' | Cost %.2f' % cost - if self.print_progress > 1: - if not hasattr(self, 'ela_str_'): - self.ela_str_ = '00:00:00' - if not epoch % time_interval: - ela_sec = time() - self.init_time_ - self.ela_str_ = self._to_hhmmss(ela_sec) - s += ' | Elapsed: %s' % self.ela_str_ - if self.print_progress > 2: - if not hasattr(self, 'eta_str_'): - self.eta_str_ = '00:00:00' - if not epoch % time_interval: - eta_sec = ((ela_sec / float(epoch)) * - self.epochs - ela_sec) - self.eta_str_ = self._to_hhmmss(eta_sec) - s += ' | ETA: %s' % self.eta_str_ - stderr.write(s) - stderr.flush() - - def _to_hhmmss(self, sec): - m, s = divmod(sec, 60) - h, m = divmod(m, 60) - return "%d:%02d:%02d" % (h, m, s) - - def _check_arrays(self, X, y=None): - if isinstance(X, list): - raise ValueError('X must be a numpy array') - if not len(X.shape) == 2: - raise ValueError('X must be a 2D array. Try X[:,numpy.newaxis]') - try: - if y is None: - return - except(AttributeError): - if not len(y.shape) == 1: - raise ValueError('y must be a 1D array.') - - if not len(y) == X.shape[0]: - raise ValueError('X and y must contain the same number of samples') - - def _init_weights(self, shape, zero_init_weight=False, - coef=0.001, - dtype='float64', seed=None): - """Initialize weight coefficients.""" - if seed: - np.random.seed(seed) - if zero_init_weight: - w = np.zeros(shape) - else: - w = coef * np.random.normal(loc=0.0, scale=1.0, size=shape) - return w.astype(dtype) diff --git a/mlxtend/regressor/linear_regression.py b/mlxtend/regressor/linear_regression.py index bddf368cc..8b0526f26 100644 --- a/mlxtend/regressor/linear_regression.py +++ b/mlxtend/regressor/linear_regression.py @@ -8,7 +8,7 @@ import numpy as np from time import time -from .base import _BaseRegressor +from .._base import _BaseRegressor # Sebastian Raschka 2014-2016 # mlxtend Machine Learning Library Extensions @@ -29,6 +29,8 @@ class LinearRegression(_BaseRegressor): solver rate (between 0.0 and 1.0) epochs : int (default: 50) Passes over the training dataset. + Prior to each epoch, the dataset is shuffled + if `minibatches > 1` to prevent cycles in stochastic gradient descent. minibatches : int (default: None) The number of minibatches for gradient-based optimization. If None: Normal Equations (closed-form solution) @@ -37,10 +39,6 @@ class LinearRegression(_BaseRegressor): If 1 < minibatches < len(y): Minibatch learning random_seed : int (default: None) Set random state for shuffling and initializing the weights. - zero_init_weight : bool (default: False) - If True, weights are initialized to zero instead of small random - numbers in the interval [-0.1, 0.1]; - ignored if solver='normal equation' print_progress : int (default: 0) Prints progress in fitting to stderr if not solver='normal equation' 0: No output @@ -50,8 +48,10 @@ class LinearRegression(_BaseRegressor): Attributes ----------- - w_ : 1d-array - Weights after fitting. + w_ : 2d-array, shape={n_features, 1} + Model weights after fitting. + b_ : 1d-array, shape={1,} + Bias unit after fitting. cost_ : list Sum of squared errors after each epoch; ignored if solver='normal equation' @@ -59,104 +59,66 @@ class LinearRegression(_BaseRegressor): """ def __init__(self, eta=0.01, epochs=50, minibatches=None, random_seed=None, - zero_init_weight=False, print_progress=0): + print_progress=0): + super(LinearRegression, self).__init__(print_progress=0, + random_seed=random_seed) - self.random_seed = random_seed self.eta = eta self.epochs = epochs self.minibatches = minibatches - self.print_progress = print_progress - self.zero_init_weight = zero_init_weight - - def fit(self, X, y, init_weights=True): - """Learn weight coefficients from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values. - init_weights : bool (default: True) - Re-initializes weights prior to fitting. Set False to continue - training with weights from a previous fitting. - - Returns - ------- - self : object - - """ - self._check_arrays(X, y) - - # initialize weights - if init_weights: - self.w_ = self._init_weights( - shape=1 + X.shape[1], - zero_init_weight=self.zero_init_weight, - seed=self.random_seed) - - self.cost_ = [] - - # random seed for shuffling - if self.random_seed: - np.random.seed(self.random_seed) + + def _fit(self, X, y, init_params=True): + + if init_params: + self.b_, self.w_ = self._init_params( + weights_shape=(X.shape[1], 1), + bias_shape=(1,), + random_seed=self.random_seed) + self.cost_ = [] if self.minibatches is None: - self.w_ = self._normal_equation(X, y) + self.b_, self.w_ = self._normal_equation(X, y) # Gradient descent or stochastic gradient descent learning else: - n_idx = list(range(y.shape[0])) self.init_time_ = time() for i in range(self.epochs): - if self.minibatches > 1: - n_idx = np.random.permutation(n_idx) - minis = np.array_split(n_idx, self.minibatches) - for idx in minis: - y_val = self.activation(X[idx]) + for idx in self._yield_minibatches_idx( + n_batches=self.minibatches, + data_ary=y, + shuffle=True): + + y_val = self._net_input(X[idx]) errors = (y[idx] - y_val) - self.w_[1:] += self.eta * X[idx].T.dot(errors) - self.w_[0] += self.eta * errors.sum() + self.w_ += (self.eta * + X[idx].T.dot(errors).reshape(self.w_.shape)) + self.b_ += self.eta * errors.sum() - cost = self._sum_squared_error_cost(y, self.activation(X)) + cost = self._sum_squared_error_cost(y, self._net_input(X)) self.cost_.append(cost) if self.print_progress: - self._print_progress(epoch=i + 1, cost=cost) + self._print_progress(iteration=(i + 1), + n_iter=self.epochs, + cost=cost) return self def _normal_equation(self, X, y): """Solve linear regression analytically.""" Xb = np.hstack((np.ones((X.shape[0], 1)), X)) + w = np.zeros(X.shape[1]) z = np.linalg.inv(np.dot(Xb.T, Xb)) - w = np.dot(z, np.dot(Xb.T, y)) - return w + params = np.dot(z, np.dot(Xb.T, y)) + b, w = np.array([params[0]]), params[1:].reshape(X.shape[1], 1) + return b, w - def net_input(self, X): + def _net_input(self, X): """Compute the linear net input.""" - return np.dot(X, self.w_[1:]) + self.w_[0] - - def activation(self, X): - """Compute the linear activation from the net input.""" - return self.net_input(X) - - def predict(self, X): - """Predict class labels of X. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - - Returns - ---------- - float : Predicted target value. + return (np.dot(X, self.w_) + self.b_).flatten() - """ - return self.net_input(X) + def _predict(self, X): + return self._net_input(X) def _sum_squared_error_cost(self, y, y_val): errors = (y - y_val) diff --git a/mlxtend/regressor/tests/test_linear_regression.py b/mlxtend/regressor/tests/test_linear_regression.py index f7b681956..2926f2ef9 100644 --- a/mlxtend/regressor/tests/test_linear_regression.py +++ b/mlxtend/regressor/tests/test_linear_regression.py @@ -13,70 +13,87 @@ X, y = boston_housing_data() X_rm = X[:, 5][:, np.newaxis] X_rm_lstat = X[:, [5, -1]] -expect_rm = np.array([-34.671, 9.102]) -expect_rm_lstat = np.array([-1.358, 5.095, -0.642]) # standardized variables X_rm_std = (X_rm - X_rm.mean(axis=0)) / X_rm.std(axis=0) X_rm_lstat_std = ((X_rm_lstat - X_rm_lstat.mean(axis=0)) / X_rm_lstat.std(axis=0)) y_std = (y - y.mean()) / y.std() -expect_rm_std = np.array([0.000, 0.695]) -expect_rm_lstat_std = np.array([0.000, 0.389, -0.499]) def test_univariate_normal_equation(): + w_exp = np.array([[9.102]]) + b_exp = np.array([-34.671]) ne_lr = LinearRegression(minibatches=None) ne_lr.fit(X_rm, y) - assert_almost_equal(ne_lr.w_, expect_rm, decimal=3) + assert_almost_equal(ne_lr.w_, w_exp, decimal=3) + assert_almost_equal(ne_lr.b_, b_exp, decimal=3) def test_univariate_normal_equation_std(): + w_exp = np.array([[0.695]]) + b_exp = np.array([0.00]) ne_lr = LinearRegression(minibatches=None) ne_lr.fit(X_rm_std, y_std) - assert_almost_equal(ne_lr.w_, expect_rm_std, decimal=3) + assert_almost_equal(ne_lr.w_, w_exp, decimal=3) + assert_almost_equal(ne_lr.b_, b_exp, decimal=3) def test_univariate_gradient_descent(): + w_exp = np.array([[0.695]]) + b_exp = np.array([0.00]) gd_lr = LinearRegression(minibatches=1, eta=0.001, epochs=500, random_seed=0) gd_lr.fit(X_rm_std, y_std) - assert_almost_equal(gd_lr.w_, expect_rm_std, decimal=3) + assert_almost_equal(gd_lr.w_, w_exp, decimal=3) + assert_almost_equal(gd_lr.b_, b_exp, decimal=3) def test_univariate_stochastic_gradient_descent(): + w_exp = np.array([[0.695]]) + b_exp = np.array([0.00]) sgd_lr = LinearRegression(minibatches=len(y), eta=0.0001, epochs=150, random_seed=0) sgd_lr.fit(X_rm_std, y_std) - assert_almost_equal(sgd_lr.w_, expect_rm_std, decimal=2) + assert_almost_equal(sgd_lr.w_, w_exp, decimal=3) + assert_almost_equal(sgd_lr.b_, b_exp, decimal=3) def test_multivariate_normal_equation(): + w_exp = np.array([[5.095], [-0.642]]) + b_exp = np.array([-1.358]) ne_lr = LinearRegression(minibatches=None) ne_lr.fit(X_rm_lstat, y) - assert_almost_equal(ne_lr.w_, expect_rm_lstat, decimal=3) + assert_almost_equal(ne_lr.w_, w_exp, decimal=3) + assert_almost_equal(ne_lr.b_, b_exp, decimal=3) def test_multivariate_gradient_descent(): + w_exp = np.array([[0.389], [-0.499]]) + b_exp = np.array([0.000]) gd_lr = LinearRegression(eta=0.001, epochs=500, minibatches=1, random_seed=0) gd_lr.fit(X_rm_lstat_std, y_std) - assert_almost_equal(gd_lr.w_, expect_rm_lstat_std, decimal=3) + assert_almost_equal(gd_lr.w_, w_exp, decimal=3) + assert_almost_equal(gd_lr.b_, b_exp, decimal=3) def test_multivariate_stochastic_gradient_descent(): + w_exp = np.array([[0.389], [-0.499]]) + b_exp = np.array([0.000]) sgd_lr = LinearRegression(eta=0.0001, epochs=500, minibatches=len(y), random_seed=0) sgd_lr.fit(X_rm_lstat_std, y_std) - assert_almost_equal(sgd_lr.w_, expect_rm_lstat_std, decimal=2) + assert_almost_equal(sgd_lr.w_, w_exp, decimal=3) + assert_almost_equal(sgd_lr.b_, b_exp, decimal=3) def test_ary_persistency_in_shuffling(): diff --git a/mlxtend/tf_classifier/tests/tests_tf_multilayerperceptron.py b/mlxtend/tf_classifier/tests/tests_tf_multilayerperceptron.py index f0e12bfd0..1ec59ed84 100644 --- a/mlxtend/tf_classifier/tests/tests_tf_multilayerperceptron.py +++ b/mlxtend/tf_classifier/tests/tests_tf_multilayerperceptron.py @@ -117,6 +117,20 @@ def test_multiclass_gd_acc(): assert (y == mlp.predict(X)).all() +def test_continue_learning(): + mlp = MLP(epochs=25, + eta=0.5, + hidden_layers=[5], + optimizer='gradientdescent', + activations=['logistic'], + minibatches=1, + random_seed=1) + mlp.fit(X, y) + assert np.sum(y == mlp.predict(X)) == 144, np.sum(y == mlp.predict(X)) + mlp.fit(X, y, init_params=False) + assert np.sum(y == mlp.predict(X)) == 150, np.sum(y == mlp.predict(X)) + + def test_multiclass_gd_dropout(): mlp = MLP(epochs=100, eta=0.5, @@ -209,32 +223,6 @@ def test_fail_minibatches(): assert (y == mlp.predict(X)).all() -def test_train_acc(): - mlp = MLP(epochs=3, - eta=0.5, - hidden_layers=[5], - optimizer='gradientdescent', - activations=['logistic'], - minibatches=1, - random_seed=1) - - mlp.fit(X, y) - assert len(mlp.train_acc_) == 3 - - -def test_valid_acc(): - mlp = MLP(epochs=3, - eta=0.5, - hidden_layers=[5], - optimizer='gradientdescent', - activations=['logistic'], - minibatches=1, - random_seed=1) - - mlp.fit(X, y, X_valid=X[:100], y_valid=y[:100]) - assert len(mlp.valid_acc_) == 3 - - def test_multiclass_gd_nolearningdecay(): mlp = MLP(epochs=5, eta=0.5, diff --git a/mlxtend/tf_classifier/tests/tests_tf_softmax.py b/mlxtend/tf_classifier/tests/tests_tf_softmax.py index dab4ec7e1..412adfbc8 100644 --- a/mlxtend/tf_classifier/tests/tests_tf_softmax.py +++ b/mlxtend/tf_classifier/tests/tests_tf_softmax.py @@ -31,7 +31,21 @@ def test_binary_logistic_regression_gd(): random_seed=1) lr.fit(X_bin, y_bin) - np.testing.assert_almost_equal(lr.weights_, t, 2) + np.testing.assert_almost_equal(lr.w_, t, 2) + assert (y_bin == lr.predict(X_bin)).all() + + +def test_init_params(): + t = np.array([[-0.28, 0.95], + [-2.23, 2.4]]) + lr = TfSoftmaxRegression(epochs=50, + eta=0.5, + minibatches=1, + random_seed=1) + + lr.fit(X_bin, y_bin) + lr.fit(X_bin, y_bin, init_params=False) + np.testing.assert_almost_equal(lr.w_, t, 2) assert (y_bin == lr.predict(X_bin)).all() @@ -44,7 +58,7 @@ def test_binary_logistic_regression_sgd(): random_seed=1) lr.fit(X_bin, y_bin) # 0, 1 class - np.testing.assert_almost_equal(lr.weights_, t, 2) + np.testing.assert_almost_equal(lr.w_, t, 2) assert (y_bin == lr.predict(X_bin)).all() @@ -56,7 +70,7 @@ def test_multi_logistic_regression_gd_weights(): minibatches=1, random_seed=1) lr.fit(X, y) - np.testing.assert_almost_equal(lr.weights_, t, 2) + np.testing.assert_almost_equal(lr.w_, t, 2) def test_multi_logistic_probas(): @@ -102,16 +116,6 @@ def test_train_acc(): np.testing.assert_almost_equal(exp, lr.train_acc_, decimal=2) -def test_valid_acc(): - lr = TfSoftmaxRegression(epochs=3, - eta=0.5, - minibatches=1, - random_seed=1) - lr.fit(X, y, X_valid=X[:100], y_valid=y[:100]) - exp = [0.5, 0.5, 0.5] - np.testing.assert_almost_equal(exp, lr.valid_acc_, decimal=2) - - @raises(AttributeError) def test_fail_minibatches(): lr = TfSoftmaxRegression(epochs=100, diff --git a/mlxtend/tf_classifier/tf_base.py b/mlxtend/tf_classifier/tf_base.py deleted file mode 100644 index f4b7d3c62..000000000 --- a/mlxtend/tf_classifier/tf_base.py +++ /dev/null @@ -1,160 +0,0 @@ -# Sebastian Raschka 2014-2016 -# mlxtend Machine Learning Library Extensions -# -# Base Classifier (Classifier Parent Class) -# Author: Sebastian Raschka -# -# License: BSD 3 clause - -import numpy as np -from sys import stderr -from time import time - - -class _TfBaseClassifier(object): - - """Parent Class Base Classifier - - A base class that is important by - classifier child classes. - - """ - def __init__(self, print_progress=0): - self.print_progress = print_progress - - def fit(self, X, y, init_weights=True): - """Learn weight coefficients from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values. - init_weights : bool (default: None) - Reinitialize weights - - Returns - ------- - self : object - - """ - if not (init_weights is None or isinstance(init_weights, bool)): - raise AttributeError("init_weights must be True, False, or None") - init_weights - self._check_arrays(X=X, y=y) - return self - - def predict(self, X): - """Predict class labels of X. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - - Returns - ---------- - class_labels : array-like, shape = [n_samples] - Predicted class labels. - - """ - self._check_arrays(X) - return self._predict(X) - - def _predict(X, y): - # Implemented in child class - pass - - def _shuffle(self, arrays): - """Shuffle arrays in unison.""" - r = np.random.permutation(len(arrays[0])) - return [ary[r] for ary in arrays] - - def _print_progress(self, epoch, cost=None, train_acc=None, - valid_acc=None, time_interval=10): - if self.print_progress > 0: - s = '\rEpoch: %d/%d' % (epoch, self.epochs) - if cost is not None: - s += ' | Cost %.2f' % cost - if train_acc is not None: - s += ' | TrainAcc %.2f' % train_acc - if valid_acc is not None: - s += ' | ValidAcc %.2f' % valid_acc - if self.print_progress > 1: - if not hasattr(self, 'ela_str_'): - self.ela_str_ = '00:00:00' - if not epoch % time_interval: - ela_sec = time() - self.init_time_ - self.ela_str_ = self._to_hhmmss(ela_sec) - s += ' | Elapsed: %s' % self.ela_str_ - if self.print_progress > 2: - if not hasattr(self, 'eta_str_'): - self.eta_str_ = '00:00:00' - if not epoch % time_interval: - eta_sec = ((ela_sec / float(epoch)) * - self.epochs - ela_sec) - self.eta_str_ = self._to_hhmmss(eta_sec) - s += ' | ETA: %s' % self.eta_str_ - - stderr.write(s) - stderr.flush() - - def _to_hhmmss(self, sec): - m, s = divmod(sec, 60) - h, m = divmod(m, 60) - return "%d:%02d:%02d" % (h, m, s) - - def _check_arrays(self, X, y=None): - if isinstance(X, list): - raise ValueError('X must be a numpy array') - if not len(X.shape) == 2: - raise ValueError('X must be a 2D array. Try X[:,numpy.newaxis]') - try: - if y is None: - return - except(AttributeError): - if not len(y.shape) == 1: - raise ValueError('y must be a 1D array.') - - if not len(y) == X.shape[0]: - raise ValueError('X and y must contain the same number of samples') - - def _tensor_to_numpy(self, var): - sess = tf.Session() - with sess.as_default(): - tf.initialize_all_variables().run() - return var.eval() - - def _one_hot(self, y, n_labels): - mat = np.zeros((len(y), n_labels)) - for i, val in enumerate(y): - mat[i, val] = 1 - return mat.astype(float) - - def _to_classlabels(self, z): - return z.argmax(axis=1) - - def score(self, X, y): - """ Compute the prediction accuracy - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values (true class labels). - - Returns - --------- - acc : float - The prediction accuracy as a float - between 0.0 and 1.0 (perfect score). - - """ - y_pred = self.predict(X) - acc = np.sum(y == y_pred, axis=0) / float(X.shape[0]) - return acc diff --git a/mlxtend/tf_classifier/tf_multilayerperceptron.py b/mlxtend/tf_classifier/tf_multilayerperceptron.py index 03f7b815e..eb40605a8 100644 --- a/mlxtend/tf_classifier/tf_multilayerperceptron.py +++ b/mlxtend/tf_classifier/tf_multilayerperceptron.py @@ -9,10 +9,13 @@ import tensorflow as tf import numpy as np from time import time -from .tf_base import _TfBaseClassifier +from .._base import _BaseClassifier +from .._base import _BaseMultiClass +from .._base import _BaseMultiLayer -class TfMultiLayerPerceptron(_TfBaseClassifier): +class TfMultiLayerPerceptron(_BaseClassifier, + _BaseMultiClass, _BaseMultiLayer): """Multi-layer perceptron classifier. Parameters @@ -21,9 +24,15 @@ class TfMultiLayerPerceptron(_TfBaseClassifier): Learning rate (between 0.0 and 1.0) epochs : int (default: 50) Passes over the training dataset. + Prior to each epoch, the dataset is shuffled + if `minibatches > 1` to prevent cycles in stochastic gradient descent. hidden_layers : list (default: [50, 10]) Number of units per hidden layer. By default 50 units in the first hidden layer, and 10 hidden units in the second hidden layer. + n_classes : int (default: None) + A positive integer to declare the number of class labels + if not all class labels are present in a partial training set. + Gets the number of class labels automatically if None. activations : list (default: ['logistic', 'logistic']) Activation functions for each layer. Available actiavtion functions: @@ -63,9 +72,9 @@ class TfMultiLayerPerceptron(_TfBaseClassifier): Attributes ----------- - weights_ : 2d-array, shape=[n_features, n_classes] + w_ : 2d-array, shape=[n_features, n_classes] Weights after fitting. - biases_ : 1D-array, shape=[n_classes] + b_ : 1D-array, shape=[n_classes] Bias units after fitting. cost_ : list List of floats, the average cross_entropy for each epoch. @@ -73,6 +82,7 @@ class TfMultiLayerPerceptron(_TfBaseClassifier): """ def __init__(self, eta=0.5, epochs=50, hidden_layers=[50, 10], + n_classes=None, activations=['logistic', 'logistic'], optimizer='gradientdescent', momentum=0.0, l1=0.0, l2=0.0, @@ -80,12 +90,16 @@ def __init__(self, eta=0.5, epochs=50, decay=[0.0, 1.0], minibatches=1, random_seed=None, print_progress=0, dtype=None): + + super(TfMultiLayerPerceptron, self).__init__(print_progress=0, + random_seed=random_seed) self.eta = eta if len(hidden_layers) != len(activations): raise AttributeError('Number of hidden_layers and' ' n_activations must be equal.') self.hidden_layers = hidden_layers self.momentum = momentum + self.n_classes = n_classes self.activations = self._get_activations(activations) self.l1 = l1 self.l2 = l2 @@ -95,16 +109,12 @@ def __init__(self, eta=0.5, epochs=50, self._init_optimizer(self.optimizer) self.epochs = epochs self.minibatches = minibatches - self.random_seed = random_seed - self.print_progress = print_progress if dtype is None: self.dtype = tf.float32 else: self.dtype = dtype - return - def _init_optimizer(self, optimizer): self.global_step_ = tf.Variable(0, trainable=False) if self.decay[0] > 0.0: @@ -151,92 +161,43 @@ def _get_activations(self, activations): act[idx + 1] = adict[a] return act - def fit(self, X, y, init_weights=True, - override_minibatches=None, n_classes=None, - X_valid=None, y_valid=None): - """Learn weight coefficients from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values. - init_weights : bool (default: True) - (Re)initializes weights to small random floats if True. - override_minibatches : int or None (default: None) - Uses a different number of minibatches for this session. - n_classes : int (default: None) - A positive integer to declare the number of class labels - if not all class labels are present in a partial training set. - Gets the number of class labels automatically if None. - Ignored if init_weights=False. - X_valid : {array-like, sparse matrix}, shape = [n_samples, n_features] - Optional validation set to store the validation accuracy values - for each epoch via self.valid_acc_ - y_valid : array-like, shape = [n_samples] - Target values for X_valid - - Returns - ------- - self : object - - """ - self._check_arrays(X, y) - if override_minibatches: - n_batches = override_minibatches - else: - n_batches = self.minibatches - + def _fit(self, X, y, init_params=True): + self._check_target_array(y) + n_batches = self.minibatches if y.shape[0] % n_batches != 0: raise AttributeError("Training set size %d cannot" " be divided into %d minibatches without" " remainder" % (y.shape[0], n_batches)) - if hasattr(X_valid, 'shape'): - validation = True - else: - validation = False - # Construct the Graph g = tf.Graph() with g.as_default(): self.optimizer_ = self._init_optimizer(self.optimizer) - if init_weights: - if n_classes: - self._n_classes = n_classes - else: - self._n_classes = np.max(y) + 1 + if init_params: + if self.n_classes is None: + self.n_classes = np.max(y) + 1 + self._n_features = X.shape[1] self._weight_maps, self._bias_maps = self._layermapping( n_features=self._n_features, - n_classes=self._n_classes, + n_classes=self.n_classes, hidden_layers=self.hidden_layers) - tf_weights, tf_biases = self._initialize_weights( + tf_weights, tf_biases = self._init_params_from_layermapping( weight_maps=self._weight_maps, bias_maps=self._bias_maps) self.cost_ = [] - self.train_acc_ = [] - self.valid_acc_ = [] + else: tf_weights, tf_biases = self._reuse_weights( - weights=self.weights_, - biases=self.biases_) + weights=self.w_, + biases=self.b_) # Prepare the training data - y_enc = self._one_hot(y, self._n_classes) + y_enc = self._one_hot(y, self.n_classes, dtype=np.float) n_idx = list(range(y.shape[0])) tf_X = tf.convert_to_tensor(value=X, dtype=self.dtype) tf_y = tf.convert_to_tensor(value=y_enc, dtype=self.dtype) - if validation: - tf_X_valid = tf.convert_to_tensor(value=X_valid, - dtype=self.dtype) - y_valid_enc = self._one_hot(y_valid, self._n_classes) - tf_y_valid = tf.convert_to_tensor(value=y_valid_enc, - dtype=self.dtype) - tf_idx = tf.placeholder(tf.int32, shape=[int(y.shape[0] / n_batches)]) X_batch = tf.gather(params=tf_X, indices=tf_idx) @@ -281,27 +242,17 @@ def fit(self, X, y, init_weights=True, # compute prediction accuracy train_acc = self._accuracy(y, tf_X, tf_weights, tf_biases, self.activations) - self.train_acc_.append(train_acc) - if validation: - valid_acc = self._accuracy(y_valid, tf_X_valid, - tf_weights, tf_biases, - self.activations) - self.valid_acc_.append(valid_acc) - else: - valid_acc = None - self._print_progress(epoch + 1, - cost=avg_cost, - train_acc=train_acc, - valid_acc=valid_acc) - - self.weights_ = {k: tf_weights[k].eval() for k in tf_weights} - self.biases_ = {k: tf_biases[k].eval() for k in tf_biases} - - return - - def _accuracy(self, y, tf_X, tf_weights_, tf_biases_, activations): + + self._print_progress(iteration=epoch + 1, + n_iter=self.epochs, + cost=avg_cost) + + self.w_ = {k: tf_weights[k].eval() for k in tf_weights} + self.b_ = {k: tf_biases[k].eval() for k in tf_biases} + + def _accuracy(self, y, tf_X, tf_w_, tf_biases_, activations): net = self._predict(tf_X=tf_X, - tf_weights=tf_weights_, + tf_weights=tf_w_, tf_biases=tf_biases_, activations=activations) logits = tf.nn.softmax(net) @@ -341,57 +292,20 @@ def predict_proba(self, X): """ self._check_arrays(X) - if not hasattr(self, 'weights_'): + if not hasattr(self, 'w_'): raise AttributeError('The model has not been fitted, yet.') with tf.Session(): tf.initialize_all_variables().run() tf_X = tf.convert_to_tensor(value=X, dtype=self.dtype) net = self._predict(tf_X=tf_X, - tf_weights=self.weights_, - tf_biases=self.biases_, + tf_weights=self.w_, + tf_biases=self.b_, activations=self.activations, dropout=False) logits = tf.nn.softmax(net) return logits.eval() - def _layermapping(self, n_features, n_classes, hidden_layers): - """Creates a dictionaries of layer dimensions for weights and biases. - - For example, given - `n_features=10`, `n_classes=10`, and `hidden_layers=[8, 7, 6]`: - - biases = - {1: [[8], 'n_hidden_1'], - 2: [[7], 'n_hidden_2'], - 3: [[6], 'n_hidden_3'], - 'out': [[10], 'n_classes'] - } - - weights = - {1: [[10, 8], 'n_features, n_hidden_1'], - 2: [[8, 7], 'n_hidden_1, n_hidden_2'], - 3: [[7, 6], 'n_hidden_2, n_hidden_3'], - 'out': [[6, 10], 'n_hidden_3, n_classes'] - } - - """ - weights = {1: [[n_features, hidden_layers[0]], - 'n_features, n_hidden_1'], - 'out': [[hidden_layers[-1], n_classes], - 'n_hidden_%d, n_classes' % len(hidden_layers)]} - biases = {1: [[hidden_layers[0]], 'n_hidden_1'], - 'out': [[n_classes], 'n_classes']} - - if len(hidden_layers) > 1: - for i, h in enumerate(hidden_layers[1:]): - layer = i + 2 - weights[layer] = [[weights[layer - 1][0][1], h], - 'n_hidden_%d, n_hidden_%d' % (layer - - 1, layer)] - biases[layer] = [[h], 'n_hidden_%d' % layer] - return weights, biases - def _predict(self, tf_X, tf_weights, tf_biases, activations, dropout=False): hidden_1 = self.activations[1](tf.add(tf.matmul(tf_X, @@ -412,11 +326,11 @@ def _predict(self, tf_X, tf_weights, tf_biases, return net def _reuse_weights(self, weights, biases): - w = {k: tf.Variable(self.weights_[k]) for k in self.weights_} - b = {k: tf.Variable(self.biases_[k]) for k in self.biases_} + w = {k: tf.Variable(self.w_[k]) for k in self.w_} + b = {k: tf.Variable(self.b_[k]) for k in self.b_} return w, b - def _initialize_weights(self, weight_maps, bias_maps): + def _init_params_from_layermapping(self, weight_maps, bias_maps): tf_weights, tf_biases = {}, {} for i, k in enumerate(zip(weight_maps, bias_maps)): if self.random_seed: diff --git a/mlxtend/tf_classifier/tf_softmax.py b/mlxtend/tf_classifier/tf_softmax.py index 6fb5d338d..e37c068a4 100644 --- a/mlxtend/tf_classifier/tf_softmax.py +++ b/mlxtend/tf_classifier/tf_softmax.py @@ -9,10 +9,12 @@ import tensorflow as tf import numpy as np from time import time -from .tf_base import _TfBaseClassifier +from .._base import _BaseClassifier +from .._base import _BaseMultiClass +from .._base import _BaseMultiLayer -class TfSoftmaxRegression(_TfBaseClassifier): +class TfSoftmaxRegression(_BaseClassifier, _BaseMultiClass, _BaseMultiLayer): """Softmax regression classifier. Parameters @@ -21,6 +23,12 @@ class TfSoftmaxRegression(_TfBaseClassifier): Learning rate (between 0.0 and 1.0) epochs : int (default: 50) Passes over the training dataset. + Prior to each epoch, the dataset is shuffled + if `minibatches > 1` to prevent cycles in stochastic gradient descent. + n_classes : int (default: None) + A positive integer to declare the number of class labels + if not all class labels are present in a partial training set. + Gets the number of class labels automatically if None. minibatches : int (default: 1) Divide the training data into *k* minibatches for accelerated stochastic gradient descent learning. @@ -40,19 +48,15 @@ class TfSoftmaxRegression(_TfBaseClassifier): Attributes ----------- - weights_ : 2d-array, shape=[n_features, n_classes] + w_ : 2d-array, shape=[n_features, n_classes] Weights after fitting. - biases_ : 1D-array, shape=[n_classes] + b_ : 1D-array, shape=[n_classes] Bias units after fitting. cost_ : list List of floats, the average cross_entropy for each epoch. - train_acc_ : list - List of training accuracies for each epoch - valid_acc_ : list - List of validation accuracies for each epoch """ - def __init__(self, eta=0.5, epochs=50, + def __init__(self, eta=0.5, epochs=50, n_classes=None, minibatches=1, random_seed=None, print_progress=0, dtype=None): @@ -62,99 +66,51 @@ def __init__(self, eta=0.5, epochs=50, self.dtype = dtype self.eta = eta self.epochs = epochs + self.n_classes = n_classes self.minibatches = minibatches self.random_seed = random_seed self.print_progress = print_progress - def fit(self, X, y, - init_weights=True, override_minibatches=None, n_classes=None, - X_valid=None, y_valid=None): - - """Learn weight coefficients from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values. - init_weights : bool (default: True) - (Re)initializes weights to small random floats if True. - override_minibatches : int or None (default: None) - Uses a different number of minibatches for this session. - n_classes : int (default: None) - A positive integer to declare the number of class labels - if not all class labels are present in a partial training set. - Gets the number of class labels automatically if None. - Ignored if init_weights=False. - X_valid : {array-like, sparse matrix}, shape = [n_samples, n_features] - Optional validation set to store the validation accuracy values - for each epoch via self.valid_acc_ - y_valid : array-like, shape = [n_samples] - Target values for X_valid - - Returns - ------- - self : object - - """ - self._check_arrays(X, y) - if override_minibatches: - n_batches = override_minibatches - else: - n_batches = self.minibatches + def _fit(self, X, y, init_params=True,): + self._check_target_array(y) + n_batches = self.minibatches if y.shape[0] % n_batches != 0: raise AttributeError("Training set size %d cannot" " be divided into %d minibatches without" " remainder" % (y.shape[0], n_batches)) - if hasattr(X_valid, 'shape'): - validation = True - else: - validation = False - # Construct the Graph g = tf.Graph() with g.as_default(): - if init_weights: - if n_classes: - self._n_classes = n_classes - else: - self._n_classes = np.max(y) + 1 + if init_params: + if self.n_classes is None: + self.n_classes = np.max(y) + 1 self._n_features = X.shape[1] - tf_weights_, tf_biases_ = self._initialize_weights( + tf_w_, tf_b_ = self._initialize_weights( n_features=self._n_features, - n_classes=self._n_classes) + n_classes=self.n_classes) self.cost_ = [] self.train_acc_ = [] self.valid_acc_ = [] else: - tf_weights_ = tf.Variable(self.weights_) - tf_biases_ = tf.Variable(self.biases_) + tf_w_ = tf.Variable(self.w_) + tf_b_ = tf.Variable(self.b_) # Prepare the training data - y_enc = self._one_hot(y, self._n_classes) + y_enc = self._one_hot(y, self.n_classes, dtype=np.float) n_idx = list(range(y.shape[0])) tf_X = tf.convert_to_tensor(value=X, dtype=self.dtype) tf_y = tf.convert_to_tensor(value=y_enc, dtype=self.dtype) - if validation: - tf_X_valid = tf.convert_to_tensor(value=X_valid, - dtype=self.dtype) - y_valid_enc = self._one_hot(y_valid, self._n_classes) - tf_y_valid = tf.convert_to_tensor(value=y_valid_enc, - dtype=self.dtype) - tf_idx = tf.placeholder(tf.int32, shape=[int(y.shape[0] / n_batches)]) X_batch = tf.gather(params=tf_X, indices=tf_idx) y_batch = tf.gather(params=tf_y, indices=tf_idx) # Setup the graph for minimizing cross entropy cost - net = tf.matmul(X_batch, tf_weights_) + tf_biases_ + net = tf.matmul(X_batch, tf_w_) + tf_b_ cross_entropy = tf.nn.softmax_cross_entropy_with_logits(net, y_batch) cost = tf.reduce_mean(cross_entropy) @@ -165,45 +121,34 @@ def fit(self, X, y, # Initializing the variables init = tf.initialize_all_variables() - # random seed for shuffling - if self.random_seed: - np.random.seed(self.random_seed) - # Launch the graph with tf.Session(graph=g) as sess: sess.run(init) self.init_time_ = time() for epoch in range(self.epochs): - if self.minibatches > 1: - n_idx = np.random.permutation(n_idx) - minis = np.array_split(n_idx, self.minibatches) costs = [] - for idx in minis: + for idx in self._yield_minibatches_idx( + n_batches=self.minibatches, + data_ary=y, + shuffle=True): + _, c = sess.run([train, cost], feed_dict={tf_idx: idx}) costs.append(c) avg_cost = np.mean(costs) self.cost_.append(avg_cost) # compute prediction accuracy - train_acc = self._accuracy(y, tf_X, tf_weights_, tf_biases_) + train_acc = self._accuracy(y, tf_X, tf_w_, tf_b_) self.train_acc_.append(train_acc) - if validation: - valid_acc = self._accuracy(y_valid, tf_X_valid, - tf_weights_, tf_biases_) - self.valid_acc_.append(valid_acc) - else: - valid_acc = None - self._print_progress(epoch + 1, - cost=avg_cost, - train_acc=train_acc, - valid_acc=valid_acc) + if self.print_progress: + self._print_progress(epoch=i + 1, cost=avg_cost) - self.weights_ = tf_weights_.eval() - self.biases_ = tf_biases_.eval() + self.w_ = tf_w_.eval() + self.b_ = tf_b_.eval() - def _accuracy(self, y, tf_X, tf_weights_, tf_biases_): - logits = tf.nn.softmax(tf.matmul(tf_X, tf_weights_) + - tf_biases_) + def _accuracy(self, y, tf_X, tf_w_, tf_b_): + logits = tf.nn.softmax(tf.matmul(tf_X, tf_w_) + + tf_b_) y_pred = np.argmax(logits.eval(), axis=1) acc = np.sum(y == y_pred, axis=0) / float(y.shape[0]) return acc @@ -219,21 +164,7 @@ def _initialize_weights(self, n_features, n_classes): b = tf.Variable(tf.zeros([n_classes])) return w, b - def predict(self, X): - """Predict class labels of X. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - - Returns - ---------- - class_labels : array-like, shape = [n_samples] - Predicted class labels. - - """ + def _predict(self, X): return np.argmax(self.predict_proba(X=X), axis=1) def predict_proba(self, X): @@ -251,12 +182,12 @@ def predict_proba(self, X): """ self._check_arrays(X) - if not hasattr(self, 'weights_'): + if not hasattr(self, 'w_'): raise AttributeError('The model has not been fitted, yet.') with tf.Session(): tf.initialize_all_variables().run() tf_X = tf.convert_to_tensor(value=X, dtype=self.dtype) - logits = tf.nn.softmax(tf.matmul(tf_X, self.weights_) + - self.biases_) + logits = tf.nn.softmax(tf.matmul(tf_X, self.w_) + + self.b_) return logits.eval() diff --git a/mlxtend/tf_cluster/tests/test_tf_base.py b/mlxtend/tf_cluster/tests/test_tf_base.py deleted file mode 100644 index 1cbe06911..000000000 --- a/mlxtend/tf_cluster/tests/test_tf_base.py +++ /dev/null @@ -1,71 +0,0 @@ -# Sebastian Raschka 2014-2016 -# mlxtend Machine Learning Library Extensions -# Author: Sebastian Raschka -# -# License: BSD 3 clause - -from mlxtend.tf_cluster.tf_base import _TfBaseCluster -import numpy as np -from mlxtend.utils import assert_raises - - -def test_init(): - cl = _TfBaseCluster(print_progress=0, random_seed=1) - - -def test_check_array_1(): - X = np.array([1, 2, 3]) - cl = _TfBaseCluster(print_progress=0, random_seed=1) - assert_raises(ValueError, - 'X must be a 2D array. Try X[:, numpy.newaxis]', - cl._check_array, - X) - - -def test_check_array_2(): - X = list([[1], [2], [3]]) - cl = _TfBaseCluster(print_progress=0, random_seed=1) - - assert_raises(ValueError, - 'X must be a numpy array', - cl._check_array, - X) - - -def test_check_array_3(): - X = np.array([[1], [2], [3]]) - cl = _TfBaseCluster(print_progress=0, random_seed=1) - cl._check_array(X) - - -def test_fit(): - X = np.array([[1], [2], [3]]) - tfr = _TfBaseCluster(print_progress=0, random_seed=1) - tfr.fit(X) - - -def test_predict_1(): - X = np.array([[1], [2], [3]]) - cl = _TfBaseCluster(print_progress=0, random_seed=1) - - assert_raises(AttributeError, - 'Model is not fitted, yet.', - cl.predict, - X) - - -def test_predict_2(): - X = np.array([[1], [2], [3]]) - cl = _TfBaseCluster(print_progress=0, random_seed=1) - - cl.fit(X) - cl.predict(X) - - -def test_shuffle(): - X = np.array([[1], [2], [3]]) - y = np.array([1, 2, 3]) - cl = _TfBaseCluster(print_progress=0, random_seed=1) - X_sh, y_sh = cl._shuffle(arrays=[X, np.array(y)]) - np.testing.assert_equal(X_sh, np.array([[1], [3], [2]])) - np.testing.assert_equal(y_sh, np.array([1, 3, 2])) diff --git a/mlxtend/tf_cluster/tests/test_tf_kmeans.py b/mlxtend/tf_cluster/tests/test_tf_kmeans.py index 98af304fc..8bd42e877 100644 --- a/mlxtend/tf_cluster/tests/test_tf_kmeans.py +++ b/mlxtend/tf_cluster/tests/test_tf_kmeans.py @@ -57,3 +57,26 @@ def test_three_blobs_centroids(): km.fit(X) np.testing.assert_almost_equal(centroids, km.centroids_, decimal=2) + + +def test_continue_training(): + km = TfKmeans(k=3, + max_iter=1, + random_seed=1, + print_progress=0) + + first_iter = np.array([[-1.33, 3.26], + [1.95, 0.99], + [1.09, 4.26]]) + + second_iter = np.array([[-1.5947298, 2.92236966], + [2.06521743, 0.96137409], + [0.9329651, 4.35420713]]) + + km.fit(X) + np.testing.assert_almost_equal(first_iter, km.centroids_, decimal=2) + assert km.iterations_ == 1, km.iterations_ + + km.fit(X, init_params=False) + np.testing.assert_almost_equal(second_iter, km.centroids_, decimal=2) + assert km.iterations_ == 2, km.iterations_ diff --git a/mlxtend/tf_cluster/tf_base.py b/mlxtend/tf_cluster/tf_base.py deleted file mode 100644 index f9332d65b..000000000 --- a/mlxtend/tf_cluster/tf_base.py +++ /dev/null @@ -1,120 +0,0 @@ -# Sebastian Raschka 2014-2016 -# mlxtend Machine Learning Library Extensions -# -# Base Clusteer (Clutering Parent Class) -# Author: Sebastian Raschka -# -# License: BSD 3 clause - -import numpy as np -from sys import stderr -from time import time -import tensorflow as tf - - -class _TfBaseCluster(object): - - """Parent Class Base Cluster - - A base class that is implemented by - clustering child classes. - - """ - def __init__(self, print_progress=0, random_seed=None, dtype=None): - self.print_progress = print_progress - self.random_seed = random_seed - if dtype is None: - self.dtype = tf.float32 - else: - self.dtype = dtype - self._is_fitted = False - - def fit(self, X): - """Learn cluster centroids from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - - Returns - ------- - self : object - - """ - self._is_fitted = False - self._check_array(X=X) - if self.random_seed is not None: - np.random.seed(self.random_seed) - self._fit(X=X) - self._is_fitted = True - return self - - def _fit(self, X): - # Implemented in child class - pass - - def predict(self, X): - """Predict cluster labels of X. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - - Returns - ---------- - cluster_labels : array-like, shape = [n_samples] - Predicted cluster labels. - - """ - self._check_array(X=X) - if not self._is_fitted: - raise AttributeError('Model is not fitted, yet.') - return self._predict(X) - - def _predict(self, X): - # Implemented in child class - pass - - def _shuffle(self, arrays): - """Shuffle arrays in unison.""" - r = np.random.permutation(len(arrays[0])) - return [ary[r] for ary in arrays] - - def _print_progress(self, iteration, n_iter, - cost=None, time_interval=10): - if self.print_progress > 0: - s = '\rIteration: %d/%d' % (iteration, n_iter) - if cost: - s += ' | Cost %.2f' % cost - if self.print_progress > 1: - if not hasattr(self, 'ela_str_'): - self.ela_str_ = '00:00:00' - if not iteration % time_interval: - ela_sec = time() - self.init_time_ - self.ela_str_ = self._to_hhmmss(ela_sec) - s += ' | Elapsed: %s' % self.ela_str_ - if self.print_progress > 2: - if not hasattr(self, 'eta_str_'): - self.eta_str_ = '00:00:00' - if not iteration % time_interval: - eta_sec = ((ela_sec / float(iteration)) * - n_iter - ela_sec) - self.eta_str_ = self._to_hhmmss(eta_sec) - s += ' | ETA: %s' % self.eta_str_ - stderr.write(s) - stderr.flush() - - def _to_hhmmss(self, sec): - m, s = divmod(sec, 60) - h, m = divmod(m, 60) - return "%d:%02d:%02d" % (h, m, s) - - def _check_array(self, X): - if isinstance(X, list): - raise ValueError('X must be a numpy array') - if not len(X.shape) == 2: - raise ValueError('X must be a 2D array. Try X[:, numpy.newaxis]') diff --git a/mlxtend/tf_cluster/tf_kmeans.py b/mlxtend/tf_cluster/tf_kmeans.py index 6abbaddda..6fc34c427 100644 --- a/mlxtend/tf_cluster/tf_kmeans.py +++ b/mlxtend/tf_cluster/tf_kmeans.py @@ -14,13 +14,13 @@ # # License: BSD 3 clause -from mlxtend.tf_cluster.tf_base import _TfBaseCluster import tensorflow as tf import numpy as np from time import time +from .._base import _BaseCluster -class TfKmeans(_TfBaseCluster): +class TfKmeans(_BaseCluster): """ TensorFlow K-means clustering class. Added in 0.4.1dev @@ -33,6 +33,10 @@ class TfKmeans(_TfBaseCluster): Number of iterations during cluster assignment. Cluster re-assignment stops automatically when the algorithm converged. + convergence_tolerance : float (default: 1e-05) + Compares current centroids with centroids of the previous iteration + using the given tolerance (a small positive float)to determine + if the algorithm converged early. random_seed : int (default: None) Set random state for the initial centroid assignment. print_progress : int (default: 0) @@ -59,27 +63,35 @@ class TfKmeans(_TfBaseCluster): """ def __init__(self, k, max_iter=10, + convergence_tolerance=1e-05, random_seed=None, print_progress=0, dtype=None): super(TfKmeans, self).__init__(print_progress=print_progress, - random_seed=random_seed, - dtype=dtype) + random_seed=random_seed) self.k = k self.max_iter = max_iter + self.convergence_tolerance = convergence_tolerance + if dtype is None: + self.dtype = tf.float32 + else: + self.dtype = dtype - def _fit(self, X): + def _fit(self, X, init_params=True): """Learn cluster centroids from training data. Called in self.fit """ - self.iterations_ = 0 n_samples = X.shape[0] n_features = X.shape[1] # initialize centroids - idx = np.random.choice(n_samples, self.k, replace=False) - self.centroids_ = X[idx] + + if init_params: + self.iterations_ = 0 + # initialize centroids + idx = np.random.choice(n_samples, self.k, replace=False) + self.centroids_ = X[idx] self.g_train = tf.Graph() @@ -128,7 +140,9 @@ def _fit(self, X): feed_dict={tf_X: X, tf_centroids: self.centroids_}) - if (self.centroids_ == new_centroids).all(): + if np.allclose(self.centroids_, new_centroids, + rtol=self.convergence_tolerance, + atol=1e-08, equal_nan=False): break else: self.centroids_ = new_centroids diff --git a/mlxtend/tf_regressor/tests/test_tf_base.py b/mlxtend/tf_regressor/tests/test_tf_base.py deleted file mode 100644 index ac80700ea..000000000 --- a/mlxtend/tf_regressor/tests/test_tf_base.py +++ /dev/null @@ -1,113 +0,0 @@ -# Sebastian Raschka 2014-2016 -# mlxtend Machine Learning Library Extensions -# Author: Sebastian Raschka -# -# License: BSD 3 clause - -from mlxtend.tf_regressor.tf_base import _TfBaseRegressor -import numpy as np -from mlxtend.utils import assert_raises - - -def test_init(): - tfr = _TfBaseRegressor(print_progress=0, random_seed=1) - - -def test_check_arrays_1(): - X = np.array([1, 2, 3]) - y = np.array([1, 1, 1]) - tfr = _TfBaseRegressor(print_progress=0, random_seed=1) - assert_raises(ValueError, - 'X must be a 2D array. Try X[:, numpy.newaxis]', - tfr._check_arrays, - X) - - assert_raises(ValueError, - 'X must be a 2D array. Try X[:, numpy.newaxis]', - tfr._check_arrays, - X, y) - - -def test_check_arrays_2(): - X = np.array([[1], [2], [3]]) - y = np.array([1, 1]) - tfr = _TfBaseRegressor(print_progress=0, random_seed=1) - - assert_raises(ValueError, - 'X and y must contain the same number of samples', - tfr._check_arrays, - X, y) - - -def test_check_arrays_3(): - X = list([[1], [2], [3]]) - tfr = _TfBaseRegressor(print_progress=0, random_seed=1) - - assert_raises(ValueError, - 'X must be a numpy array', - tfr._check_arrays, - X) - - -def test_check_arrays_4(): - X = np.array([[1], [2], [3]]) - y = np.array([1, 2, 3]) - tfr = _TfBaseRegressor(print_progress=0, random_seed=1) - tfr._check_arrays(X, y) - - -def test_check_arrays_5(): - X = np.array([[1], [2], [3]]) - y = [1, 2, 3] - tfr = _TfBaseRegressor(print_progress=0, random_seed=1) - - assert_raises(ValueError, - 'y must be a numpy array.', - tfr._check_arrays, - X, y) - - -def test_check_arrays_6(): - X = np.array([[1], [2], [3]]) - y = X - tfr = _TfBaseRegressor(print_progress=0, random_seed=1) - - assert_raises(ValueError, - 'y must be a 1D numpy array.', - tfr._check_arrays, - X, y) - - -def test_fit(): - X = np.array([[1], [2], [3]]) - y = np.array([1, 2, 3]) - tfr = _TfBaseRegressor(print_progress=0, random_seed=1) - tfr.fit(X, y) - - -def test_predict_1(): - X = np.array([[1], [2], [3]]) - tfr = _TfBaseRegressor(print_progress=0, random_seed=1) - - assert_raises(AttributeError, - 'Model is not fitted, yet.', - tfr.predict, - X) - - -def test_predict_2(): - X = np.array([[1], [2], [3]]) - y = np.array([1, 2, 3]) - tfr = _TfBaseRegressor(print_progress=0, random_seed=1) - - tfr.fit(X, y) - tfr.predict(X) - - -def test_shuffle(): - X = np.array([[1], [2], [3]]) - y = np.array([1, 2, 3]) - tfr = _TfBaseRegressor(print_progress=0, random_seed=1) - X_sh, y_sh = tfr._shuffle(arrays=[X, np.array(y)]) - np.testing.assert_equal(X_sh, np.array([[1], [3], [2]])) - np.testing.assert_equal(y_sh, np.array([1, 3, 2])) diff --git a/mlxtend/tf_regressor/tests/test_tf_linear_regression.py b/mlxtend/tf_regressor/tests/test_tf_linear_regression.py index 7f3ef72af..325ca1f38 100644 --- a/mlxtend/tf_regressor/tests/test_tf_linear_regression.py +++ b/mlxtend/tf_regressor/tests/test_tf_linear_regression.py @@ -24,8 +24,8 @@ def test_univariate_univariate_gradient_descent(): random_seed=1, print_progress=0) gd_lr.fit(X, y) - assert_almost_equal(gd_lr.bias_, np.array([0.11]), decimal=2) - assert_almost_equal(gd_lr.weights_, np.array([0.10]), decimal=2) + assert_almost_equal(gd_lr.b_, np.array([0.11]), decimal=2) + assert_almost_equal(gd_lr.w_, np.array([0.10]), decimal=2) assert_almost_equal(gd_lr.predict(X), y, decimal=1) @@ -36,5 +36,17 @@ def test_multivariate_gradient_descent(): print_progress=0) gd_lr.fit(X2, y) assert_almost_equal(gd_lr.predict(X2), y, decimal=1) - assert_almost_equal(gd_lr.bias_, np.array([0.1]), decimal=2) - assert_almost_equal(gd_lr.weights_, np.array([-1.1, 1.2]), decimal=2) + assert_almost_equal(gd_lr.b_, np.array([0.1]), decimal=2) + assert_almost_equal(gd_lr.w_, np.array([-1.1, 1.2]), decimal=2) + + +def test_continue_training(): + gd_lr = TfLinearRegression(eta=0.005, + epochs=120, + random_seed=1, + print_progress=0) + gd_lr.fit(X2, y) + gd_lr.fit(X2, y, init_params=False) + assert_almost_equal(gd_lr.predict(X2), y, decimal=1) + assert_almost_equal(gd_lr.b_, np.array([0.1]), decimal=2) + assert_almost_equal(gd_lr.w_, np.array([-1.1, 1.2]), decimal=2) diff --git a/mlxtend/tf_regressor/tf_linear_regression.py b/mlxtend/tf_regressor/tf_linear_regression.py index a26a09762..436d41013 100644 --- a/mlxtend/tf_regressor/tf_linear_regression.py +++ b/mlxtend/tf_regressor/tf_linear_regression.py @@ -6,13 +6,13 @@ # # License: BSD 3 clause -from .tf_base import _TfBaseRegressor import numpy as np import tensorflow as tf from time import time +from .._base import _BaseRegressor -class TfLinearRegression(_TfBaseRegressor): +class TfLinearRegression(_BaseRegressor): """Estimator for Linear Regression in TensorFlow using Gradient Descent. Added in version 0.4.1 @@ -41,10 +41,10 @@ def __init__(self, eta=0.1, epochs=50, print_progress=0, Attributes ----------- - weights_ : 1d-array, shape=[n_features] - Model weights after fitting. - bias_ : 1d-array, shape=[1] - Bias unit (intercept term) + w_ : 2d-array, shape={n_features, 1} + Model weights after fitting. + b_ : 1d-array, shape={1,} + Bias unit after fitting. cost_ : list Sum of mean squared errors (MSE) after each epoch; @@ -58,7 +58,7 @@ def __init__(self, eta=0.1, epochs=50, print_progress=0, else: self.dtype = dtype - def fit(self, X, y, init_weights=True): + def _fit(self, X, y, init_weights=True): """Learn weight coefficients from training data. Parameters @@ -77,8 +77,7 @@ def fit(self, X, y, init_weights=True): """ self._is_fitted = False - if not (init_weights is None or isinstance(init_weights, bool)): - raise AttributeError("init_weights must be True or False") + self._check_arrays(X=X, y=y) if self.random_seed: np.random.seed(self.random_seed) @@ -86,10 +85,10 @@ def fit(self, X, y, init_weights=True): self._is_fitted = True return self - def _fit(self, X, y, init_weights=True): - if not hasattr(self, "cost_"): + def _fit(self, X, y, init_params=True): + if init_params: self.cost_ = [] - self.cost_ = [] + g_train = tf.Graph() with g_train.as_default(): @@ -108,7 +107,7 @@ def _fit(self, X, y, init_weights=True): tf_y = tf.convert_to_tensor(value=y[:, np.newaxis], dtype=self.dtype) - if init_weights: + if init_params: w = tf.Variable(tf.truncated_normal(shape=[X.shape[1], 1], seed=self.random_seed, dtype=self.dtype), @@ -116,9 +115,9 @@ def _fit(self, X, y, init_weights=True): b = tf.Variable(tf.zeros(shape=[1]), dtype=self.dtype) else: - w = tf.Variable(self.weights_[:, np.newaxis], + w = tf.Variable(self.w_[:, np.newaxis], dtype=self.dtype) - b = tf.Variable(self.bias_, dtype=self.dtype) + b = tf.Variable(self.b_, dtype=self.dtype) y_pred = self._net_input(tf_X, w, b) mse_cost = tf.reduce_mean(tf.square(y_pred - tf_y)) @@ -135,10 +134,13 @@ def _fit(self, X, y, init_weights=True): for epoch in range(1, self.epochs + 1): _, c = sess.run([train, mse_cost]) self.cost_.append(c) - self._print_progress(epoch, cost=c) + if self.print_progress: + self._print_progress(iteration=(i + 1), + n_iter=self.epochs, + cost=cost) - self.weights_ = w.eval().flatten() - self.bias_ = b.eval() + self.w_ = w.eval().flatten() + self.b_ = b.eval() def predict(self, X): """Predict class labels of X. @@ -163,9 +165,9 @@ def predict(self, X): def _predict(self, X): g_predict = tf.Graph() with g_predict.as_default(): - w = tf.convert_to_tensor(value=self.weights_[:, np.newaxis], + w = tf.convert_to_tensor(value=self.w_[:, np.newaxis], dtype=self.dtype) - b = tf.convert_to_tensor(value=self.bias_, dtype=self.dtype) + b = tf.convert_to_tensor(value=self.b_, dtype=self.dtype) tf_X = tf.convert_to_tensor(value=X, dtype=self.dtype) predict_init = tf.initialize_all_variables() From efa2e3683758ab72ff00deaef19a0e1928f82d40 Mon Sep 17 00:00:00 2001 From: rasbt Date: Sun, 1 May 2016 17:56:27 -0400 Subject: [PATCH 2/3] flake8 --- mlxtend/_base/_base_classifier.py | 2 -- mlxtend/_base/_base_cluster.py | 3 -- mlxtend/_base/_base_estimator.py | 4 --- mlxtend/_base/_base_regressor.py | 2 -- mlxtend/_base/_base_supervised_estimator.py | 2 -- mlxtend/_base/_base_unsupervised_estimator.py | 2 -- mlxtend/_base/tests/test_base_classifier.py | 2 ++ mlxtend/_base/tests/test_base_cluster.py | 4 +-- mlxtend/_base/tests/test_base_estimator.py | 2 ++ mlxtend/_base/tests/test_base_multiclass.py | 10 ------ mlxtend/_base/tests/test_base_multilayer.py | 3 +- mlxtend/_base/tests/test_base_regressor.py | 2 ++ .../tests/test_base_supervised_estimator.py | 2 ++ .../tests/test_base_unsupervised_estimator.py | 4 +-- mlxtend/classifier/ensemble_vote.py | 2 +- mlxtend/classifier/perceptron.py | 1 - mlxtend/classifier/stacking_classification.py | 2 +- mlxtend/classifier/tests/test_adaline.py | 1 - mlxtend/cluster/kmeans.py | 1 - .../tf_classifier/tf_multilayerperceptron.py | 8 ++--- mlxtend/tf_classifier/tf_softmax.py | 3 +- .../tests/test_tf_linear_regression.py | 1 - mlxtend/tf_regressor/tf_linear_regression.py | 31 ++----------------- 23 files changed, 21 insertions(+), 73 deletions(-) diff --git a/mlxtend/_base/_base_classifier.py b/mlxtend/_base/_base_classifier.py index c63d90332..1cedf29e8 100644 --- a/mlxtend/_base/_base_classifier.py +++ b/mlxtend/_base/_base_classifier.py @@ -7,8 +7,6 @@ # License: BSD 3 clause import numpy as np -from sys import stderr -from time import time from ._base_supervised_estimator import _BaseSupervisedEstimator diff --git a/mlxtend/_base/_base_cluster.py b/mlxtend/_base/_base_cluster.py index bd0f86b23..747b46064 100644 --- a/mlxtend/_base/_base_cluster.py +++ b/mlxtend/_base/_base_cluster.py @@ -6,9 +6,6 @@ # # License: BSD 3 clause -import numpy as np -from sys import stderr -from time import time from ._base_unsupervised_estimator import _BaseUnsupervisedEstimator diff --git a/mlxtend/_base/_base_estimator.py b/mlxtend/_base/_base_estimator.py index 047fe214d..dd40a1f11 100644 --- a/mlxtend/_base/_base_estimator.py +++ b/mlxtend/_base/_base_estimator.py @@ -86,10 +86,6 @@ def _predict(self, X): # Implemented in child class pass - def _init_params(self): - # Implemented in child class - pass - def _shuffle_arrays(self, arrays): """Shuffle arrays in unison.""" r = np.random.permutation(len(arrays[0])) diff --git a/mlxtend/_base/_base_regressor.py b/mlxtend/_base/_base_regressor.py index 735d88c74..836399879 100644 --- a/mlxtend/_base/_base_regressor.py +++ b/mlxtend/_base/_base_regressor.py @@ -7,8 +7,6 @@ # License: BSD 3 clause import numpy as np -from sys import stderr -from time import time from ._base_supervised_estimator import _BaseSupervisedEstimator diff --git a/mlxtend/_base/_base_supervised_estimator.py b/mlxtend/_base/_base_supervised_estimator.py index 5d4cadf3d..9857cdebb 100644 --- a/mlxtend/_base/_base_supervised_estimator.py +++ b/mlxtend/_base/_base_supervised_estimator.py @@ -7,8 +7,6 @@ # License: BSD 3 clause import numpy as np -from sys import stderr -from time import time from ._base_estimator import _BaseEstimator diff --git a/mlxtend/_base/_base_unsupervised_estimator.py b/mlxtend/_base/_base_unsupervised_estimator.py index 9676c40fb..935ff3c8c 100644 --- a/mlxtend/_base/_base_unsupervised_estimator.py +++ b/mlxtend/_base/_base_unsupervised_estimator.py @@ -7,8 +7,6 @@ # License: BSD 3 clause import numpy as np -from sys import stderr -from time import time from ._base_estimator import _BaseEstimator diff --git a/mlxtend/_base/tests/test_base_classifier.py b/mlxtend/_base/tests/test_base_classifier.py index 97d779414..602cbfc06 100644 --- a/mlxtend/_base/tests/test_base_classifier.py +++ b/mlxtend/_base/tests/test_base_classifier.py @@ -11,6 +11,8 @@ def test_init(): cl = _BaseClassifier(print_progress=0, random_seed=1) + assert hasattr(cl, 'print_progress') + assert hasattr(cl, 'random_seed') def test_check_labels_ok_1(): diff --git a/mlxtend/_base/tests/test_base_cluster.py b/mlxtend/_base/tests/test_base_cluster.py index 3cb47029f..890b0b96e 100644 --- a/mlxtend/_base/tests/test_base_cluster.py +++ b/mlxtend/_base/tests/test_base_cluster.py @@ -5,9 +5,9 @@ # License: BSD 3 clause from mlxtend._base import _BaseCluster -import numpy as np -from mlxtend.utils import assert_raises def test_init(): cl = _BaseCluster(print_progress=0, random_seed=1) + assert hasattr(cl, 'print_progress') + assert hasattr(cl, 'random_seed') diff --git a/mlxtend/_base/tests/test_base_estimator.py b/mlxtend/_base/tests/test_base_estimator.py index 6f7c316af..5bcb37547 100644 --- a/mlxtend/_base/tests/test_base_estimator.py +++ b/mlxtend/_base/tests/test_base_estimator.py @@ -11,6 +11,8 @@ def test_init(): est = _BaseEstimator(print_progress=0, random_seed=1) + assert hasattr(est, 'print_progress') + assert hasattr(est, 'random_seed') def test_check_array_1(): diff --git a/mlxtend/_base/tests/test_base_multiclass.py b/mlxtend/_base/tests/test_base_multiclass.py index 341851a2c..6b0745745 100644 --- a/mlxtend/_base/tests/test_base_multiclass.py +++ b/mlxtend/_base/tests/test_base_multiclass.py @@ -6,7 +6,6 @@ from mlxtend._base import _BaseMultiClass import numpy as np -from mlxtend.utils import assert_raises def test_default(): @@ -38,12 +37,3 @@ def test_morelabels(): [1., 0., 0., 0.], [0., 1., 0., 0.]]) np.testing.assert_array_equal(expect, out) - -""" -def test_list_morelabels(): - y = [0, 1] - expect = np.array([[1., 0., 0.], - [0., 1., 0.]], dtype='float') - out = one_hot(y, num_labels=3) - np.testing.assert_array_equal(expect, out) -""" diff --git a/mlxtend/_base/tests/test_base_multilayer.py b/mlxtend/_base/tests/test_base_multilayer.py index d55871900..c0383741a 100644 --- a/mlxtend/_base/tests/test_base_multilayer.py +++ b/mlxtend/_base/tests/test_base_multilayer.py @@ -4,7 +4,6 @@ # # License: BSD 3 clause -import numpy as np from mlxtend._base import _BaseMultiLayer @@ -35,6 +34,7 @@ def test_init_from_layermapping(): hidden_layers=[3, 2]) w, b = mlp._init_params_from_layermapping(weight_maps=wm, bias_maps=bm) + """ expect_w = {1: np.array([[0.016, -0.006, -0.005], [-0.011, 0.009, -0.023], [0.017, -0.008, 0.003], @@ -49,6 +49,7 @@ def test_init_from_layermapping(): expect_b = {1: np.array([0., 0., 0.]), 2: np.array([0., 0.]), 'out': np.array([0., 0., 0., 0.])} + """ assert len(w.keys()) == 3 assert len(b.keys()) == 3 diff --git a/mlxtend/_base/tests/test_base_regressor.py b/mlxtend/_base/tests/test_base_regressor.py index 5b641cd6b..5fedb739c 100644 --- a/mlxtend/_base/tests/test_base_regressor.py +++ b/mlxtend/_base/tests/test_base_regressor.py @@ -11,6 +11,8 @@ def test_init(): reg = _BaseRegressor(print_progress=0, random_seed=1) + assert hasattr(reg, 'print_progress') + assert hasattr(reg, 'random_seed') def test_float_ok(): diff --git a/mlxtend/_base/tests/test_base_supervised_estimator.py b/mlxtend/_base/tests/test_base_supervised_estimator.py index 7a9a16f5e..f56206cf8 100644 --- a/mlxtend/_base/tests/test_base_supervised_estimator.py +++ b/mlxtend/_base/tests/test_base_supervised_estimator.py @@ -11,6 +11,8 @@ def test_init(): est = _BaseSupervisedEstimator(print_progress=0, random_seed=1) + assert hasattr(est, 'print_progress') + assert hasattr(est, 'random_seed') def test_fit_1(): diff --git a/mlxtend/_base/tests/test_base_unsupervised_estimator.py b/mlxtend/_base/tests/test_base_unsupervised_estimator.py index 145dccc52..9ae96ec9f 100644 --- a/mlxtend/_base/tests/test_base_unsupervised_estimator.py +++ b/mlxtend/_base/tests/test_base_unsupervised_estimator.py @@ -6,15 +6,15 @@ from mlxtend._base import _BaseUnsupervisedEstimator import numpy as np -from mlxtend.utils import assert_raises def test_init(): est = _BaseUnsupervisedEstimator(print_progress=0, random_seed=1) + assert hasattr(est, 'print_progress') + assert hasattr(est, 'random_seed') def test_fit(): X = np.array([[1], [2], [3]]) - y = np.array([1, 2, 3]) est = _BaseUnsupervisedEstimator(print_progress=0, random_seed=1) est.fit(X=X) diff --git a/mlxtend/classifier/ensemble_vote.py b/mlxtend/classifier/ensemble_vote.py index 09978b72d..d9c0b741a 100644 --- a/mlxtend/classifier/ensemble_vote.py +++ b/mlxtend/classifier/ensemble_vote.py @@ -19,7 +19,7 @@ class EnsembleVoteClassifier(BaseEstimator, ClassifierMixin, TransformerMixin): - + """Soft Voting/Majority Rule classifier for scikit-learn estimators. Parameters diff --git a/mlxtend/classifier/perceptron.py b/mlxtend/classifier/perceptron.py index 2502ab9ae..6801f0bad 100644 --- a/mlxtend/classifier/perceptron.py +++ b/mlxtend/classifier/perceptron.py @@ -62,7 +62,6 @@ def _fit(self, X, y, init_params=True): random_seed=self.random_seed) self.cost_ = [] - n_idx = list(range(y_data.shape[0])) self.init_time_ = time() for i in range(self.epochs): diff --git a/mlxtend/classifier/stacking_classification.py b/mlxtend/classifier/stacking_classification.py index 867b6651a..5db757754 100644 --- a/mlxtend/classifier/stacking_classification.py +++ b/mlxtend/classifier/stacking_classification.py @@ -18,7 +18,7 @@ class StackingClassifier(BaseEstimator, ClassifierMixin, TransformerMixin): - + """A Stacking classifier for scikit-learn estimators for classification. Parameters diff --git a/mlxtend/classifier/tests/test_adaline.py b/mlxtend/classifier/tests/test_adaline.py index 7ae732dee..1eb2dcba8 100644 --- a/mlxtend/classifier/tests/test_adaline.py +++ b/mlxtend/classifier/tests/test_adaline.py @@ -8,7 +8,6 @@ from mlxtend.classifier import Adaline from mlxtend.data import iris_data from mlxtend.utils import assert_raises -from nose.tools import raises # Iris Data diff --git a/mlxtend/cluster/kmeans.py b/mlxtend/cluster/kmeans.py index 278d8ec5b..51f02ba4e 100644 --- a/mlxtend/cluster/kmeans.py +++ b/mlxtend/cluster/kmeans.py @@ -8,7 +8,6 @@ import numpy as np -from time import time from .._base import _BaseCluster # from scipy.spatial.distance import euclidean diff --git a/mlxtend/tf_classifier/tf_multilayerperceptron.py b/mlxtend/tf_classifier/tf_multilayerperceptron.py index eb40605a8..1cbce3070 100644 --- a/mlxtend/tf_classifier/tf_multilayerperceptron.py +++ b/mlxtend/tf_classifier/tf_multilayerperceptron.py @@ -204,7 +204,7 @@ def _fit(self, X, y, init_params=True): y_batch = tf.gather(params=tf_y, indices=tf_idx) # Setup the graph for minimizing cross entropy cost - net = self._predict(tf_X=tf_X, + net = self._predict(tf_X=X_batch, tf_weights=tf_weights, tf_biases=tf_biases, activations=self.activations, @@ -212,7 +212,7 @@ def _fit(self, X, y, init_params=True): # Define loss and optimizer cross_entropy = tf.nn.softmax_cross_entropy_with_logits(net, - tf_y) + y_batch) cost = tf.reduce_mean(cross_entropy) train = self.optimizer_.minimize(cost, global_step=self.global_step_) @@ -239,10 +239,6 @@ def _fit(self, X, y, init_params=True): avg_cost = np.mean(costs) self.cost_.append(avg_cost) - # compute prediction accuracy - train_acc = self._accuracy(y, tf_X, tf_weights, tf_biases, - self.activations) - self._print_progress(iteration=epoch + 1, n_iter=self.epochs, cost=avg_cost) diff --git a/mlxtend/tf_classifier/tf_softmax.py b/mlxtend/tf_classifier/tf_softmax.py index e37c068a4..2843bf24b 100644 --- a/mlxtend/tf_classifier/tf_softmax.py +++ b/mlxtend/tf_classifier/tf_softmax.py @@ -100,7 +100,6 @@ def _fit(self, X, y, init_params=True,): # Prepare the training data y_enc = self._one_hot(y, self.n_classes, dtype=np.float) - n_idx = list(range(y.shape[0])) tf_X = tf.convert_to_tensor(value=X, dtype=self.dtype) tf_y = tf.convert_to_tensor(value=y_enc, dtype=self.dtype) @@ -141,7 +140,7 @@ def _fit(self, X, y, init_params=True,): train_acc = self._accuracy(y, tf_X, tf_w_, tf_b_) self.train_acc_.append(train_acc) if self.print_progress: - self._print_progress(epoch=i + 1, cost=avg_cost) + self._print_progress(epoch=epoch + 1, cost=avg_cost) self.w_ = tf_w_.eval() self.b_ = tf_b_.eval() diff --git a/mlxtend/tf_regressor/tests/test_tf_linear_regression.py b/mlxtend/tf_regressor/tests/test_tf_linear_regression.py index 325ca1f38..a91d56f50 100644 --- a/mlxtend/tf_regressor/tests/test_tf_linear_regression.py +++ b/mlxtend/tf_regressor/tests/test_tf_linear_regression.py @@ -6,7 +6,6 @@ from mlxtend.tf_regressor import TfLinearRegression -from mlxtend.data import boston_housing_data import numpy as np from numpy.testing import assert_almost_equal diff --git a/mlxtend/tf_regressor/tf_linear_regression.py b/mlxtend/tf_regressor/tf_linear_regression.py index 436d41013..70ad9528a 100644 --- a/mlxtend/tf_regressor/tf_linear_regression.py +++ b/mlxtend/tf_regressor/tf_linear_regression.py @@ -58,33 +58,6 @@ def __init__(self, eta=0.1, epochs=50, print_progress=0, else: self.dtype = dtype - def _fit(self, X, y, init_weights=True): - """Learn weight coefficients from training data. - - Parameters - ---------- - X : {array-like, sparse matrix}, shape = [n_samples, n_features] - Training vectors, where n_samples is the number of samples and - n_features is the number of features. - y : array-like, shape = [n_samples] - Target values. - init_weights : bool (default: True) - Reinitialize weights - - Returns - ------- - self : object - - """ - self._is_fitted = False - - self._check_arrays(X=X, y=y) - if self.random_seed: - np.random.seed(self.random_seed) - self._fit(X=X, y=y, init_weights=init_weights) - self._is_fitted = True - return self - def _fit(self, X, y, init_params=True): if init_params: self.cost_ = [] @@ -135,9 +108,9 @@ def _fit(self, X, y, init_params=True): _, c = sess.run([train, mse_cost]) self.cost_.append(c) if self.print_progress: - self._print_progress(iteration=(i + 1), + self._print_progress(iteration=(epoch + 1), n_iter=self.epochs, - cost=cost) + cost=c) self.w_ = w.eval().flatten() self.b_ = b.eval() From ac829118903fa3f7a93d15f3cda00624e9b8d5c8 Mon Sep 17 00:00:00 2001 From: rasbt Date: Sun, 1 May 2016 19:12:29 -0400 Subject: [PATCH 3/3] print_progress fixes and doc update --- docs/sources/CHANGELOG.md | 2 +- .../user_guide/classifier/Adaline.ipynb | 155 +-- .../classifier/Adaline_files/Adaline_20_1.png | Bin 7848 -> 7783 bytes .../classifier/Adaline_files/Adaline_20_3.png | Bin 6743 -> 6863 bytes .../classifier/Adaline_files/Adaline_22_1.png | Bin 7803 -> 7812 bytes .../classifier/Adaline_files/Adaline_22_2.png | Bin 7769 -> 7716 bytes .../classifier/Adaline_files/Adaline_24_1.png | Bin 7740 -> 7785 bytes .../classifier/Adaline_files/Adaline_24_2.png | Bin 6761 -> 8170 bytes .../classifier/LogisticRegression.ipynb | 161 +-- .../LogisticRegression_46_1.png | Bin 8899 -> 8484 bytes .../LogisticRegression_46_2.png | Bin 6585 -> 6638 bytes .../LogisticRegression_52_1.png | Bin 8670 -> 8602 bytes .../LogisticRegression_52_2.png | Bin 8014 -> 8011 bytes .../LogisticRegression_55_1.png | Bin 9238 -> 8964 bytes .../LogisticRegression_55_2.png | Bin 7819 -> 8501 bytes .../classifier/MultiLayerPerceptron.ipynb | 856 +++++++++++++++ .../MultiLayerPerceptron_26_0.png | Bin 0 -> 13083 bytes .../MultiLayerPerceptron_27_0.png | Bin 0 -> 9909 bytes .../MultiLayerPerceptron_31_1.png | Bin 0 -> 7889 bytes .../MultiLayerPerceptron_34_0.png | Bin 0 -> 8574 bytes .../MultiLayerPerceptron_39_0.png | Bin 0 -> 4563 bytes .../MultiLayerPerceptron_45_1.png | Bin 0 -> 7105 bytes .../user_guide/classifier/NeuralNetMLP.ipynb | 987 ------------------ .../user_guide/classifier/Perceptron.ipynb | 87 +- .../Perceptron_files/Perceptron_25_1.png | Bin 8829 -> 8198 bytes .../Perceptron_files/Perceptron_25_3.png | Bin 6911 -> 7615 bytes .../classifier/SoftmaxRegression.ipynb | 136 ++- .../SoftmaxRegression_34_1.png | Bin 7785 -> 11287 bytes .../SoftmaxRegression_34_2.png | Bin 0 -> 8058 bytes .../SoftmaxRegression_40_0.png | Bin 12114 -> 11858 bytes .../SoftmaxRegression_40_1.png | Bin 14636 -> 8243 bytes .../regressor/LinearRegression.ipynb | 222 ++-- .../LinearRegression_19_2.png | Bin 6447 -> 6474 bytes .../LinearRegression_20_0.png | Bin 6291 -> 5643 bytes .../LinearRegression_22_1.png | Bin 5684 -> 6443 bytes .../LinearRegression_23_0.png | Bin 0 -> 7329 bytes .../LinearRegression_25_1.png | Bin 0 -> 6411 bytes .../LinearRegression_26_0.png | Bin 0 -> 7757 bytes .../TfMultiLayerPerceptron.ipynb | 288 +---- .../TfMultiLayerPerceptron_15_0.png | Bin 0 -> 7729 bytes .../TfMultiLayerPerceptron_17_0.png | Bin 10991 -> 7459 bytes .../TfMultiLayerPerceptron_25_0.png | Bin 0 -> 7503 bytes .../TfMultiLayerPerceptron_25_1.png | Bin 6834 -> 11215 bytes .../TfMultiLayerPerceptron_29_0.png | Bin 4651 -> 8053 bytes .../tf_classifier/TfSoftmaxRegression.ipynb | 215 ++-- .../TfSoftmaxRegression_22_1.png | Bin 7954 -> 7737 bytes .../TfSoftmaxRegression_22_2.png | Bin 11050 -> 10945 bytes .../TfSoftmaxRegression_25_1.png | Bin 9220 -> 8939 bytes .../tf_regressor/TfLinearRegression.ipynb | 68 +- .../TfLinearRegression_17_2.png | Bin 8507 -> 7871 bytes mlxtend/__init__.py | 2 +- mlxtend/_base/_base_estimator.py | 2 + mlxtend/classifier/adaline.py | 2 +- mlxtend/classifier/logistic_regression.py | 2 +- mlxtend/classifier/multilayerperceptron.py | 8 +- mlxtend/classifier/perceptron.py | 6 +- mlxtend/classifier/softmax_regression.py | 11 +- mlxtend/regressor/linear_regression.py | 2 +- .../tf_classifier/tf_multilayerperceptron.py | 4 +- mlxtend/tf_classifier/tf_softmax.py | 9 +- 60 files changed, 1443 insertions(+), 1782 deletions(-) create mode 100644 docs/sources/user_guide/classifier/MultiLayerPerceptron.ipynb create mode 100644 docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_26_0.png create mode 100644 docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_27_0.png create mode 100644 docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_31_1.png create mode 100644 docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_34_0.png create mode 100644 docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_39_0.png create mode 100644 docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_45_1.png delete mode 100644 docs/sources/user_guide/classifier/NeuralNetMLP.ipynb create mode 100644 docs/sources/user_guide/classifier/SoftmaxRegression_files/SoftmaxRegression_34_2.png create mode 100644 docs/sources/user_guide/regressor/LinearRegression_files/LinearRegression_23_0.png create mode 100644 docs/sources/user_guide/regressor/LinearRegression_files/LinearRegression_25_1.png create mode 100644 docs/sources/user_guide/regressor/LinearRegression_files/LinearRegression_26_0.png create mode 100644 docs/sources/user_guide/tf_classifier/TfMultiLayerPerceptron_files/TfMultiLayerPerceptron_15_0.png create mode 100644 docs/sources/user_guide/tf_classifier/TfMultiLayerPerceptron_files/TfMultiLayerPerceptron_25_0.png diff --git a/docs/sources/CHANGELOG.md b/docs/sources/CHANGELOG.md index e2869d657..1acd94d83 100755 --- a/docs/sources/CHANGELOG.md +++ b/docs/sources/CHANGELOG.md @@ -2,7 +2,7 @@ --- -### Version 0.4.1dev +### Version 0.4.1 (2016-05-01) ##### New Features diff --git a/docs/sources/user_guide/classifier/Adaline.ipynb b/docs/sources/user_guide/classifier/Adaline.ipynb index 2f6d94266..c75542ae1 100644 --- a/docs/sources/user_guide/classifier/Adaline.ipynb +++ b/docs/sources/user_guide/classifier/Adaline.ipynb @@ -25,7 +25,7 @@ "output_type": "stream", "text": [ "Sebastian Raschka \n", - "last updated: 2016-04-30 \n", + "last updated: 2016-05-01 \n", "\n", "CPython 3.5.1\n", "IPython 4.0.3\n", @@ -206,17 +206,14 @@ }, "outputs": [ { - "ename": "ImportError", - "evalue": "No module named 'mlxtend.classifier.base'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mmlxtend\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdata\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0miris_data\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mmlxtend\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mevaluate\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mplot_decision_regions\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mmlxtend\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mclassifier\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mAdaline\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 4\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mmatplotlib\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpyplot\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/Sebastian/Dropbox/_ot/code/mlxtend/mlxtend/classifier/__init__.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;31m# License: BSD 3 clause\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 7\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mperceptron\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mPerceptron\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 8\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0madaline\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mAdaline\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mlogistic_regression\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mLogisticRegression\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m/Users/Sebastian/Dropbox/_ot/code/mlxtend/mlxtend/classifier/perceptron.py\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 9\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mtime\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mtime\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 11\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0;34m.\u001b[0m\u001b[0mbase\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0m_BaseClassifier\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 12\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 13\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mImportError\u001b[0m: No module named 'mlxtend.classifier.base'" - ] + "data": { + "image/png": "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\n2r59O4sWXcPzzz9J8p0czdbB2LF788Y3nsHIkdnSr5O3mbWtBx9cyIEHTuDEEz/AqFGd1XdosG3b\ntnLHHfN58MGFHHnkyZna8py3mbWtdeuWc8wx/60lEjfAqFGdvOENx7Nu3fLMbTl5m1nb2r79ecaP\nn9jsMHYzYcJktm/fkrkdJ28za2sdHa2V5pJ4ss+/t9ZRmZlZTZy8zcxKyMnbzCwHa9eu5G1vm8a0\naSM58sjxXHHFxQ3tz8nbzCwH55wzh87OTu69989ceunX+cY3vsB99/2sYf05eZuZZbRx4waWL+/h\n4ou/zoQJk3jb205j2rTXcO21X25Yn/6QjplZH289dh92bH5ut+dG7DGO/7hrbb/bL116N5KYPv31\nu56bOvWvWLLk3obF6ORtZtbHjs3P8egeL9ntuUP7JPNKGzduoLNz9w8CjR8/iRdeeL4h8YGnTczM\nMps4cTJbt27d7blnntnAmDFjG9ank7eZWUbTpx9DRLB06T27nlux4jccfPChDevTydvMrI8Re4zj\n0M2bdvs3Yo9xA24/ceJkDjvs1Vx22UfYuHEDt9xyHcuX/5rTT/9Ew2L0nLeZWR8DXZgczJVX3sLf\n//1JvP71L2PMmLGcc85nmDnz+AZEl3DyNjPLwT77HMCtty4rrD9Pm5iZlZCTt5lZCTl5m5mVkJO3\nmVkJOXmbmZWQk7eZWQk5eZuZlZCTt5lZCTl5m5mVkJO3mVkOPve5D3Pssftw2GEjeO97Zza8v8zJ\nW9L+kn4m6SFJPZLOzSMwM7MymTLlYM4++5846qhjC+kvj5H3duC8iDgceD3wEUmvyqFdM7Om2bJl\nCxdf/CE2b95U0/Znn30hZ555PhMnTm5wZInMyTsi1kbE0vTxc8ByYErWds3Mmum73/0q8+d3c9VV\n/9bsUPqV65y3pIOB6cB9ebZrZlakLVu2cM01NzJy5AXccMMPah59Fym35C1pHHAz8PF0BG5mVkrf\n/e5X2bRpKmPHns2WLUe15Og7l/t5SxpJkrivi4j5/W3T09NNT0/3ruWurll0dc3Ko3szs9z0jroj\nPsy2bYuJmMUNN8zlrLPOZ48+X0rcTHl9GcNVwLKI+MpAGzhZm1kZrFu3lkmTXsKYMdcC1wLQ2TmJ\ntWsf55BDpg2437ZtW9my5QV27tzBjh072Lz5OUaN6mTUqM4B98kic/KWdAzwfqBH0hIggM9ExG1Z\n2zYzK9p++x3E/Pm/qHu/888/lR//+Pu7lo84Yjwnn/xuvvzlm/IMb5fMyTsi7gZG5BCLmVlpXX75\nzVx+eXH9+ROWZmYl5ORt1iDPPru+2SFYG3PyNmuAVatW8KlPzWbVqhXNDsXalJO3WQPMn/9NNm48\nlFtu+VazQ7E25eRtlrNVq1awdOmv2Wuvr7NkyYMefTdVB9u3b292ELtJ4smeep28zXI2f/43gTMY\nMWIicIZH3000evRkli69p2US+Pbt21m69B5Gj85+86q8PqRjZsD69WtYuvROOjrW8sILP6WjYytL\nlixn/fo17Lnnvs0Ob9iZOfN93HffDSxatAjY2exwgA5Gj57MzJnvy9ySIiKHgKpbsIBiOjJrop07\nd7Jy5TJ27HhxpDdixEgOOGAaHR1+o2v1mzMH9fe8R95mOero6OCgg/6q2WG0nGefXc/48Xs2O4y2\n4qGAmTWUyyYbw8nbzBrKZZON4eRtZg3jssnGcfI2s4Zx2WTj+IKlmTWEyyYby8nbzBpi0qS9ueii\nb/+XsslJk/ZuYlTtw8nbrEnWrHmMffd9RUP7aGaJnssmG8tz3mZNsHjx7XzkI0ezePHtDevDJXrt\nzcnbrAnmzbuMHTtmMm/evzSsD5fotTcnb7OCLV58O6tXb2TkyGtYvfrphoy+XaLX/py8zQo2b95l\nwEfp6NgL+GhDRt8u0Wt/vmBpVqDf/W4pq1c/CtzEjh3zga2sXv0Iv/vdUg45ZHoufbhEb3jwXQXN\nCrR9+3YeeGAB27Zt3fXcqFGdHHXUHEaOzGcs5TsbtpeB7iro5G2lk7X8rajyuWr95BFHHn20QpxF\ntVFGAyVv/xm2Usla/lZU+Vy1fvKII48+WiHOotpoN07eVipZy9+KKp+r1k8eceTRRyvEWVQb7cbJ\n20oja/lbUeVz1frJI448+miFOItqox05eVtpZC1/K6p8rlo/ecSRRx+tEGdRbbQjlwpaKWQtfyuq\nfK5aP3nEkUcfrRBnUW20K1ebWClkLX8rqnyuWj95xJFHH60QZ1FtlJ1LBa0lDNdyr6Eq4s6DeSii\nZDFrDGXlUkFrOpd71aeIOw/moYiSxawxtCMnbyuMy73qU8SdB/NQRMli1hjaUS7JW9I8SU9K+nUe\n7Vn7cblXfYq482AeiihZzBpDu8pr5H01cFJObVkbcrlXfYq482AeiihZzBpDu8qlVDAi7pJ0UB5t\nWftxuVd9irjzYB6KKFnMGkM7y63aJE3eCyLi1f2td7XJ8OVyr/oUcefBPBRRspg1hnbQ8FLBasn7\n85/vjp6e7l3LXV2z6OqalUvfZmbtaqDkXdifcSdrK0q12uhHH/0Vhx565KBt1LJNEbLWTxdRX51X\nG1afPN9XKP1n1jTVaqMXLpzHeecdz8KF8wZso5ZtipC1frqI+uq82rD65VUqeD3wS2CqpD9KOjOP\nds3qVa02+uqrvwAcm/7fv1q2KULW+uki6qvzasPql0vyjohTI2K/iBgdEQdGxNV5tGtWj2q10QsX\nzmPTppHAtWzaNLLfkXUt2xQha/10EfXVebVhQ9Mel2PNqF4bnYykz0XaCzi335F1LdsUIWv9dBH1\n1Xm1YUPTOnVHZhlUq41esuQONm3aAPw/In4AbGPTpg0sWXIHRxxxIkBN2xQha/10EfXVebVhQ+e7\nClpbqFYbvXXrVm677Uq2bt2ya31n52hmzz6Hzs5OgJq2KULW+uki6qvzasOq8y1hbdgoovStqFu1\nugTPfEtYGxaKKH0r6latLsGzwTh5W1spovStqFu1ugTPBuPkbW2jiNK3om7V6hI8q8bJ29pGEaVv\nRd2q1SV4Vo1LBa0tFFH6VtStWl2CZ7VwtYm1hSJK34q6VatL8KySSwWt4VqlrC2PO+2ZtQqXClpD\ntUpZWx532jMrAydvy0WrlLXlcac9szJw8rbMWqWsLY877ZmVhZO3ZdYqZW153GnPrCxcKmiZtEpZ\nWx532jMrE1ebWCatUtaWx532zFqRSwVtULWUzxV1J72siriroL+014riUkEbUC3lc0XdSS+rIu4q\n6C/ttVbg5G01lc8VdSe9rIq4q6C/tNdagZP3MFdL+VxRd9LLqoi7CvpLe61VOHkPc7WUzxV1J72s\niriroL+011qFSwWHsVrK54q6k15WRdxV0F/aa63E1SbDWC3lc0XdSS+rIu4q6C/ttWZwqaCZWQkN\nlLxbZ+hkZlYS999f/z4rVsDqny6re785f57W7/NO3mY2bM2dO8Qdly9jv7Eb6t7tgsPuYs4F/Sfj\ngTl5m1mbmnvhuvp3evYZeP55LjhsQd27zjlhMZx2Wv19DpCIh8LJ28xaxtwz659W6LXohEvr3+m0\n0xhaQs0vCQ+Vk7eZDWoo87vdXx9aEt5v7Aa+d+X6Ie0LQxkJl5eTt9kw8J3v1L/P6tUMeW531svX\ncNkXR9ffqdUsl+QtaTZwOcknNudFxBfzaNfM/qu5c4F1dc7xPvUks15e32h4KnDZCTcNcW7XibvR\nMidvSR3A14ATgNXAA5LmR8TDWds2a2dzz/n90HZ8/vn653enToUZM4bQ2fCaiiiTPEbeM4BHIuJx\nAEk3AqcATt42LGS6yPbhG+rfacYMnFQtj+Q9BVhZsfwESUI3a4r7708+EFGvoXyAArJeZPOvig2N\nL1hay8ryAYp653cBTjvssSF8gMKsOfJI3quAAyuW90+f201PTzc9Pd27lru6ZtHVNSuH7q3Vzb1w\nXfKBiHqV+AMUZo2W+cZUkkYAvyW5YLkGuB94X0Qsr9zON6Yqv+bM7ZoNc3PmNObGVBGxQ9JHgYW8\nWCq4vMpulpPyfIDCidgsT7nMeUfEbcAr82hruLr/fujurnMnf4DCbNjyBcucDekDFABPPVn3/O7Q\n53aduM3Kzsl7AHMvXAdPPTmkfRedcGnyoYh61T3H6wtsZsNVqZJ3kfO7AIuufmyIe/oDFGbWWIUn\n76wfoKh3jne/sWS4yGZm1poK+w7LN05bl3Q0hBvkAMzYyx+gMLNhqFGlgrVa1HXOiwv+AIWZWSbF\nTZsMKWGbmVl/SnXB0prj+PPO45mNG3ctT5g4kZ996UtNjMjMnLytqmc2buQ/J07ctfy6ikRuZs3R\n0ewAzMysfk7eZmYl5GkTq2rCxIm7TZVMqJhCMbPmcPK2qnxx0qz1eNrEzKyEPPK2zFxKaFY8J2/L\nzKWEZsXztImZWQk5eZuZlZCnTSwzlxKaFc/J2zLzxUmz4nnaxMyshDzytqqqlQJOec97YNu2F3cY\nNYpVN92Uexx7nXIKoyq+PGSbxLr583Ptw2WPVhZO3lZV1VLAbdtYNWrUrsUplYk8R6MiWKsXv1Rk\nnwZ8C5TLHq0sPG1iZlZCTt5mZiXkaROrqmop4KhRu0+VVEyh5GmbtNtUyTb1+72smbjs0cqisG+P\nZ8GCgjoyM2sjA3x7vKdNzMxKyMnbzKyEPOfdRNVqivOoOS6ijaLqvIvgOm8rCyfvJqpWU5xHzXEh\nbRRU510E13lbWXjaxMyshDIlb0nvlvQbSTskvTavoMzMbHBZp016gHcC38ghlmGnWk1xHjXHhbRR\nUJ13EVznbWWRS523pDuBf4qIxQNu5DpvM7P6uc7bzKx9VJ02kXQHsHflU0AAF0XEglo76u7pobun\nZ9fyrK4uZnV11RFqueRx+9JqbdRSoletjVpK4ya//e2MrljeAmy45Zaa+6gl1lriqNZGESWLLiW0\nVlE1eUfEiXl01O7Juq88bl9atY0aSvSqtVFLadxoYG3F8j71xllDrDWV6FU73gJKFl1KaK0iz2mT\n/O8SZGZm/cpaKvgOSSuBo4FbJf04n7DMzGwwmUoFI+KHwA9ziqWt5HH70qpt1FCiV62NWkrjtrD7\nVMmWeuOsIdaaSvSqHW8BJYsuJbRW4VvCmpm1MpcKmpm1D9+YaojKUjJWLc4ivpG9ljjMrD5O3kNU\nlpKxanEW8Y3stcRhZvXxtImZWQk5eZuZlZCnTYaoLCVj1eIs4hvZa4nDzOrjUkEzs1bmUkEzs/bh\n5G1mVkJO3mZmJeTkbWZWQk7eZmYl5ORtZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZWQk7eZmYl5ORt\nZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZWQk7eZmYl5ORtZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZW\nQk7eZmYllCl5S5orabmkpZK+L2lCXoGZmdnAso68FwKHR8R04BHg09lDMjOzajIl74j4SUTsTBfv\nBfbPHpKZmVWT55z3WcCPc2zPzMwGMLLaBpLuAPaufAoI4KKIWJBucxGwLSKub0iUZma2m6rJOyJO\nHGy9pA8CJwPHD7Zdd08P3T09u5ZndXUxq6urtijNzGw3VZP3YCTNBs4H3hQRWwbb1snazCw/Wee8\nrwDGAXdIWizpyhxiMjOzKjKNvCPiL/MKxMzMaudPWJqZlZCTt5lZCTl5m5mVkJO3mVkJOXmbmZWQ\nIqKovgrryMysjai/Jz3yNjMrISdvM7MScvI2MyshJ28zsxJy8jYzKyEn70F0d3c3O4SGaMfjasdj\nAh9X2RR5XE7eg/APWHm04zGBj6tsnLzNzGxQTt5mZiVU5CcsS0fSrIjobnYceWvH42rHYwIfV9kU\neVxO3mZmJeRpEzOzEnLyNjMrISfvKiTNlbRc0lJJ35c0odkxZSXp3ZJ+I2mHpNc2O56sJM2W9LCk\nFZIubHY8eZA0T9KTkn7d7FjyJGl/ST+T9JCkHknnNjumPEgaLek+SUvS47qk0X06eVe3EDg8IqYD\njwCfbnI8eegB3gn8vNmBZCWpA/gacBJwOPA+Sa9qblS5uJrkmNrNduC8iDgceD3wkXZ4vSJiC/Dm\niDgCmA78taQZjezTybuKiPhJROxMF+8F9m9mPHmIiN9GxCMMcJ/gkpkBPBIRj0fENuBG4JQmx5RZ\nRNwFbGh2HHmLiLURsTR9/BywHJjS3KjyERGb04ejgZE0+DsMnLzrcxbw42YHYbuZAqysWH6CNkkG\n7U7SwSSj1PuaG0k+JHVIWgKsBe6IiAca2d/IRjZeFpLuAPaufIrkr+ZFEbEg3eYiYFtEXN+EEOtW\nyzGZNYukccDNwMfTEXjppe/Qj0ivi/1Q0rSIWNao/py8gYg4cbD1kj4InAwcX0hAOah2TG1kFXBg\nxfL+6XPWoiSNJEnc10XE/GbHk7eIeEbSncBsoGHJ29MmVUiaDZwPvD29KNFuyj7v/QBwqKSDJHUC\n7wVuaXJMeRHlf336cxWwLCK+0uxA8iLppZImpo/HAicCDzeyTyfv6q4AxgF3SFos6cpmB5SVpHdI\nWgkcDdwqqbTz+BGxA/goSVXQQ8CNEbG8uVFlJ+l64JfAVEl/lHRms2PKg6RjgPcDx6dldYvTAVLZ\n7QvcKWkpyRz+7RHxo0Z26I/Hm5mVkEfeZmYl5ORtZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZWQk7e\nZmYl5ORtZlZC/x/Th7LXU7AHPgAAAABJRU5ErkJggg==\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" } ], "source": [ @@ -257,7 +254,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -266,14 +263,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 30/30 | Cost 0.95 | Elapsed: 0:00:00 | ETA: 0:00:00" + "Iteration: 30/30 | Cost 3.79 | Elapsed: 0:00:00 | ETA: 0:00:00" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\n2r59O4sWXcPzzz9J8p0czdbB2LF788Y3nsHIkdnSr5O3mbWtBx9cyIEHTuDEEz/AqFGd1XdosG3b\ntnLHHfN58MGFHHnkyZna8py3mbWtdeuWc8wx/60lEjfAqFGdvOENx7Nu3fLMbTl5m1nb2r79ecaP\nn9jsMHYzYcJktm/fkrkdJ28za2sdHa2V5pJ4ss+/t9ZRmZlZTZy8zcxKyMnbzCwHa9eu5G1vm8a0\naSM58sjxXHHFxQ3tz8nbzCwH55wzh87OTu69989ceunX+cY3vsB99/2sYf05eZuZZbRx4waWL+/h\n4ou/zoQJk3jb205j2rTXcO21X25Yn/6QjplZH289dh92bH5ut+dG7DGO/7hrbb/bL116N5KYPv31\nu56bOvWvWLLk3obF6ORtZtbHjs3P8egeL9ntuUP7JPNKGzduoLNz9w8CjR8/iRdeeL4h8YGnTczM\nMps4cTJbt27d7blnntnAmDFjG9ank7eZWUbTpx9DRLB06T27nlux4jccfPChDevTydvMrI8Re4zj\n0M2bdvs3Yo9xA24/ceJkDjvs1Vx22UfYuHEDt9xyHcuX/5rTT/9Ew2L0nLeZWR8DXZgczJVX3sLf\n//1JvP71L2PMmLGcc85nmDnz+AZEl3DyNjPLwT77HMCtty4rrD9Pm5iZlZCTt5lZCTl5m5mVkJO3\nmVkJOXmbmZWQk7eZWQk5eZuZlZCTt5lZCTl5m5mVkJO3mVkOPve5D3Pssftw2GEjeO97Zza8v8zJ\nW9L+kn4m6SFJPZLOzSMwM7MymTLlYM4++5846qhjC+kvj5H3duC8iDgceD3wEUmvyqFdM7Om2bJl\nCxdf/CE2b95U0/Znn30hZ555PhMnTm5wZInMyTsi1kbE0vTxc8ByYErWds3Mmum73/0q8+d3c9VV\n/9bsUPqV65y3pIOB6cB9ebZrZlakLVu2cM01NzJy5AXccMMPah59Fym35C1pHHAz8PF0BG5mVkrf\n/e5X2bRpKmPHns2WLUe15Og7l/t5SxpJkrivi4j5/W3T09NNT0/3ruWurll0dc3Ko3szs9z0jroj\nPsy2bYuJmMUNN8zlrLPOZ48+X0rcTHl9GcNVwLKI+MpAGzhZm1kZrFu3lkmTXsKYMdcC1wLQ2TmJ\ntWsf55BDpg2437ZtW9my5QV27tzBjh072Lz5OUaN6mTUqM4B98kic/KWdAzwfqBH0hIggM9ExG1Z\n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\nZ9fyrK4uZnV11RFqueRx+9JqbdRSoletjVpK4ya//e2MrljeAmy45Zaa+6gl1lriqNZGESWLLiW0\nVlE1eUfEiXl01O7Juq88bl9atY0aSvSqtVFLadxoYG3F8j71xllDrDWV6FU73gJKFl1KaK0iz2mT\n/O8SZGZm/cpaKvgOSSuBo4FbJf04n7DMzGwwmUoFI+KHwA9ziqWt5HH70qpt1FCiV62NWkrjtrD7\nVMmWeuOsIdaaSvSqHW8BJYsuJbRW4VvCmpm1MpcKmpm1D9+YaojKUjJWLc4ivpG9ljjMrD5O3kNU\nlpKxanEW8Y3stcRhZvXxtImZWQk5eZuZlZCnTYaoLCVj1eIs4hvZa4nDzOrjUkEzs1bmUkEzs/bh\n5G1mVkJO3mZmJeTkbWZWQk7eZmYl5ORtZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZWQk7eZmYl5ORt\nZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZWQk7eZmYl5ORtZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZW\nQk7eZmYllCl5S5orabmkpZK+L2lCXoGZmdnAso68FwKHR8R04BHg09lDMjOzajIl74j4SUTsTBfv\nBfbPHpKZmVWT55z3WcCPc2zPzMwGMLLaBpLuAPaufAoI4KKIWJBucxGwLSKub0iUZma2m6rJOyJO\nHGy9pA8CJwPHD7Zdd08P3T09u5ZndXUxq6urtijNzGw3VZP3YCTNBs4H3hQRWwbb1snazCw/Wee8\nrwDGAXdIWizpyhxiMjOzKjKNvCPiL/MKxMzMaudPWJqZlZCTt5lZCTl5m5mVkJO3mVkJOXmbmZWQ\nIqKovgrryMysjai/Jz3yNjMrISdvM7MScvI2MyshJ28zsxJy8jYzKyEn70F0d3c3O4SGaMfjasdj\nAh9X2RR5XE7eg/APWHm04zGBj6tsnLzNzGxQTt5mZiVU5CcsS0fSrIjobnYceWvH42rHYwIfV9kU\neVxO3mZmJeRpEzOzEnLyNjMrISfvKiTNlbRc0lJJ35c0odkxZSXp3ZJ+I2mHpNc2O56sJM2W9LCk\nFZIubHY8eZA0T9KTkn7d7FjyJGl/ST+T9JCkHknnNjumPEgaLek+SUvS47qk0X06eVe3EDg8IqYD\njwCfbnI8eegB3gn8vNmBZCWpA/gacBJwOPA+Sa9qblS5uJrkmNrNduC8iDgceD3wkXZ4vSJiC/Dm\niDgCmA78taQZjezTybuKiPhJROxMF+8F9m9mPHmIiN9GxCMMcJ/gkpkBPBIRj0fENuBG4JQmx5RZ\nRNwFbGh2HHmLiLURsTR9/BywHJjS3KjyERGb04ejgZE0+DsMnLzrcxbw42YHYbuZAqysWH6CNkkG\n7U7SwSSj1PuaG0k+JHVIWgKsBe6IiAca2d/IRjZeFpLuAPaufIrkr+ZFEbEg3eYiYFtEXN+EEOtW\nyzGZNYukccDNwMfTEXjppe/Qj0ivi/1Q0rSIWNao/py8gYg4cbD1kj4InAwcX0hAOah2TG1kFXBg\nxfL+6XPWoiSNJEnc10XE/GbHk7eIeEbSncBsoGHJ29MmVUiaDZwPvD29KNFuyj7v/QBwqKSDJHUC\n7wVuaXJMeRHlf336cxWwLCK+0uxA8iLppZImpo/HAicCDzeyTyfv6q4AxgF3SFos6cpmB5SVpHdI\nWgkcDdwqqbTz+BGxA/goSVXQQ8CNEbG8uVFlJ+l64JfAVEl/lHRms2PKg6RjgPcDx6dldYvTAVLZ\n7QvcKWkpyRz+7RHxo0Z26I/Hm5mVkEfeZmYl5ORtZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZWQk7e\nZmYl5ORtZlZC/x/Th7LXU7AHPgAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -282,18 +279,18 @@ { "data": { "text/plain": [ - "" + "" ] }, - "execution_count": 31, + "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { - "image/png": "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\n9l4pm4oAAAAASUVORK5CYII=\n", + "image/png": "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\nAf8fOHnwMfNBnwQAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -343,7 +340,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -352,14 +349,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 15/15 | Cost 0.95 | Elapsed: 0:00:00 | ETA: 0:00:00" + "Iteration: 15/15 | Cost 3.79 | Elapsed: 0:00:00 | ETA: 0:00:00" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\nMbO2tX37dhYvvpLnn3+S5Ds5mq2D0aP35Q1vOI3hw7OlXydvM2tb99+/iIMOGscJJ3yQESM6qx/Q\nYNu2beW22xZw//2LOPLIkzK15TlvM2tb69at4Jhj/ltLJG6AESM6ef3rj2PduhWZ23LyNrO2tX37\n84wdO77ZYexm3LiJbN++JXM7Tt5m1tY6OlorzSXxZJ9/b62zMjOzmjh5m5mVkJO3mVkO1q5dydve\nNp3p04dz5JFjufTSCxran5O3mVkOzjprLp2dndx995+56KJv8q1vfYl77vl5w/pz8jYzy2jjxg2s\nWNHDBRd8k3HjJvC2t32A6dNfzVVXfbVhffpDOmZmfbz12P3Ysfm53R4bttcY/uOOtf3uv2zZnUhi\nxozX7Xps6tS/YunSuxsWo5O3mVkfOzY/xyN7vWS3xw7rk8wrbdy4gc7O3T8INHbsBF544fmGxAee\nNjEzy2z8+Ils3bp1t8eeeWYDo0aNblifTt5mZhnNmHEMEcGyZXfteuyhh37LIYcc1rA+nbzNzPoY\nttcYDtu8abd/w/YaM+D+48dPZNq0V3HxxR9l48YN3HTT1axY8RtOPfWTDYvRc95mZn0M9MbkYC67\n7Cb+/u9P5HWvexmjRo3mrLM+x6xZxzUguoSTt5lZDvbb70Buvnl5Yf152sTMrIScvM3MSsjJ28ys\nhJy8zcxKyMnbzKyEnLzNzErIydvMrIScvM3MSsjJ28yshJy8zcxy8IUvfIRjj92PadOG8d73zmp4\nf5mTt6QDJP1c0gOSeiSdnUdgZmZlMmXKIZx55j9x1FHHFtJfHiPv7cA5EXE48Drgo5JemUO7ZmZN\ns2XLFi644MNs3ryppv3PPPPTnH76uYwfP7HBkSUyJ++IWBsRy9LbzwErgClZ2zUza6bvfe/rLFjQ\nzeWX/1uzQ+lXrnPekg4BZgD35NmumVmRtmzZwpVXXs/w4edx3XU/rHn0XaTckrekMcCNwCfSEbiZ\nWSl973tfZ9OmqYwefSZbthzVkqPvXNbzljScJHFfHREL+tunp6ebnp7uXfe7umbT1TU7j+7NzHLT\nO+qO+Ajbti0hYjbXXTePM844l736fClxM+X1ZQyXA8sj4msD7eBkbWZlsG7dWiZMeAmjRl0FXAVA\nZ+cE1q59nEMPnT7gcdu2bWXLlhfYuXMHO3bsYPPm5xgxopMRIzoHPCaLzMlb0jHA+4EeSUuBAD4X\n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\nQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -367,9 +364,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEPCAYAAABGP2P1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHftJREFUeJzt3Xu0HGWd7vHvkyuSqyQQJDHhFk4STQJRkQOMNDeJDEvQ\n4wEFUWEYdR0OMCKOgs5iu5breBuPoqKsyEVlyTgjiFxGLnJpPSACYm4kEIw44aJJiAQICQm5/M4f\nVZ107/Tu3b13167u3c9nrVrp7qqu+u1kp59+33qrXkUEZmZmJUPyLsDMzFqLg8HMzCo4GMzMrIKD\nwczMKjgYzMysgoPBzMwqZBoMkqZIuk/SMklLJV3Yw3YFSQslPS7p/ixrMjOz2pTldQyS9gX2jYhF\nkkYDjwGnRsSTZduMA34LvDsinpc0MSLWZVaUmZnVlGmLISJWR8Si9PGrwBPA5G6bnQncFBHPp9s5\nFMzMcjRg5xgk7Q8cCjzcbdUhwF6S7pf0qKSzB6omMzPb3bCBOEjajXQjcFHacuhewzzgOGAU8JCk\nhyJi5UDUZmZmlTIPBknDSELh+oi4pcomzwHrImIzsFnSb4C5QEUwSPJNnczM+iAi1Mj2A9GVdC2w\nPCKu6GH9LcDRkoZK2hN4J8m5iN1ERNsul19+ee41uP786+jE+tu59sFQf19k2mKQdBRwFrBU0kIg\ngMuAaUBExIKIeFLSXcASYDuwICKWZ1mXmZn1LNNgiIgHgaF1bPevwL9mWYuZmdXHVz4PkEKhkHcJ\n/eL689XO9bdz7dD+9fdFphe4NZOkaJdazcxahSSiBU8+m5lZG3EwmJlZBQeDmZlVcDCYmVkFB4OZ\nmVVwMJiZWQUHg5mZVXAwmJlZBQeDmZlVcDCYmVmFtgqGrVvzrsDMbPBrq2BY6TndzMwy11bBsNyz\nNJiZZa6tguGJqvO6mZlZM2UaDJKmSLpP0jJJSyVdWGPbd0jaKun9PW3jYDAzy16mM7gB24CLI2KR\npNHAY5LujognyzeSNAT4CnBXrZ25K8nMLHuZthgiYnVELEofvwo8AUyusukFwI3A2lr7e+op2LGj\n6WWamVmZATvHIGl/4FDg4W6v7wecFhHfB2rOMrTXXrBqVVYVmpkZZN+VBEDajXQjcFHacij3LeCz\n5Zv3tJ8RI7r4whdg+vRkHtZOnIvVzKyWYrFIsVjs1z4yn/NZ0jDgduCOiLiiyvqnSw+BicBG4OMR\ncWu37eKii4IpU+CSSzIt2cxs0OjLnM8D0WK4FlheLRQAIuLA0mNJ1wG3dQ+Fkpkz4ZFHsinSzMwS\nWQ9XPQo4CzhO0kJJf5A0X9InJH28yltqNl9mzvSQVTOzrGXeldQskuKFF4KDD4b160ENNYzMzDpT\nX7qS2urK54kTYfhwWL0670rMzAavtgoGcHeSmVnW2i4YZs1yMJiZZantgmHmTN8aw8wsS20ZDG4x\nmJllp+2CwV1JZmbZartgmDwZNm5MhqyamVnztV0wSDBjhlsNZmZZabtgAJ9nMDPLUlsGw6xZHplk\nZpaVtgwGtxjMzLLjYDAzswptdRO9Uq3btsHYsfDCCzBqVM6FmZm1sEF/E72SYcPg4INhxYq8KzEz\nG3zaMhjA3UlmZllp22DwFdBmZtnIega3KZLuk7RM0lJJF1bZ5kxJi9PlAUmz69m3b6ZnZpaNrOd8\n3gZcHBGLJI0GHpN0d0Q8WbbN08C7IuJlSfOBHwBH9LZjdyWZmWVjQEclSfoF8J2IuLeH9eOBpRHx\n5irrorzWLVtg3DjYsCGZ1c3MzHbX0qOSJO0PHAo8XGOz84A76tnfyJEwdSqsXNn/2szMbJesu5IA\nSLuRbgQuiohXe9jmWOAc4Oie9tPV1bXzcaFQYObMAsuXJ91KZmYGxWKRYrHYr31k3pUkaRhwO3BH\nRFzRwzZzgJuA+RHxpx62ie61fu5zMHo0fOELTS7azGyQaNWupGuB5TVCYSpJKJzdUyj0xENWzcya\nL9OuJElHAWcBSyUtBAK4DJgGREQsAP4F2Av4niQBWyPi8Hr2P3MmfPOb2dRuZtap2vJeSSUbNsC+\n+yZ/DmnbS/XMzLLTql1JmRkzBvbaC1atyrsSM7PBo62DATxpj5lZs7V9MPgKaDOz5nIwmJlZhbYP\nBg9ZNTNrrrYelQSwbl0yac/69aCGzrubmQ1+HTcqCWDixOQmeqtX512Jmdng0PbBAO5OMjNrpkER\nDJ60x8yseQZNMLjFYGbWHA4GMzOrMCiCwVc/m5k1z6AIhsmTYdOmZMiqmZn1z6AIBglmzHB3kplZ\nMwyKYAAPWTUza5ZBEwwesmpm1hyZBoOkKZLuk7RM0lJJF/aw3bcl/VHSIkmH9uVYHplkZtYcmU7t\nCWwDLo6IRZJGA49JujsinixtIOk9wEERMV3SO4GrgCMaPZCDwcysOTJtMUTE6ohYlD5+FXgCmNxt\ns1OBH6fbPAyMkzSp0WMdcEByv6SNG/tZtJlZhxuwcwyS9gcOBR7utmoy8GzZ8+fZPTx6NWwYTJ8O\nK1b0tUIzM4Psu5IASLuRbgQuSlsOfdLV1bXzcaFQoFAoVKwvdSfNm9fXI5iZtbdisUixWOzXPjKf\nj0HSMOB24I6IuKLK+quA+yPi39PnTwLHRMSabttVnY+h3Be/CFu3wpe+1LTyzczaWqvOx3AtsLxa\nKKRuBT4CIOkI4KXuoVAvD1k1M+u/TLuSJB0FnAUslbQQCOAyYBoQEbEgIn4p6WRJK4GNwDl9PZ5H\nJpmZ9V/bT+1ZbssWGD8eXn4ZRowYoMLMzFpYq3YlDZiRI+HNb4aVK/OuxMysfQ2qYAB3J5mZ9ZeD\nwczMKgy6YPCkPWZm/TPogsEtBjOz/hlUo5IANmyAffdN/hwy6GLPzKwxHT8qCWDMGJgwAVatyrsS\nM7P2NOiCAXwFtJlZfwzaYPB5BjOzvnEwmJlZhUEZDB6yambWd4NuVBLAunVw8MGwfj2ooXPxZmaD\ni0clpSZOhOHDk6k+zcysMYMyGCDpTvJ5BjOzxg3aYPCQVTOzvsk0GCRdI2mNpCU9rB8r6VZJiyQt\nlfSxZh3bI5PMzPom6xbDdcBJNdafDyyLiEOBY4FvpHNE95u7kszM+ibTYIiIB4D1tTYBxqSPxwB/\ni4htzTi2u5LMzPom73MM3wVmSfoLsBi4qFk7njwZNm1KhqyamVn98g6Gk4CFEbEfcBhwpaTRzdix\nBDNmuDvJzKxRTenP74dzgC8DRMSfJP0ZmAH8vtrGXV1dOx8XCgUKhULNnZeugD7yyCZVa2bW4orF\nIsVisV/7yPzKZ0n7A7dFxOwq664E1kbEFyVNIgmEuRHxYpVt677yueSrX4W1a+Eb3+hT6WZmba8v\nVz5n2mKQdANQACZIega4HBgBREQsAL4E/LBsOOs/VwuFvpo5E37962btzcysMwzKeyWVrFwJJ54I\nf/5zRkWZmbW4zO6VJOn6el5rNQccAGvWwMaNeVdiZtY+6h2V9JbyJ5KGAm9rfjnNNXRocpfVFSvy\nrsTMrH3UDAZJl0raAMyR9Eq6bADWArcMSIX95CugzcwaUzMYIuLLETEG+HpEjE2XMRExISIuHaAa\n+8VXQJuZNaberqTbJY0CkPRhSf9X0rQM62oa30zPzKwx9QbD94FNkuYCnwb+BPw4s6qayMFgZtaY\neoNhWzpW9FTguxFxJbtuftfSDjkE/uu/4PXX867EzKw91BsMGyRdCpwN/KekIcDw7MpqnpEj4c1v\nTq5pMDOz3tUbDGcAW4BzI2I1MAX4emZVNZm7k8zM6ldXMKRh8BNgnKRTgM0R0RbnGMBDVs3MGlHv\nlc+nA48A/xM4HXhY0geyLKyZPGTVzKx+9d5E7/PAOyJiLYCkvYF7gBuzKqyZZs6Eb34z7yrMzNpD\nvecYhpRCIfW3Bt6buxkzkttibN+edyVmZq2v3hbDnZLuAv4tfX4G8MtsSmq+MWNg4kRYtQoOPDDv\naszMWlvNYJB0MDApIj4j6f3A0emqh0hORreN0sgkB4OZWW29dQd9C3gFICJ+HhEXR8TFwM3purbh\nIatmZvXpLRgmRcTS7i+mr+3f284lXSNpTdkMbdW2KUhaKOlxSff3WnEfeciqmVl9eguG8TXWvaGO\n/V8HnNTTSknjgCuBUyLirSTDYTPhIatmZvXpLRh+L+kfu78o6Tzgsd52HhEPAOtrbHImcFNEPJ9u\nv663ffZVqSupTWYyNTPLTW+jkv4JuFnSWewKgrcDI4D3NeH4hwDD0y6k0cC3IyKTKUMnToQRI2D1\nanjTm7I4gpnZ4FAzGCJiDXCkpGOBt6Yv/2dE3NfE488DjgNGAQ9JeigiMrnlXak7ycFgZtazuq5j\niIj7gSxODD8HrIuIzcBmSb8B5gJVg6Grq2vn40KhQKFQaOhgpe6k44/va7lmZq2tWCxSLBb7tQ9F\nxp3ukvYHbouI2VXWzQC+A8wHRgIPA2dExG6niSVFf2u94gp46im48sp+7cbMrG1IIiLUyHvqvfK5\nTyTdABSACZKeAS4nOT8REbEgIp5Mr6heAmwHFlQLhWaZNQtuuSWrvZuZDQ6ZtxiapRkthueeg7e/\nPTkBbWbWCfrSYmibG+E1w+TJsGkTrK81gNbMrMN1VDBIvjWGmVlvOioYwFdAm5n1piODwS0GM7Oe\nORjMzKxCxwXDrFnuSjIzq6WjhqtCMr3nmDHwwgswalQTCjMza2EerlqHoUPh4IOTOaDNzGx3HRcM\n4El7zMxq6chg8JBVM7OedWwwuMVgZlZdRwaDu5LMzHrWcaOSALZsgXHj4JVXklndzMwGK49KqtPI\nkTB1KqzMZJ44M7P21pHBAD7PYGbWk44NBl8BbWZWXabBIOkaSWskLellu3dI2irp/VnWU84tBjOz\n6rJuMVwHnFRrA0lDgK8Ad2VcSwUHg5lZdZkGQ0Q8APQ2X9oFwI3A2ixr6W7GDHjqqeTeSWZmtkuu\n5xgk7QecFhHfBxoaTtVfY8bAhAmwatVAHtXMrPUNy/n43wI+W/a8Zjh0dXXtfFwoFCgUCv06eKk7\n6cAD+7UbM7OWUSwWKRaL/dpH5he4SZoG3BYRc6qse7r0EJgIbAQ+HhG3Vtm2aRe4lXzqUzB5Mlxy\nSVN3a2bWMvpygdtAtBhEDy2BiNj5XV3SdSQBslsoZGXmTPjd7wbqaGZm7SHr4ao3AL8FDpH0jKRz\nJH1C0serbD7g9+bwyCQzs9115L2SStatSybtWb8eNKCnvs3MBobvldSgiROTm+itXp13JWZmraOj\ngwE8aY+ZWXcOBp9nMDOr0PHB4El7zMwqdXwwuCvJzKySg8FdSWZmFTo+GCZPhk2b4MUX867EzKw1\ndHwwSG41mJmV6/hgAAeDmVk5BwNJMPz+93lXYWbWGhwMwIc+BL/8JVx7bd6VmJnlL+/5GFrC1Klw\nzz1w7LHJLTI+/OG8KzIzy4+DIXXIIfCrX8EJJyThcPrpeVdkZpYPB0OZWbPgzjvh3e+G4cPhfe/L\nuyIzs4HnYOhmzpzkfMN73pOEwymn5F2RmdnA8snnKubNg9tug3PPhbvuyrsaM7OBlfUMbtdIWiNp\nSQ/rz5S0OF0ekDQ7y3oacfjh8ItfJCei770372rMzAZO1i2G64CTaqx/GnhXRMwFvgT8ION6GnLk\nkXDTTfDBD8JvfpN3NWZmAyPTYIiIB4D1Ndb/LiJeTp/+DpicZT198a53wU9/Ch/4ADz0UN7VmJll\nr5XOMZwH3JF3EdUcfzz8+Mdw6qnw6KN5V2Nmlq2WGJUk6VjgHODoWtt1dXXtfFwoFCgUCpnWVW7+\nfLjmmmSU0p13wmGHDdihzczqViwWKRaL/dqHIqI51fR0AGkacFtEzOlh/RzgJmB+RPypxn4i61rr\n8fOfw/nnw913w+yWOVVuZladJCJCjbxnIFoMSpfdV0hTSULh7Fqh0Ere/37YuhVOOikZrTRzZt4V\nmZk1V6bBIOkGoABMkPQMcDkwAoiIWAD8C7AX8D1JArZGxOFZ1tQMZ5wBr78OJ54I992X3E7DzGyw\nyLwrqVlapSup3LXXQlcXFItw4IF5V2NmtrtW7UoatM49N2k5HH98Eg7TpuVdkZlZ/zkY+umTn0zC\n4bjj4Ne/hilT8q7IzKx/HAxNcOGFlS2HN70p74rMzPrOwdAkl1wCW7bsCod99sm7IjOzvnEwNNHn\nP5+0HE44Ae6/HyZMyLsiM7PGeVRSk0XApZcmF8Ddey+88Y15V2Rmnawvo5IcDBmIgE9/Gh54IJku\ndNy4vCsys07lYGghEXDBBbBwYXJvpTFj8q7IzDqRg6HF7NiRDGddsSKZLnTUqLwrMrNO05dgaKXb\nbg86Q4bAVVfB9OkwYwZcfjmsWpV3VWZmtTkYMjZkCFx9Ndx+O6xfD297W3IDvp/9LBnBZGbWatyV\nNMBeew1uvjkJi2XL4Oyz4R/+wXdpNbNsuCupDbzhDXDmmcldWR98EEaMSC6KO/po+OEPYePGvCs0\ns07nFkML2LYtOTl99dXJENfTT4fzzku6ndRQzpuZVfKopEHg+efhRz9KQmLs2CQgzjrLF8qZWd84\nGAaRHTuSey5dfXXSmjjllCQkjjnGrQgzq1/LBYOka4BTgDU15nz+NvAeYCPwsYhY1MN2HRUM5f72\nN/jJT+AHP4DNm5OT1R/9qO/iama9a8WTz9cBJ/W0UtJ7gIMiYjrwCeCqjOtpSxMmJLf2XrIkCYin\nn4ZZs+C005JhsNu25V2hmQ0mmXclSZoG3FatxSDpKuD+iPj39PkTQCEi1lTZtmNbDNW8+ir8x38k\nXU2rVsHJJ8PcuTBnTrKMH593hWbWCtpxas/JwLNlz59PX9stGKzS6NHJ1KLnngvLlyezxy1enLQo\nHn88aWWUgmLu3GQ56KDkgjszs1ryDoaGdHV17XxcKBQoFAq51dJKZs1KlpIdO5LupsWLk+X665OJ\nhNatg7e+dVdQzJ0Ls2cno5/MbHAoFosUi8V+7aPVupKeBI5xV1I2XnoJli7dFRiLFydXX0+aVBkW\nc+bAAQe4dWE2GLTcqCQASfuTBMPsKutOBs6PiL+XdATwrYg4oof9OBgysH07rFxZGRZLliQhMnt2\nZVDss0+y7L13csW2ZSsC1q6FNWuS61j23ReGD8+7Kms3LRcMkm4ACsAEkvMGlwMjgIiIBek23wXm\nkwxXPSci/tDDvhwMA+jFF5OAKAXFs88mH1Jr18ILLyTnOEpBUVomTdr9tX32SU6Eu/Wxu61bkwsa\nV62qXJ55Ztefo0YlgbB+ffL3Pm5cMky5t2XPPQf+59m8OflC8dJLSb2lx5s3w8SJye9Hadljj4Gv\nr1O1XDA0k4OhdezYkfyHLwVFrWXNmmQE1d57Vw+NUgtkzz1h2LDqy9ChPa/rvk0rXfy3cWP1D/zS\nsmZN8qE/dSpMm1a5TJ2aLKNH79rf9u3JeaK//rX6snr1rscjRiT77i1Axo/f9Xe2bRu8/HL1D/d6\nHm/fnrRs3vjGZL/jxyePR45M6l6zJlnWrk3qK4VE6UtFT4/Hjm2tf9d242CwlvT668m33VoBsnlz\n8sFUa9m+vff1Q4ZUD47hw5MPqBEjKpdmvDZkSPKh3P2b/2uv7fqA7/6hP20aTJ6cTddQRPIBX0+A\nbNmSfHi/+ips2pR8CJc+0Ms/3Ot5vMce9X2AR8Arr+wKilJY9PR869aew2PSpF1Ds3fsSPbdfenv\n65B88SgtQ4ZUPu/t9d7eM2RI5bG6H7u/z+fNczBYByv9p+4eGFu3Jsvrr1cuW7b0/bXy17dtS76d\nd//g33vv1v+mu2lT0m04ZkyytGKX36ZNlUHRPUReeimpW9p9acbrkHzp2L49+f0qPS5fenq9nvfs\n2LH78Zr5fNEiB4OZmZVpxVtimJlZm3EwmJlZBQeDmZlVcDCYmVkFB4OZmVVwMJiZWQUHg5mZVXAw\nmJlZBQeDmZlVcDCYmVkFB4OZmVVwMJiZWYXMg0HSfElPSnpK0merrB8r6VZJiyQtlfSxrGsyM7Oe\nZRoMkoYA3wVOAt4CfEjSjG6bnQ8si4hDgWOBb0galmVdeejv5Nx5c/35auf627l2aP/6+yLrFsPh\nwB8jYlVEbAV+CpzabZsAxqSPxwB/i4htGdc14Nr9l8v156ud62/n2qH96++LrINhMvBs2fPn0tfK\nfReYJekvwGLgooxrMjOzGlrh5PNJwMKI2A84DLhS0uhe3mNmZhnJdAY3SUcAXRExP33+OSAi4qtl\n29wOfDkiHkyf3wt8NiJ+321fnr7NzKwPGp3BLeuTvI8CB0uaBvwV+CDwoW7brAJOAB6UNAk4BHi6\n+44a/cHMzKxvMg2GiNgu6X8Dd5N0W10TEU9I+kSyOhYAXwJ+KGlJ+rZ/jogXs6zLzMx6lmlXkpmZ\ntZ9WOPncq94ukmtlkqZIuk/SsvQCvgvzrqlRkoZI+oOkW/OupVGSxkn6maQn0n+Dd+ZdUyMkfUrS\n45KWSPqJpBF511SLpGskrSnrAUDSGyXdLWmFpLskjcuzxlp6qP9r6e/PIkk3SRqbZ421VKu/bN2n\nJe2QtFdv+2n5YKjzIrlWtg24OCLeAvx34Pw2qx+SIcTL8y6ij64AfhkRM4G5wBM511M3SfsBFwDz\nImIOSdfvB/OtqlfXkfxfLfc54J6I+G/AfcClA15V/arVfzfwlvQi3D/SfvUjaQpwIsk53V61fDBQ\n30VyLSsiVkfEovTxqyQfTN2v5WhZ6S/UycDVedfSqPSb3d9FxHUAEbEtIl7JuaxGDQVGpXcD2BP4\nS8711BQRDwDru718KvCj9PGPgNMGtKgGVKs/Iu6JiB3p098BUwa8sDr18PcP8E3gM/Xupx2CoZ6L\n5NqCpP2BQ4GH862kIaVfqHY8GXUAsE7SdWlX2AJJb8i7qHpFxF+AbwDPAM8DL0XEPflW1Sf7RMQa\nSL4oAfvkXE9/nAvckXcRjZD0XuDZiFha73vaIRgGhfSivRuBi9KWQ8uT9PfAmrTFo3RpJ8OAecCV\nETEP2ETSrdEWJI0n+bY9DdgPGC3pzHyraop2/JKBpM8DWyPihrxrqVf6Regy4PLyl3t7XzsEw/PA\n1LLnU9LX2kbaDXAjcH1E3JJ3PQ04CnivpKeBfwOOlfTjnGtqxHMk35RKF0veSBIU7eIE4OmIeDEi\ntgM/B47Muaa+WJNeo4SkfYG1OdfTsPSuzycD7RbMBwH7A4sl/Znk8/MxSTVbbe0QDDsvkktHZHwQ\naLfRMdcCyyPiirwLaUREXBYRUyPiQJK/9/si4iN511WvtPviWUmHpC8dT3udRH8GOELSHpJEUn87\nnDzv3rq8FfhY+vijQKt/OaqoX9J8ku7U90bEltyqqt/O+iPi8YjYNyIOjIgDSL4sHRYRNcO55YMh\n/aZUukhuGfDTiGiH/xwASDoKOAs4TtLCtK97ft51dZALgZ9IWkQyKun/5FxP3SLiEZJWzkKSG0wK\nWJBrUb2QdAPwW+AQSc9IOgf4CnCipBUk4faVPGuspYf6vwOMBn6V/v/9Xq5F1tBD/eWCOrqSfIGb\nmZlVaPkWg5mZDSwHg5mZVXAwmJlZBQeDmZlVcDCYmVkFB4OZmVVwMFjHkLQh/XOapO4zCfZ335d2\ne/5AM/dvNpAcDNZJShftHECDtzaQNLSXTS6rOFDE0Y3s36yVOBisE30ZODq9ivWidCKir0l6OJ2M\n5R8BJB0j6TeSbiG56h5JN0t6NJ106bz0tS8Db0j3d3362obSwSR9Pd1+saTTy/Z9f9kkQteXbf+V\ndHKeRZK+NmB/K2apTOd8NmtRnwM+HRHvBUiD4KWIeGd6P64HJd2dbnsYySQtz6TPz4mIlyTtATwq\n6aaIuFTS+ekdXEsi3ff/AOZExOz0xmWPSvp1us2hwCxgdXrMI4EngdMiYkb6/padLcwGL7cYzODd\nwEckLSSZK2MvYHq67pGyUAD4p/S+S6UJW6ZT21Ekd6YlvXFZEXhH2b7/Gsl9aRaR3AXzZeA1SVdL\neh/wWj9/NrOGORjMkpuKXRARh6XLQWUT4mzcuZF0DHAc8M50msdFwB5l+6j3WCXld+rcDgxLbxp5\nOMnN804B7mz4pzHrJweDdZLSh/IGYEzZ63cB/yudNwNJ0yXtWeX944D1EbElnbf7iLJ1r5fe3+1Y\n/w84Iz2PsTfwd8AjPRaYHHd8RNwJXAzMqf/HM2sOn2OwTlIalbQE2JF2Hf0wIq5Ip139QzrvwVqq\nz0t8J/BJScuAFcBDZesWAEskPRYRZ5eOFRE3SzqC5LbZO4DPRMRaSTN7qG0scEt6DgPgU33/cc36\nxrfdNjOzCu5KMjOzCg4GMzOr4GAwM7MKDgYzM6vgYDAzswoOBjMzq+BgMDOzCg4GMzOr8P8Bb/k+\nyjP/EukAAAAASUVORK5CYII=\n", + "image/png": "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\nHz4sVzZLWxxaAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -420,7 +417,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -429,14 +426,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 15/15 | Cost 0.95 | Elapsed: 0:00:00 | ETA: 0:00:00" + "Iteration: 15/15 | Cost 3.79 | Elapsed: 0:00:00 | ETA: 0:00:00" ] }, { "data": { - "image/png": "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\nRy2x1hJHtTaKKFl0KaE1i6rJOyKOz6OjVk/WA+WxfGnVNmoo0avWRi2lceOAtRXbe480zhpiralE\nr9r5FlCy6FJCaxZ5Tpvkv0qQmZkNKmup4DskrQSOAm6R9JN8wjIzs+FkKhWMiB8BP8oplpaSx/Kl\nVduooUSvWhu1lMZtYeepki0jjbOGWGsq0at2vgWULLqU0JqFl4Q1M2tmLhU0M2sdXphqlMpSMlYt\nziK+kb2WOMxsZJy8R6ksJWPV4iziG9lricPMRsbTJmZmJeTkbWZWQp42GaWylIxVi7OIb2SvJQ4z\nGxmXCpqZNTOXCpqZtQ4nbzOzEnLyNjMrISdvM7MScvI2MyshJ28zsxJy8jYzKyEnbzOzEnLyNjMr\nISdvM7MScvI2MyshJ28zsxJy8jYzKyEnbzOzEnLyNjMrISdvM7MScvI2MyshJ28zsxJy8jYzKyEn\nbzOzEnLyNjMrISdvM7MScvI2MyuhTMlb0sWSlktaKukmSZPzCszMzIaWdeS9CDgsImYBjwCfyx6S\nmZlVkyl5R8RPI2JHunkvsF/2kMzMrJo857xPB36SY3tmZjaEsdUOkHQ7sFflXUAA50XEwvSY84De\niLi2LlGamdlOqibviDh+uP2SPgycCBw73HHdPT109/T0b3d1dtLV2VlblGZmtpOqyXs4kuYC5wBv\njIgtwx3rZG1mlp+sc96XAhOB2yUtlnRZDjGZmVkVmUbeEfHXeQViZma18ycszcxKyMnbzKyEnLzN\nzErIydvMrIScvM3MSkgRUVRfhXVkZtZCNNidHnmbmZWQk7eZWQk5eZuZlZCTt5lZCTl5m5mVkJP3\nMLq7uxsdQl204nm14jmBz6tsijwvJ+9h+AesPFrxnMDnVTZO3mZmNiwnbzOzEiryE5alI6krIrob\nHUfeWvG8WvGcwOdVNkWel5O3mVkJedrEzKyEnLzNzErIybsKSRdLWi5pqaSbJE1udExZSXqPpN9K\n2i7pNY2OJytJcyU9LGmFpM80Op48SJov6UlJv2l0LHmStJ+kn0t6SFKPpLMaHVMeJI2TdJ+kJel5\nXVDvPp28q1sEHBYRs4BHgM81OJ489ADvBH7R6ECyktQGfBM4ATgMeL+kVzY2qlxcQXJOrWYbcHZE\nHAa8DvhYKzxfEbEFeHNEHA7MAv5W0ux69unkXUVE/DQidqSb9wL7NTKePETE7yLiEYZYJ7hkZgOP\nRMTjEdELXA+c1OCYMouIu4ANjY4jbxGxNiKWprefA5YD0xsbVT4iYnN6cxwwljp/h4GT98icDvyk\n0UHYTqYDKyu2n6BFkkGrk3QQySj1vsZGkg9JbZKWAGuB2yPigXr2N7aejZeFpNuBvSrvIvmreV5E\nLEyPOQ/ojYhrGxDiiNVyTmaNImkicCPwyXQEXnrpK/TD0/fFfiRpZkQsq1d/Tt5ARBw/3H5JHwZO\nBI4tJKAcVDunFrIKOKBie7/0PmtSksaSJO6rI2JBo+PJW0Q8I+kOYC5Qt+TtaZMqJM0FzgHenr4p\n0WrKPu/9AHCIpAMldQDvA25ucEx5EeV/fgZzObAsIr7e6EDyIumlkqaktycAxwMP17NPJ+/qLgUm\nArdLWizpskYHlJWkd0haCRwF3CKptPP4EbEd+DhJVdBDwPURsbyxUWUn6VrgV8AMSX+SdFqjY8qD\npKOBDwDHpmV1i9MBUtntA9whaSnJHP5tEfHjenboj8ebmZWQR95mZiXk5G1mVkJO3mZmJeTkbWZW\nQk7eZmYl5ORtZlZCTt5mZiXk5G1mVkL/D3RlkczMDHUKAAAAAElFTkSuQmCC\n", + "image/png": "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\nS09v78B2d1cX3V1ddYRaLnksX1qtjVpK9Kq1UUtp3PR3vIPxFdubgfU33VRzH7XEWksc1dooomTR\npYTWKqom74g4No+O2j1ZD5bH8qVV26ihRK9aG7WUxo0H1lRs71FvnDXEWlOJXrXzLaBk0aWE1iry\nnDbJf5UgMzMbUtZSwXdKWgEcAdws6cf5hGVmZiPJVCoYET8EfphTLG0lj+VLq7ZRQ4letTZqKY3b\nzI5TJZvrjbOGWGsq0at2vgWULLqU0FqFl4Q1M2tlLhU0M2sfXphqlMpSMlYtziK+kb2WOMysPk7e\no1SWkrFqcRbxjey1xGFm9fG0iZlZCTl5m5mVkKdNRqksJWPV4iziG9lricPM6uNSQTOzVuZSQTOz\n9uHkbWZWQk7eZmYl5ORtZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZWQk7eZmYl5ORtZlZCTt5mZiXk\n5G1mVkJO3mZmJeTkbWZWQk7eZmYl5ORtZlZCTt5mZiXk5G1mVkJO3mZmJeTkbWZWQk7eZmYl5ORt\nZlZCTt5mZiWUKXlLukjScklLJd0oaUpegZmZ2fCyjrwXAQdHxCHAI8DnsodkZmbVZEreEfGTiNie\nbt4D7J09JDMzqybPOe/TgB/n2J6ZmQ1jbLUDJN0G7F55FxDAuRGxMD3mXKAvIq5pSJRmZraDqsk7\nIo4dab+kDwPHA0ePdFxPby89vb0D291dXXR3ddUWpZmZ7aBq8h6JpLnA2cCbImLzSMc6WZuZ5Sfr\nnPclwCTgNkmLJV2aQ0xmZlZFppF3RPxlXoGYmVnt/AlLM7MScvI2MyshJ28zsxJy8jYzKyEnbzOz\nElJEFNVXYR2ZmbURDXWnR95mZiXk5G1mVkJO3mZmJeTkbWZWQk7eZmYl5OQ9gp6enmaH0BDteF7t\neE7g8yqbIs/LyXsE/gErj3Y8J/B5lY2Tt5mZjcjJ28yshIr8hGXpSOqOiJ5mx5G3djyvdjwn8HmV\nTZHn5eRtZlZCnjYxMyshJ28zsxJy8q5C0kWSlktaKulGSVOaHVNWkt4r6TeStkl6bbPjyUrSXEkP\nSXpY0meaHU8eJM2X9KSkXzc7ljxJ2lvSzyQ9KKlX0pnNjikPksZLulfSkvS8zm90n07e1S0CDo6I\nQ4BHgM81OZ489ALvAn7e7ECyktQBfAM4DjgY+ICkVzU3qlxcTnJO7WYrcFZEHAy8HvhYOzxfEbEZ\neEtEHAocAvy1pNmN7NPJu4qI+ElEbE837wH2bmY8eYiI30bEIwyzTnDJzAYeiYjHI6IPuA44ockx\nZRYRdwLrmx1H3iJiTUQsTW8/BywHZjQ3qnxExKb05nhgLA3+DgMn7/qcBvy42UHYDmYAKyq2n6BN\nkkG7k7Q/ySj13uZGkg9JHZKWAGuA2yLi/kb2N7aRjZeFpNuA3SvvIvmreW5ELEyPORfoi4hrmhBi\n3Wo5J7NmkTQJuAH4ZDoCL730Ffqh6ftiP5Q0KyKWNao/J28gIo4dab+kDwPHA0cXElAOqp1TG1kJ\n7FuxvXd6n7UoSWNJEvdVEbGg2fHkLSKekXQ7MBdoWPL2tEkVkuYCZwPvSN+UaDdln/e+HzhQ0n6S\nOoH3Azc1Oaa8iPI/P0O5DFgWEV9rdiB5kfRSSVPT2xOBY4GHGtmnk3d1lwCTgNskLZZ0abMDykrS\nOyWtAI4AbpZU2nn8iNgGfJykKuhB4LqIWN7cqLKTdA3wS2CmpD9KOrXZMeVB0pHAB4Gj07K6xekA\nqez2BG6XtJRkDv/WiPhRIzv0x+PNzErII28zsxJy8jYzKyEnbzOzEnLyNjMrISdvM7MScvI2Mysh\nJ28zsxJy8jYzK6H/D2NOu16iCeDQAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -444,9 +441,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n8Om7SNUfDAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -497,7 +494,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -508,10 +505,13 @@ "text": [ "## Adaline\n", "\n", - "*Adaline(eta=0.01, epochs=50, solver='sgd', random_seed=None, shuffle=False, zero_init_weight=False, print_progress=0)*\n", + "*Adaline(eta=0.01, epochs=50, minibatches=None, random_seed=None, print_progress=0)*\n", "\n", "ADAptive LInear NEuron classifier.\n", "\n", + " Note that this implementation of Adaline expects binary class labels\n", + " in {0, 1}.\n", + "\n", "**Parameters**\n", "\n", "- `eta` : float (default: 0.01)\n", @@ -521,27 +521,21 @@ "- `epochs` : int (default: 50)\n", "\n", " Passes over the training dataset.\n", + " Prior to each epoch, the dataset is shuffled\n", + " if `minibatches > 1` to prevent cycles in stochastic gradient descent.\n", "\n", - "- `solver` : {'gd', 'sgd', 'normal equation'} (default: 'sgd')\n", - "\n", - " Method for solving the cost function. 'gd' for gradient descent,\n", - " 'sgd' for stochastic gradient descent, or 'normal equation' (default)\n", - " to solve the cost function analytically.\n", + "- `minibatches` : int (default: None)\n", "\n", - "- `shuffle` : bool (default: False)\n", - "\n", - " Shuffles training data every epoch if True to prevent circles.\n", + " The number of minibatches for gradient-based optimization.\n", + " If None: Normal Equations (closed-form solution)\n", + " If 1: Gradient Descent learning\n", + " If len(y): Stochastic Gradient Descent (SGD) online learning\n", + " If 1 < minibatches < len(y): SGD Minibatch learning\n", "\n", "- `random_seed` : int (default: None)\n", "\n", " Set random state for shuffling and initializing the weights.\n", "\n", - "- `zero_init_weight` : bool (default: False)\n", - "\n", - " If True, weights are initialized to zero instead of small random\n", - " numbers in the interval [-0.1, 0.1];\n", - " ignored if solver='normal equation'\n", - "\n", "- `print_progress` : int (default: 0)\n", "\n", " Prints progress in fitting to stderr if not solver='normal equation'\n", @@ -550,12 +544,15 @@ " 2: 1 plus time elapsed\n", " 3: 2 plus estimated time until completion\n", "\n", - "\n", "**Attributes**\n", "\n", - "- `w_` : 1d-array\n", + "- `w_` : 2d-array, shape={n_features, 1}\n", + "\n", + " Model weights after fitting.\n", + "\n", + "- `b_` : 1d-array, shape={1,}\n", "\n", - " Weights after fitting.\n", + " Bias unit after fitting.\n", "\n", "- `cost_` : list\n", "\n", @@ -565,15 +562,9 @@ "\n", "
\n", "\n", - "*activation(X)*\n", + "*fit(X, y, init_params=True)*\n", "\n", - "Compute the linear activation from the net input.\n", - "\n", - "
\n", - "\n", - "*fit(X, y, init_weights=True)*\n", - "\n", - "Learn weight coefficients from training data.\n", + "Learn model from training data.\n", "\n", "**Parameters**\n", "\n", @@ -586,10 +577,11 @@ "\n", " Target values.\n", "\n", - "- `init_weights` : bool (default: True)\n", + "- `init_params` : bool (default: True)\n", "\n", - " Re-initializes weights prior to fitting. Set False to continue\n", - " training with weights from a previous fitting.\n", + " Re-initializes model parametersprior to fitting.\n", + " Set False to continue training with weights from\n", + " a previous model fitting.\n", "\n", "**Returns**\n", "\n", @@ -598,15 +590,28 @@ "\n", "
\n", "\n", - "*net_input(X)*\n", + "*predict(X)*\n", + "\n", + "Predict targets from X.\n", + "\n", + "**Parameters**\n", + "\n", + "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n", + "\n", + " Training vectors, where n_samples is the number of samples and\n", + " n_features is the number of features.\n", + "\n", + "**Returns**\n", + "\n", + "- `target_values` : array-like, shape = [n_samples]\n", "\n", - "Compute the linear net input.\n", + " Predicted target values.\n", "\n", "
\n", "\n", - "*predict(X)*\n", + "*score(X, y)*\n", "\n", - "Predict class labels of X.\n", + "Compute the prediction accuracy\n", "\n", "**Parameters**\n", "\n", @@ -615,11 +620,16 @@ " Training vectors, where n_samples is the number of samples and\n", " n_features is the number of features.\n", "\n", + "- `y` : array-like, shape = [n_samples]\n", + "\n", + " Target values (true class labels).\n", + "\n", "**Returns**\n", "\n", - "- `class_labels` : array-like, shape = [n_samples]\n", + "- `acc` : float\n", "\n", - " Predicted class labels.\n", + " The prediction accuracy as a float\n", + " between 0.0 and 1.0 (perfect score).\n", "\n", "\n" ] @@ -629,6 +639,15 @@ "with open('../../api_modules/mlxtend.classifier/Adaline.md', 'r') as f:\n", " print(f.read())" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/docs/sources/user_guide/classifier/Adaline_files/Adaline_20_1.png b/docs/sources/user_guide/classifier/Adaline_files/Adaline_20_1.png index 3df7a12374f6b35dec1bfec8b3a9adfac69c9730..259ab5ddf29584e73e75e9e03f06dff19e89ad75 100644 GIT binary patch literal 7783 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 O20%=#jms~)-}^6$QLlXf literal 7848 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 bEv+54aD2%)dl&FT3WPd!#*}i>`R4xs=O7`S literal 6743 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 uSPs~j)d~KQ()m-7bbm#!|CxI@5}m)&b= literal 7803 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 diff --git a/docs/sources/user_guide/classifier/Adaline_files/Adaline_22_2.png b/docs/sources/user_guide/classifier/Adaline_files/Adaline_22_2.png index 5ecff8c0d3040021c4272bfbccec447832e12091..0eb13b91ca0f7659fd38e1925cc6e441155eb357 100644 GIT binary patch literal 7716 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 literal 7769 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 diff --git a/docs/sources/user_guide/classifier/Adaline_files/Adaline_24_1.png b/docs/sources/user_guide/classifier/Adaline_files/Adaline_24_1.png index af7179a38f719744ad0d34ec646efc2495f15c52..02e935c81466923bbe702025679b1430c3a8dcd1 100644 GIT binary patch literal 7785 zcmch6XH=8h(lAX>6c9a#O4E>lQpHGb2L(c?D!n5mNR0>xp`!v3BuHq6t~7D%skI-8$-A_FLE+5F>yil zwC^%8F~b=T=W%w%$jGtp2aFe+|4pdbamFv~xGR#;Kk-1%+MkK(eFJ$yd=!Z&nA_LH22*qYyF}{eAFw7KA*FZoU1xrnr7n(YJ%=7Sn+*0#Xa7yHNz2 zq?90I;D(-!xQ88A+<>W_2orBL08p%bmUA7{{UYE=p(fNumNtMkHr`qk_h>Fm-?zRf z(TZ#o1I(b_wG2RQUTO@?0}ph`G3eqM{*45{L=RHwN>V-Wz=8ZtbRn{)(1&(u`~oyG zl^zbQ>?%0YeG$-H*qbQ?0oP8++70Oq^C)o+a^ngJ<2OE<<0tVNcwc;6lz4AAV28E0 zwDS1F1QW7A6eU_U%2Kzj0&nLexsrKL7%b-X;g~Ik`%Eztgo%eaNH4@7W%8X?Hg4VT z`UAxk`>{`Hs=!4Fniy07IKql^{(6|u%iF^a-7-+|e8bJ2bg7rOgC978L7{zg|5mb(`Qc21}Qzz(Z-$TrHD>MBOB#Mw$|xKCA~^BS5`Ga2U_HdP-@zZB0znC zgmWk^^0&NUb8@$bZIHokf=xwQ;iuj`1w9*ST4dsBDz~X6nmfH#k33AT&J&tZ3A^x8 zgqL5ZEsqH>@eJ8`2@sK7AE>{Z9i~Ihi(Ur_U80qs52a{Vp_V*N!g2b$<`?$@@lWH! z;pw%nokK}<^RK38;S~C_`0&{h(P>Gt|6&?_IDndlZ^eHMpq9ibcQEr-O8|N}T2pdE zBQ+~a8y&hpEtSsHRkX0-p4DX_=;jWF9>pCc3yh-`DfDT>I&f+dhXHOBh?Qbk(t7>(8z8qAejyta>kvpRaPaK3igNRG$6P zSg&hOTy4BzpTiy5`&mgFn*1J=$T#Hv69?feaF*QjwMR0s#-sl14LJ^^9X?Ij1c^-{ zHgD|Up}NPKpjgE?dP}m`t5KXFGLpwLe6)<$ENVDn+E>4ZK)M`mo%Z=47|eX$(T}

IV_=UhFfD*c$K8zH$iL21$vya`-I#! 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 literal 7740 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 bpNC+%wFQ#FkQf(mSPwGPGu5rQj(qfAQ3I>C literal 6761 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" + "" ] }, "metadata": {}, @@ -483,9 +483,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nAEmqqf8PT7AdEeN+HZcAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -538,7 +538,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -558,7 +558,7 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -567,12 +567,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "Last 3 Class Labels: [ 0.99999716 0.99547815 0.9999811 ]\n" + "Last 3 Class Labels: [ 0.99997968 0.99339873 0.99992707]\n" ] } ], "source": [ - "y_pred = lr.activation(X)\n", + "y_pred = lr.predict_proba(X)\n", "print('Last 3 Class Labels: %s' % y_pred[-3:])" ] }, @@ -592,7 +592,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -601,14 +601,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 30/30 | Cost 0.27 | Elapsed: 0:00:00 | ETA: 0:00:00" + "Iteration: 30/30 | Cost 0.27 | Elapsed: 0:00:00 | ETA: 0:00:00" ] }, { "data": { - "image/png": "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\nRZUSSqNITN7uflwaHTV7su4vjcuXJrZRQYleUhuVlMYNA1YVLO8x0DgriLWiEr2k/c2gZFGlhNIo\n0pw2Sf8qQSIiUlS1pYLvNrNlwBHAD83snnTCEhGRcqoqFXT3u4C7UoqlqaRx+dLENioo0Utqo5LS\nuG76TpV0DzTOCmKtqEQvaX8zKFlUKaE0Cl0SVkSkkalUUESkeejCVDsoLyVjSXFm8YvslcQhIgOj\n5L2D8lIylhRnFr/IXkkcIjIwmjYREckhJW8RkRzStMkOykvJWFKcWfwieyVxiMjAqFRQRKSRqVRQ\nRKR5KHmLiOSQkreISA4peYuI5JCSt4hIDil5i4jkkJK3iEgOKXmLiOSQkreISA4peYuI5JCSt4hI\nDil5i4jkkJK3iEgOKXmLiOSQkreISA4peYuI5JCSt4hIDil5i4jkkJK3iEgOKXmLiOSQkreISA4p\neYuI5JCSt4hIDlWVvM1sppktMbNFZnanmY1KKzARESmt2pH3PGCyux8CPAF8qvqQREQkSVXJ291/\n5u7b4uLDwN7VhyQiIknSnPM+C7gnxfZERKSE1qQNzOxeYPfCmwAHLnP3uXGby4DN7n5LTaIUEZE+\nEpO3ux9Xbr2ZnQGcAEwtt11nVxedXV29yx3t7XS0t1cWpYiI9JGYvMsxs2nARcDb3L273LZK1iIi\n6al2zvurwAjgXjNbYGazUohJREQSVDXydvfXpRWIiIhUTt+wFBHJISVvEZEcUvIWEckhJW8RkRxS\n8hYRySFz96z6yqwjEZEmYsVu1MhbRCSHlLxFRHJIyVtEJIeUvEVEckjJW0Qkh5S8y+js7Kx3CDXR\njPvVjPsE2q+8yXK/lLzL0AmWH824T6D9yhslbxERKUvJW0Qkh7L8hmXumFmHu3fWO460NeN+NeM+\ngfYrb7LcLyVvEZEc0rSJiEgOKXmLiOSQkncCM5tpZkvMbJGZ3Wlmo+odU7XM7D1m9nsz22pmb6p3\nPNUys2lm9riZLTWzS+odTxrMbLaZPWdmv6t3LGkys73N7Bdm9gcz6zKz8+sdUxrMbJiZPWJmC+N+\nfabWfSp5J5sHTHb3Q4AngE/VOZ40dAH/APyy3oFUy8xagK8B7wQmA+8zs9fXN6pUXE/Yp2azBbjQ\n3ScDRwLnNcPj5e7dwLHufihwCHC8mU2pZZ9K3gnc/Wfuvi0uPgzsXc940uDu/+PuT1DiOsE5MwV4\nwt3/7O6bgduAk+scU9Xc/VfA2nrHkTZ3X+Xui+LfLwFLgPH1jSod7r4h/jkMaKXGv2Gg5D0wZwH3\n1DsI6WNlJI+hAAABdElEQVQ8sKxg+VmaJBk0OzObSBilPlLfSNJhZi1mthBYBdzr7o/Wsr/WWjae\nF2Z2L7B74U2EV83L3H1u3OYyYLO731KHEAeskn0SqRczGwHcAVwQR+C5F9+hHxo/F7vLzCa5++Ja\n9afkDbj7ceXWm9kZwAnA1EwCSkHSPjWR5cC+Bct7x9ukQZlZKyFx3+zuc+odT9rc/QUzuw+YBtQs\neWvaJIGZTQMuAk6KH0o0m7zPez8K7G9mE8ysDTgVuLvOMaXFyP/jU8x1wGJ3/3K9A0mLmb3KzEbH\nv4cDxwGP17JPJe9kXwVGAPea2QIzm1XvgKplZu82s2XAEcAPzSy38/juvhX4GKEq6A/Abe6+pL5R\nVc/MbgEeAg4ws2fM7Mx6x5QGMzsaeD8wNZbVLYgDpLzbE7jPzBYR5vB/6u4/rmWH+nq8iEgOaeQt\nIpJDSt4iIjmk5C0ikkNK3iIiOaTkLSKSQ0reIiI5pOQtIpJDSt4iIjn0vwSuZX7V87m+AAAAAElF\nTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -616,9 +616,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -676,7 +676,7 @@ }, { "cell_type": "code", - "execution_count": 46, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -685,14 +685,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 30/30 | Cost 0.21 | Elapsed: 0:00:00 | ETA: 0:00:00" + "Iteration: 30/30 | Cost 0.23 | Elapsed: 0:00:00 | ETA: 0:00:00" ] }, { "data": { - "image/png": "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\nrkJggg==\n", + "image/png": "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\n8tuSAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -700,9 +700,9 @@ }, { "data": { - "image/png": "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\nAABJRU5ErkJggg==\n", + "image/png": "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\nSUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -753,7 +753,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -764,10 +764,13 @@ "text": [ "## LogisticRegression\n", "\n", - "*LogisticRegression(eta=0.01, epochs=50, regularization=None, l2_lambda=0.0, learning='sgd', shuffle=False, random_seed=None, zero_init_weight=False, print_progress=0)*\n", + "*LogisticRegression(eta=0.01, epochs=50, l2_lambda=0.0, minibatches=1, random_seed=None, print_progress=0)*\n", "\n", "Logistic regression classifier.\n", "\n", + " Note that this implementation of Logistic Regression\n", + " expects binary class labels in {0, 1}.\n", + "\n", "**Parameters**\n", "\n", "- `eta` : float (default: 0.01)\n", @@ -777,36 +780,25 @@ "- `epochs` : int (default: 50)\n", "\n", " Passes over the training dataset.\n", - "\n", - "- `learning` : str (default: sgd)\n", - "\n", - " Learning rule, sgd (stochastic gradient descent)\n", - " or gd (gradient descent).\n", - "\n", - "- `regularization` : {None, 'l2'} (default: None)\n", - "\n", - " Type of regularization. No regularization if\n", - " `regularization=None`.\n", + " Prior to each epoch, the dataset is shuffled\n", + " if `minibatches > 1` to prevent cycles in stochastic gradient descent.\n", "\n", "- `l2_lambda` : float\n", "\n", " Regularization parameter for L2 regularization.\n", " No regularization if l2_lambda=0.0.\n", "\n", - "- `shuffle` : bool (default: False)\n", + "- `minibatches` : int (default: 1)\n", "\n", - " Shuffles training data every epoch if True to prevent circles.\n", + " The number of minibatches for gradient-based optimization.\n", + " If 1: Gradient Descent learning\n", + " If len(y): Stochastic Gradient Descent (SGD) online learning\n", + " If 1 < minibatches < len(y): SGD Minibatch learning\n", "\n", "- `random_seed` : int (default: None)\n", "\n", " Set random state for shuffling and initializing the weights.\n", "\n", - "- `zero_init_weight` : bool (default: False)\n", - "\n", - " If True, weights are initialized to zero instead of small random\n", - " numbers in the interval [-0.1, 0.1];\n", - " ignored if solver='normal equation'\n", - "\n", "- `print_progress` : int (default: 0)\n", "\n", " Prints progress in fitting to stderr.\n", @@ -817,22 +809,26 @@ "\n", "**Attributes**\n", "\n", - "- `w_` : 1d-array\n", + "- `w_` : 2d-array, shape={n_features, 1}\n", + "\n", + " Model weights after fitting.\n", + "\n", + "- `b_` : 1d-array, shape={1,}\n", "\n", - " Weights after fitting.\n", + " Bias unit after fitting.\n", "\n", "- `cost_` : list\n", "\n", - " List of floats with sum of squared error cost (sgd or gd) for every\n", + " List of floats with cross_entropy cost (sgd or gd) for every\n", " epoch.\n", "\n", "### Methods\n", "\n", "


\n", "\n", - "*activation(X)*\n", + "*fit(X, y, init_params=True)*\n", "\n", - "Predict class probabilities of X from the net input.\n", + "Learn model from training data.\n", "\n", "**Parameters**\n", "\n", @@ -841,16 +837,26 @@ " Training vectors, where n_samples is the number of samples and\n", " n_features is the number of features.\n", "\n", + "- `y` : array-like, shape = [n_samples]\n", + "\n", + " Target values.\n", + "\n", + "- `init_params` : bool (default: True)\n", + "\n", + " Re-initializes model parametersprior to fitting.\n", + " Set False to continue training with weights from\n", + " a previous model fitting.\n", + "\n", "**Returns**\n", "\n", - "- `Class 1 probability` : float\n", + "- `self` : object\n", "\n", "\n", "
\n", "\n", - "*fit(X, y, init_weights=True)*\n", + "*predict(X)*\n", "\n", - "Learn weight coefficients from training data.\n", + "Predict targets from X.\n", "\n", "**Parameters**\n", "\n", @@ -859,30 +865,35 @@ " Training vectors, where n_samples is the number of samples and\n", " n_features is the number of features.\n", "\n", - "- `y` : array-like, shape = [n_samples]\n", + "**Returns**\n", "\n", - " Target values.\n", + "- `target_values` : array-like, shape = [n_samples]\n", "\n", - "- `init_weights` : bool (default: True)\n", + " Predicted target values.\n", "\n", - " (Re)initializes weights to small random floats if True.\n", + "
\n", "\n", - "**Returns**\n", + "*predict_proba(X)*\n", "\n", - "- `self` : object\n", + "Predict class probabilities of X from the net input.\n", "\n", + "**Parameters**\n", "\n", - "
\n", + "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n", + "\n", + " Training vectors, where n_samples is the number of samples and\n", + " n_features is the number of features.\n", "\n", - "*net_input(X)*\n", + "**Returns**\n", + "\n", + "- `Class 1 probability` : float\n", "\n", - "Compute the linear net input.\n", "\n", "
\n", "\n", - "*predict(X)*\n", + "*score(X, y)*\n", "\n", - "Predict class labels of X.\n", + "Compute the prediction accuracy\n", "\n", "**Parameters**\n", "\n", @@ -891,11 +902,16 @@ " Training vectors, where n_samples is the number of samples and\n", " n_features is the number of features.\n", "\n", + "- `y` : array-like, shape = [n_samples]\n", + "\n", + " Target values (true class labels).\n", + "\n", "**Returns**\n", "\n", - "- `class_labels` : array-like, shape = [n_samples]\n", + "- `acc` : float\n", "\n", - " Predicted class labels.\n", + " The prediction accuracy as a float\n", + " between 0.0 and 1.0 (perfect score).\n", "\n", "\n" ] @@ -905,6 +921,15 @@ "with open('../../api_modules/mlxtend.classifier/LogisticRegression.md', 'r') as f:\n", " print(f.read())" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/docs/sources/user_guide/classifier/LogisticRegression_files/LogisticRegression_46_1.png b/docs/sources/user_guide/classifier/LogisticRegression_files/LogisticRegression_46_1.png index 721870ce9d2f5c52a12d40b07612b3a9aff73a4e..21923694a68a6a252ee18801bc3a6b2d80ce1aa8 100644 GIT binary patch literal 8484 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 diff --git a/docs/sources/user_guide/classifier/LogisticRegression_files/LogisticRegression_46_2.png b/docs/sources/user_guide/classifier/LogisticRegression_files/LogisticRegression_46_2.png index b02e4c60a0c26950bfe8438b7d68ddb5e113fbb8..a05dcab635f93b74f4b50aee0257db7aae17a5b0 100644 GIT binary patch literal 6638 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 H=Mep0OEe&) literal 8670 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 diff --git a/docs/sources/user_guide/classifier/LogisticRegression_files/LogisticRegression_52_2.png b/docs/sources/user_guide/classifier/LogisticRegression_files/LogisticRegression_52_2.png index dbab4cc7db55d6c2a824650882065bc5b74ddaa4..2eceab9451e9b0cde428fabb344baedd991d3dff 100644 GIT binary patch literal 8011 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 literal 8014 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 bIAZ&|EFgBhEBGaFAPz#_(NinDg^Kt;XXS|2 diff --git a/docs/sources/user_guide/classifier/LogisticRegression_files/LogisticRegression_55_1.png b/docs/sources/user_guide/classifier/LogisticRegression_files/LogisticRegression_55_1.png index 9decb5dbb653fbd9c6cedfb4a68fe5e0ec52de56..5a571e97b6b4cb6c745936fdeddd6f3de0f05c4b 100644 GIT binary patch literal 8964 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%0Dy3 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 literal 7819 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 JYA>T7{2yy_rUn22 diff --git a/docs/sources/user_guide/classifier/MultiLayerPerceptron.ipynb b/docs/sources/user_guide/classifier/MultiLayerPerceptron.ipynb new file mode 100644 index 000000000..06fd8ec4c --- /dev/null +++ b/docs/sources/user_guide/classifier/MultiLayerPerceptron.ipynb @@ -0,0 +1,856 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Sebastian Raschka, 2015 \n", + "`mlxtend`, a library of extension and helper modules for Python's data analysis and machine learning libraries\n", + "\n", + "- GitHub repository: https://github.com/rasbt/mlxtend\n", + "- Documentation: http://rasbt.github.io/mlxtend/\n", + "\n", + "View this page in [jupyter nbviewer](http://nbviewer.ipython.org/github/rasbt/mlxtend/blob/master/docs/sources/_ipynb_templates/regressor/linear_regression.ipynb)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Sebastian Raschka \n", + "last updated: 2016-05-01 \n", + "\n", + "CPython 3.5.1\n", + "IPython 4.0.3\n", + "\n", + "matplotlib 1.5.1\n", + "numpy 1.11.0\n", + "scipy 0.17.0\n", + "mlxtend 0.4.1.dev0\n" + ] + } + ], + "source": [ + "%load_ext watermark\n", + "%watermark -a 'Sebastian Raschka' -u -d -v -p matplotlib,numpy,scipy,mlxtend" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Neural Network - Multilayer Perceptron" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Implementation of a multilayer perceptron, a feedforward artificial neural network." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "> from mlxtend.classifier import MultiLayerPerceptron" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Overview" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "*Although the code is fully working and can be used for common classification tasks, this implementation is not geared towards efficiency but clarity – the original code was written for demonstration purposes.*" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Basic Architecture" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](./NeuralNetMLP_files/neuralnet_mlp_1.png) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "The neurons $x_0$ and $a_0$ represent the bias units ($x_0=1$, $a_0=1$). \n", + "\n", + "The $i$th superscript denotes the $i$th layer, and the *j*th subscripts stands for the index of the respective unit. For example, $a_{1}^{(2)}$ refers to the first activation unit **after** the bias unit (i.e., 2nd activation unit) in the 2nd layer (here: the hidden layer)\n", + "\n", + " \\begin{align}\n", + " \\mathbf{a^{(2)}} &= \\begin{bmatrix}\n", + " a_{0}^{(2)} \\\\\n", + " a_{1}^{(2)} \\\\\n", + " \\vdots \\\\\n", + " a_{m}^{(2)}\n", + " \\end{bmatrix}.\n", + " \\end{align}" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Each layer $(l)$ in a multi-layer perceptron, a directed graph, is fully connected to the next layer $(l+1)$. We write the weight coefficient that connects the $k$th unit in the $l$th layer to the $j$th unit in layer $l+1$ as $w^{(l)}_{j, k}$.\n", + "\n", + "For example, the weight coefficient that connects the units\n", + "\n", + "$a_0^{(2)} \\rightarrow a_1^{(3)}$\n", + "\n", + "would be written as $w_{1,0}^{(2)}$." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Activation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the current implementation, the activations of the hidden layer(s) are computed via the logistic (sigmoid) function $\\phi(z) = \\frac{1}{1 + e^{-z}}.$" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![](./NeuralNetMLP_files/logistic_function.png)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "(For more details on the logistic function, please see [`classifier.LogisticRegression`](./LogisticRegression.md); a general overview of different activation function can be found [here](../general_concepts/activation-functions.md).)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Furthermore, the MLP uses the softmax function in the output layer, For more details on the logistic function, please see [`classifier.SoftmaxRegression`](./SoftmaxRegression.md)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### References\n", + "\n", + "- D. R. G. H. R. Williams and G. Hinton. [Learning representations by back-propagating errors](http://lia.disi.unibo.it/Courses/SistInt/articoli/nnet1.pdf). Nature, pages 323–533, 1986.\n", + "- C. M. Bishop. [Neural networks for pattern recognition](https://books.google.de/books?hl=en&lr=&id=T0S0BgAAQBAJ&oi=fnd&pg=PP1&dq=Neural+networks+for+pattern+recognition&ots=jL6TqGbBld&sig=fiLrMg-RJx22cgQ7zd2CiwUqNqI&redir_esc=y#v=onepage&q=Neural%20networks%20for%20pattern%20recognition&f=false). Oxford University Press, 1995.\n", + "- T. Hastie, J. Friedman, and R. Tibshirani. [The Elements of Statistical Learning](http://statweb.stanford.edu/%7Etibs/ElemStatLearn/), Volume 2. Springer, 2009." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Examples" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 1 - Classifying Iris Flowers" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load 2 features from Iris (petal length and petal width) for visualization purposes:" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from mlxtend.data import iris_data\n", + "X, y = iris_data()\n", + "X = X[:, [0, 3]] \n", + "\n", + "# standardize training data\n", + "X_std = (X - X.mean(axis=0)) / X.std(axis=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Train neural network for 3 output flower classes ('Setosa', 'Versicolor', 'Virginica'), regular gradient decent (`minibatches=1`), 30 hidden units, and no regularization." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Gradient Descent" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setting the `minibatches` to `1` will result in gradient descent training; please see [Gradient Descent vs. Stochastic Gradient Descent](../general_concepts/gradient-optimization.md) for details." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Iteration: 150/150 | Cost 0.06 | Elapsed: 0:00:00 | ETA: 0:00:00" + ] + } + ], + "source": [ + "from mlxtend.classifier import MultiLayerPerceptron as MLP\n", + "\n", + "nn1 = MLP(hidden_layers=[50], \n", + " l2=0.00, \n", + " l1=0.0, \n", + " epochs=150, \n", + " eta=0.05, \n", + " momentum=0.1,\n", + " decrease_const=0.0,\n", + " minibatches=1, \n", + " random_seed=1,\n", + " print_progress=3)\n", + "\n", + "nn1 = nn1.fit(X_std, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from mlxtend.evaluate import plot_decision_regions\n", + "import matplotlib.pyplot as plt\n", + "\n", + "fig = plot_decision_regions(X=X_std, y=y, clf=nn1, legend=2)\n", + "plt.title('Multi-layer Perceptron w. 1 hidden layer (logistic sigmoid)')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "plt.plot(range(len(nn1.cost_)), nn1.cost_)\n", + "plt.ylabel('Cost')\n", + "plt.xlabel('Epochs')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Accuracy: 96.67%\n" + ] + } + ], + "source": [ + "print('Accuracy: %.2f%%' % (100 * nn1.score(X_std, y)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Stochastic Gradient Descent" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Setting `minibatches` to `n_samples` will result in stochastic gradient descent training; please see [Gradient Descent vs. Stochastic Gradient Descent](../general_concepts/gradient-optimization.md) for details." + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Iteration: 5/5 | Cost 0.13 | Elapsed: 00:00:00 | ETA: 00:00:00" + ] + }, + { + "data": { + "image/png": "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\n9f8BaMpFEizK0R4AAAAASUVORK5CYII=\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "nn2 = MLP(hidden_layers=[50], \n", + " l2=0.00, \n", + " l1=0.0, \n", + " epochs=5, \n", + " eta=0.005, \n", + " momentum=0.1,\n", + " decrease_const=0.0,\n", + " minibatches=len(y), \n", + " random_seed=1,\n", + " print_progress=3)\n", + "\n", + "nn2.fit(X_std, y)\n", + "\n", + "plt.plot(range(len(nn2.cost_)), nn2.cost_)\n", + "plt.ylabel('Cost')\n", + "plt.xlabel('Epochs')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Continue the training for 25 epochs..." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Iteration: 25/25 | Cost 0.06 | Elapsed: 0:00:00 | ETA: 0:00:00" + ] + } + ], + "source": [ + "nn2.epochs = 25\n", + "nn2 = nn2.fit(X_std, y)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nIjn+Fw1mwRPedgMRAAAAAElFTkSuQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(range(len(nn2.cost_)), nn2.cost_)\n", + "plt.ylabel('Cost')\n", + "plt.xlabel('Epochs')\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Example 2 - Classifying Handwritten Digits from a 10% MNIST Subset" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Load a **5000-sample subset** of the [MNIST dataset](http://rasbt.github.io/mlxtend/docs/data/mnist/) (please see [`data.load_mnist`](../data/load_mnist.md) if you want to download and read in the complete MNIST dataset).\n" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "from mlxtend.data import mnist_data\n", + "from mlxtend.preprocessing import shuffle_arrays_unison\n", + "\n", + "X, y = mnist_data()\n", + "X, y = shuffle_arrays_unison((X, y), random_seed=1)\n", + "X_train, y_train = X[:500], y[:500]\n", + "X_test, y_test = X[500:], y[500:]" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Visualize a sample from the MNIST dataset to check if it was loaded correctly:" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "data": { + "image/png": "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\nQmCC\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "def plot_digit(X, y, idx):\n", + " img = X[idx].reshape(28,28)\n", + " plt.imshow(img, cmap='Greys', interpolation='nearest')\n", + " plt.title('true label: %d' % y[idx])\n", + " plt.show()\n", + " \n", + "plot_digit(X, y, 3500) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Standardize pixel values:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "import numpy as np\n", + "from mlxtend.preprocessing import standardize\n", + "\n", + "X_train_std, params = standardize(X_train, \n", + " columns=range(X_train.shape[1]), \n", + " return_params=True)\n", + "\n", + "X_test_std = standardize(X_test,\n", + " columns=range(X_test.shape[1]),\n", + " params=params)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Initialize the neural network to recognize the 10 different digits (0-10) using 300 epochs and mini-batch learning." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "collapsed": false + }, + "outputs": [], + "source": [ + "nn1 = MLP(hidden_layers=[150], \n", + " l2=0.00, \n", + " l1=0.0, \n", + " epochs=100, \n", + " eta=0.005, \n", + " momentum=0.0,\n", + " decrease_const=0.0,\n", + " minibatches=100, \n", + " random_seed=1,\n", + " print_progress=3)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Learn the features while printing the progress to get an idea about how long it may take." + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Iteration: 100/100 | Cost 0.01 | Elapsed: 0:00:22 | ETA: 0:00:00" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import matplotlib.pyplot as plt\n", + "\n", + "nn1.fit(X_train_std, y_train)\n", + "\n", + "plt.plot(range(len(nn1.cost_)), nn1.cost_)\n", + "plt.ylabel('Cost')\n", + "plt.xlabel('Epochs')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Train Accuracy: 100.00%\n", + "Test Accuracy: 84.56%\n" + ] + } + ], + "source": [ + "print('Train Accuracy: %.2f%%' % (100 * nn1.score(X_train_std, y_train)))\n", + "print('Test Accuracy: %.2f%%' % (100 * nn1.score(X_test_std, y_test)))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Please note** that this neural network has been trained on only 10% of the MNIST data for technical demonstration purposes, hence, the lousy predictive performance." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# API" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "## NeuralNetMLP\n", + "\n", + "*NeuralNetMLP(n_output, n_features, n_hidden=30, l1=0.0, l2=0.0, epochs=500, eta=0.001, alpha=0.0, decrease_const=0.0, shuffle_init=True, shuffle_epoch=True, minibatches=1, zero_init_weight=False, random_seed=None, print_progress=0)*\n", + "\n", + "Feedforward neural network / Multi-layer perceptron classifier.\n", + "\n", + "**Parameters**\n", + "\n", + "- `n_output` : int\n", + "\n", + " Number of output units, should be equal to the\n", + " number of unique class labels.\n", + "\n", + "- `n_features` : int\n", + "\n", + " Number of features (dimensions) in the target dataset.\n", + " Should be equal to the number of columns in the X array.\n", + "\n", + "- `n_hidden` : int (default: 30)\n", + "\n", + " Number of hidden units.\n", + "\n", + "- `l1` : float (default: 0.0)\n", + "\n", + " Lambda value for L1-regularization.\n", + " No regularization if l1=0.0 (default)\n", + "\n", + "- `l2` : float (default: 0.0)\n", + "\n", + " Lambda value for L2-regularization.\n", + " No regularization if l2=0.0 (default)\n", + "\n", + "- `epochs` : int (default: 500)\n", + "\n", + " Number of passes over the training set.\n", + "\n", + "- `eta` : float (default: 0.001)\n", + "\n", + " Learning rate.\n", + "\n", + "- `alpha` : float (default: 0.0)\n", + "\n", + " Momentum constant. Factor multiplied with the\n", + " gradient of the previous epoch t-1 to improve\n", + " learning speed\n", + " w(t) := w(t) - (grad(t) + alpha*grad(t-1))\n", + "\n", + "- `decrease_const` : float (default: 0.0)\n", + "\n", + " Decrease constant. Shrinks the learning rate\n", + " after each epoch via eta / (1 + epoch*decrease_const)\n", + "\n", + "- `random_weights` : list (default: [-1.0, 1.0])\n", + "\n", + " Min and max values for initializing the random weights.\n", + " Initializes weights to 0 if None or False.\n", + "\n", + "- `shuffle_init` : bool (default: True)\n", + "\n", + " Shuffles (a copy of the) training data before training.\n", + "\n", + "- `shuffle_epoch` : bool (default: True)\n", + "\n", + " Shuffles training data before every epoch if True to prevent circles.\n", + "\n", + "- `minibatches` : int (default: 1)\n", + "\n", + " Divides training data into k minibatches for efficiency.\n", + " Normal gradient descent learning if k=1 (default).\n", + "\n", + "- `random_seed` : int (default: None)\n", + "\n", + " Set random seed for shuffling and initializing the weights.\n", + "\n", + "- `zero_init_weight` : bool (default: False)\n", + "\n", + " If True, weights are initialized to zero instead of small random\n", + " numbers following a standard normal distribution with mean=0 and\n", + " stddev=1.\n", + "\n", + "- `print_progress` : int (default: 0)\n", + "\n", + " Prints progress in fitting to stderr.\n", + " 0: No output\n", + " 1: Epochs elapsed and cost\n", + " 2: 1 plus time elapsed\n", + " 3: 2 plus estimated time until completion\n", + "\n", + "**Attributes**\n", + "\n", + "- `cost_` : list\n", + "\n", + " Sum of squared errors after each epoch.\n", + "\n", + "### Methods\n", + "\n", + "
\n", + "\n", + "*fit(X, y)*\n", + "\n", + "Learn weight coefficients from training data.\n", + "\n", + "**Parameters**\n", + "\n", + "- `X` : array, shape = [n_samples, n_features]\n", + "\n", + " Input layer with original features.\n", + "\n", + "- `y` : array, shape = [n_samples]\n", + "\n", + " Target class labels.\n", + "\n", + "**Returns:**\n", + "\n", + "self\n", + "\n", + "
\n", + "\n", + "*predict(X)*\n", + "\n", + "Predict class labels of X.\n", + "\n", + "**Parameters**\n", + "\n", + "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n", + "\n", + " Training vectors, where n_samples is the number of samples and\n", + " n_features is the number of features.\n", + "\n", + "**Returns**\n", + "\n", + "- `class_labels` : array-like, shape = [n_samples]\n", + "\n", + " Predicted class labels.\n", + "\n", + "
\n", + "\n", + "*score(X, y)*\n", + "\n", + "Compute the prediction accuracy\n", + "\n", + "**Parameters**\n", + "\n", + "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n", + "\n", + " Training vectors, where n_samples is the number of samples and\n", + " n_features is the number of features.\n", + "\n", + "- `y` : array-like, shape = [n_samples]\n", + "\n", + " Target values (true class labels).\n", + "\n", + "**Returns**\n", + "\n", + "- `acc` : float\n", + "\n", + " The prediction accuracy as a float\n", + " between 0.0 and 1.0 (perfect score).\n", + "\n", + "\n" + ] + } + ], + "source": [ + "with open('../../api_modules/mlxtend.classifier/NeuralNetMLP.md', 'r') as f:\n", + " print(f.read())" + ] + } + ], + "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.5.1" + } + }, + "nbformat": 4, + "nbformat_minor": 0 +} diff --git a/docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_26_0.png b/docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_26_0.png new file mode 100644 index 0000000000000000000000000000000000000000..fa59c4ddfeafe95c6468496dc1a003e55c8ec485 GIT binary patch literal 13083 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 literal 0 HcmV?d00001 diff --git a/docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_27_0.png b/docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_27_0.png new file mode 100644 index 0000000000000000000000000000000000000000..95640adca777d5bff13a3b5629c5321ce6d5357d GIT binary patch literal 9909 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 literal 0 HcmV?d00001 diff --git a/docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_31_1.png b/docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_31_1.png new file mode 100644 index 0000000000000000000000000000000000000000..aaa6fcdb413121552419eff3a71e2b0f07e8749f GIT binary patch literal 7889 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 F`~zAvF>e3> literal 0 HcmV?d00001 diff --git a/docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_45_1.png b/docs/sources/user_guide/classifier/MultiLayerPerceptron_files/MultiLayerPerceptron_45_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ed9f7029e5218a70f2dc8ca81fc260f6654f707b GIT binary patch literal 7105 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 literal 0 HcmV?d00001 diff --git a/docs/sources/user_guide/classifier/NeuralNetMLP.ipynb b/docs/sources/user_guide/classifier/NeuralNetMLP.ipynb deleted file mode 100644 index fd301f9e9..000000000 --- a/docs/sources/user_guide/classifier/NeuralNetMLP.ipynb +++ /dev/null @@ -1,987 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Sebastian Raschka, 2015 \n", - "`mlxtend`, a library of extension and helper modules for Python's data analysis and machine learning libraries\n", - "\n", - "- GitHub repository: https://github.com/rasbt/mlxtend\n", - "- Documentation: http://rasbt.github.io/mlxtend/\n", - "\n", - "View this page in [jupyter nbviewer](http://nbviewer.ipython.org/github/rasbt/mlxtend/blob/master/docs/sources/_ipynb_templates/regressor/linear_regression.ipynb)" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Sebastian Raschka \n", - "last updated: 2016-02-24 \n", - "\n", - "CPython 3.5.0\n", - "IPython 4.0.3\n", - "\n", - "matplotlib 1.5.1\n", - "numpy 1.10.4\n", - "scipy 0.17.0\n", - "mlxtend 0.3.1.dev0\n" - ] - } - ], - "source": [ - "%load_ext watermark\n", - "%watermark -a 'Sebastian Raschka' -u -d -v -p matplotlib,numpy,scipy,mlxtend" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [ - "%matplotlib inline" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Neural Network - Multilayer Perceptron" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Implementation of a multilayer perceptron, a feedforward artificial neural network." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "> from mlxtend.classifier import NeuralNetMLP" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Overview" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "*Although the code is fully working and can be used for common classification tasks, this implementation is not geared towards efficiency but clarity – the original code was written for demonstration purposes.*" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Basic Architecture" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![](./NeuralNetMLP_files/neuralnet_mlp_1.png) " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The neurons $x_0$ and $a_0$ represent the bias units ($x_0=1$, $a_0=1$). \n", - "\n", - "The $i$th superscript denotes the $i$th layer, and the *j*th subscripts stands for the index of the respective unit. For example, $a_{1}^{(2)}$ refers to the first activation unit **after** the bias unit (i.e., 2nd activation unit) in the 2nd layer (here: the hidden layer)\n", - "\n", - " \\begin{align}\n", - " \\mathbf{a^{(2)}} &= \\begin{bmatrix}\n", - " a_{0}^{(2)} \\\\\n", - " a_{1}^{(2)} \\\\\n", - " \\vdots \\\\\n", - " a_{m}^{(2)}\n", - " \\end{bmatrix}.\n", - " \\end{align}" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Each layer $(l)$ in a multi-layer perceptron, a directed graph, is fully connected to the next layer $(l+1)$. We write the weight coefficient that connects the $k$th unit in the $l$th layer to the $j$th unit in layer $l+1$ as $w^{(l)}_{j, k}$.\n", - "\n", - "For example, the weight coefficient that connects the units\n", - "\n", - "$a_0^{(2)} \\rightarrow a_1^{(3)}$\n", - "\n", - "would be written as $w_{1,0}^{(2)}$." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Activation" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In the current implementation, the activations of the hidden and output layers are computed via the logistic (sigmoid) function $\\phi(z) = \\frac{1}{1 + e^{-z}}.$" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "![](./NeuralNetMLP_files/logistic_function.png)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "(For more details on the logistic function, please see [`classifier.LogisticRegression`](./LogisticRegression.md); a general overview of different activation function can be found [here](../general_concepts/activation-functions.md).)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### References\n", - "\n", - "- D. R. G. H. R. Williams and G. Hinton. [Learning representations by back-propagating errors](http://lia.disi.unibo.it/Courses/SistInt/articoli/nnet1.pdf). Nature, pages 323–533, 1986.\n", - "- C. M. Bishop. [Neural networks for pattern recognition](https://books.google.de/books?hl=en&lr=&id=T0S0BgAAQBAJ&oi=fnd&pg=PP1&dq=Neural+networks+for+pattern+recognition&ots=jL6TqGbBld&sig=fiLrMg-RJx22cgQ7zd2CiwUqNqI&redir_esc=y#v=onepage&q=Neural%20networks%20for%20pattern%20recognition&f=false). Oxford University Press, 1995.\n", - "- T. Hastie, J. Friedman, and R. Tibshirani. [The Elements of Statistical Learning](http://statweb.stanford.edu/%7Etibs/ElemStatLearn/), Volume 2. Springer, 2009." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# Examples" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example 1 - Classifying Iris Flowers" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Load 2 features from Iris (petal length and petal width) for visualization purposes:" - ] - }, - { - "cell_type": "code", - "execution_count": 75, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", - " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", - " 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", - " 0, 0, 0, 0, 0, 0, 0, 0])" - ] - }, - "execution_count": 75, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "y" - ] - }, - { - "cell_type": "code", - "execution_count": 85, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from mlxtend.data import iris_data\n", - "X, y = iris_data()\n", - "y = y[50:150]\n", - "y[y==2] = 0\n", - "X = X[50:150, [0, 3]] \n", - "\n", - "# standardize training data\n", - "X_std = (X - X.mean(axis=0)) / X.std(axis=0)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Train neural network for 3 output flower classes ('Setosa', 'Versicolor', 'Virginica'), regular gradient decent (`minibatches=1`), 30 hidden units, and no regularization." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Gradient Descent" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Setting the `minibatches` to `1` will result in gradient descent training; please see [Gradient Descent vs. Stochastic Gradient Descent](../general_concepts/gradient-optimization.md) for details." - ] - }, - { - "cell_type": "code", - "execution_count": 122, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Epoch: 1/1000 | Elapsed: 00:00:00 | ETA: 00:00:00/Users/Sebastian/Dropbox/_ot/code/mlxtend/mlxtend/classifier/neuralnet_mlp.py:223: RuntimeWarning: divide by zero encountered in log\n", - " term2 = (1.0 - y_enc) * np.log(1.0 - output)\n", - "/Users/Sebastian/Dropbox/_ot/code/mlxtend/mlxtend/classifier/neuralnet_mlp.py:223: RuntimeWarning: invalid value encountered in multiply\n", - " term2 = (1.0 - y_enc) * np.log(1.0 - output)\n", - "Epoch: 1000/1000 | Elapsed: 0:00:02 | ETA: 0:00:00" - ] - } - ], - "source": [ - "from mlxtend.classifier import NeuralNetMLP\n", - "\n", - "import numpy as np\n", - "nn1 = NeuralNetMLP(n_output=len(np.unique(y)), \n", - " n_features=X_std.shape[1], \n", - " n_hidden=200, \n", - " l2=0.00, \n", - " l1=0.0, \n", - " epochs=1000, \n", - " eta=0.05, \n", - " alpha=0.1,\n", - " decrease_const=0.0,\n", - " minibatches=1, \n", - " shuffle_init=False,\n", - " shuffle_epoch=False,\n", - " random_seed=1,\n", - " print_progress=3)\n", - "\n", - "nn1 = nn1.fit(X_std, y)" - ] - }, - { - "cell_type": "code", - "execution_count": 125, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 125, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEKCAYAAADpfBXhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8HHW9//HXJwkt1ZJSAgUKlJsWG80BvBQUqpGCglrx\nggfQKhYvR1DRc4RURaiAKOT3O4rH3yleQSACSkE5RVHKJVCu8QiFQEpbsIXeLyE0lIbQJp/fHzOb\nbNJkN9nZzWxm38/Ho4/u7Nw+c9lPvvOd73fG3B0REUmWsrgDEBGR/FNyFxFJICV3EZEEUnIXEUkg\nJXcRkQRSchcRSaCiTe5m1m1mh2UY/7SZvXeQcQeH8xft9snIMrMvmNl9Gcb/zczOHGTc4WbWnWHe\ny8zsmnzE2W+5M81sZb6Xmysz+4OZfSj8nHF/DmOZh5pZe47z/srMvh01hrTlfc/M5udreflar5mt\nTuU6M/ummf1gKMvNe/Izs1Vm9pqZ7dXv+yfChDtliIvqaYBvZtea2aV9Rrq/zd0fGMr8cQr3x3Yz\nazez9eG2vCHuuNKZ2UozOyHuOIbLzM4zs/81s04z++UQZhn0nHD3D7r7TbnMW2DFch4fBRzh7n9J\n+zpybO6+0t0rh7D+Xf6YuPuX3P2KqDGkLe8H7n5uvpZXoPX+Avi8mU3MNmEhSrYOrAR6SkFm9jZg\nHMM7GSzPcRWcmQ0UswMfDk/gtwPvBL6Xw7LLI4aXszjXncUa4BLg2rgDSYoMx/orQMNIxtKPUSR/\n6OLk7h3A34DPZpu2UNUWNwBnpQ2fBVyXPoGZ3WdmZ6cNn2Vmi/svyMy+BHwGqAtLv7eH3w+5tGlm\nnzezlnD+58zsy2njms3sw2nDFWa22cyODIePNbOHzKwtvPp4X79t+IGZPWhmrwKHDhYCgLuvB+4E\n3hbOX2lmvzazdeGl12WpPxDh/njQzH5sZluAean9kbYtT4clKsxsfzNbYGabzOx5M/t6WpzzzOwW\nM7s5nO9/zawmHHc9MAVYGI47P61a62wzewG4J5z2o+E6XzKze83sLWnrWGlm3zKzJ8N9dZOZjRnk\neKwys6PDz58J1zUtHD7bzG7LflTB3W9z94VA21CmB8rC/dkWngcnpcW02Mw+F34uM7OfmNkWM3sO\nOLlf/Iea2QNmttXM7gSq+o0/zsweCdfzuJnN6Lee74fnVLuZ/cXM9hxK8GZ2YXhs28Pzdlb4/dhw\nXUekTbufmb2aKuGFx25JON0DZvbWtGlXh8f9KWDbIKs/Bbg/Q2zHm9nfw+U/ambT08YdFm73VjP7\nq5nNN7Nrw3F9qrwsKKGvtN7f6r9aUDj8GTDDzF4xs03htDeY2cVp834i/I1uNbPlZnbiILF+18zW\nhtO1WG+VR5/qNTObY2YvhL+p71jf6pHLwnP8xjCmJ8LtvDCcfpWl5SczO8DMFppZq5ktM7M5aeP6\nr/fz4fybzGzuAJtwP/DhAb7vy93z+o+g1H4CsBQ4guAPyIvAQUA3MCWc7j7g7LT5zgIeSBvuBg4L\nP18LXDrQegaJ4WCgCygLh08BDgk/zwBeBY4Khy8Abk6b91TgyfDzAcAW4IPh8MxwuCptG1YBbwm3\ns3yw/RF+Pgh4Gvh+OPxHYD6wO7A38CjwpbT9sQM4N1z2WOBTwGrg7eE0h4XLNOB/gQuBcuAQ4Dng\npHC6eUAn8PFw/LeAf6biDWN8f7/91w38luCKayzwZoIf/gnhMi4AVgAVact4FNgX2BNoAb48yPH5\nLfDv4edfhMv5t3D4OuAbwzznfgT8Mss0XwBeD/erAV8DXkwbvxj4XPj5a0AzsD8wkeDH1JU2bRNw\nBbAb8D7gFeCatGO8BTgxHP4AsBmYmLaeZeGx2x14gH7ndtp6ZgL/TBs+DZgUfj4jXO8+4fDPgcvS\npv0P4Nbw87uA9QRXjgZ8Pjw/UsduNfD3cHvHDhBHZXg+TOi3P+8NP+8NvAz8K8G5OjvcBxPS9tcP\ngQqC31972v46PLVvgT3C5aR+9/sCb+m/vrQYbgAuDj+/h+CPfG3ab/fNA2xLNcFvNrXfDqY3N1yW\nFldNGOcx4XH+McH58960aV8F3h9u8+8IflN14fBXgOVp630QuCpc1tHhOTFjkPW+AhwbTvvT9PWm\nHc8N2X4XhbzhmCq9n0SQ6NcVcF0Zufud7r4q/LwYuIvgJIPgUvMUMxsfDs8Grg8/fwb4s7v/LZz3\nHoIk+qG0xf/W3Z9192537xokhD+Z2UsEP+T7gB+Z2SSCPzr/7u6vufsWgoOfflNvrbvPD5fdSXCC\n17v742E8/3T31QQHe293v9zdu8Jt/TVBAkj5h7v/MYzxxwSJ5di08f2rlByY5+4d4bpPB+5w93vD\nZfxfgsT/nrR5furuG939ZWAhcNQg++MBgqQIwXH4Udrw+8hQQozoOXe/zoNfyHXAgdbv3lDoU8BP\n3H29u7cRJHIgKIUC/0LwB3qHu98PpNdDfxa43d3vBnD3u4An6Vv6/0147F4DbmHw/dSHuy9w903h\n55sJktQ7w9HXE5yv6XGkzuMvAfPd/XEP/Db8/l1p018Vbm/nAKvek+B8eGWQ0D4CPO3ufwjP1QaC\nRPdhMzuUIGFd4u47w9/fnzNsZjdQY2Zjw3Pp2QzTpjub4A98I4C7r3X3FQNMt5OgsFJjZuXu/kIq\nN/RzGvBHd3/M3XcQVKX2/400uvt97t5NcBwnunt9OHwzcLiZvSHcB+8Cvh2eM08QFFgHqlpJrffR\ncL3fZdcallcIjklGhUzuDcCnCUoJ12eeNJrwsqg9/HfgAONPCS+TW82sjSCp7g09VSUPAZ80swnh\nuN+Fsx4M/KsF1RAvhfMeB+yXtvjVQwjxVHffy90Pdfevhz+ggwn+Mq9PW/bPU3ENsuyDgOcHWP7B\nwAH94vwOMGmgZYXJbQ0wOUvca9I+TwZe6LeM1QQlpJSNaZ+3A+MZ2P0El9j7EZyDfwCON7ODgUp3\nX5Ilrlxt6Bcfg8Q4mb77/oW0z/sDrWFiHmj8wcCn+x2LY8L5BotjsP3UR3i5viRtuUfQex4/DOyw\noErorQTnSuqPzsHA3H4x7UffY5d+rPt7Ofx/j0HG9zk3Qi+Ey59MsL/S/2gM+Jtx91cICjdfAzaY\n2f+Y2ZszxJVusN9G/3UsJ7hyvRTYaGa/Cwta/fU5B9x9O7tW/6Wf7x0EpfH0YQiO7f7AlgHOmfT9\nP9h6XwVe6jdN6gono4psE+TK3V+0oBnXKQR/Vft7FUhvNbLfANP0LC7LuvqcdGGSSH0eAywgKJHf\n7u7dZvZH+v4Vvh74IkGyfdjdUz++1cD17v5vucaWCmOA71YDrxFU8Qy2jP7frya4jB1oWf909yMG\nGJdyUE8wZgYcCKwdZD0DrX8d4b2CfsvMlBQGXqj782bWAXydoCpum5ltAL5McPkat/Wk7S+C5Jg+\nriosWaYS1hR6/1isJrjE/mo+AwpLf/MJqs8eC79rZtfz+LMEP/w/hCW/VEyXuPv/ybCKTC2J2i24\n9zKVoPqmv3XsWgc8haDaMbW/xrj76+G4g+hNfv3X9Tfgb2Y2luCK6ecE1VPZfmeD/TYGWseNwI1m\ntgfBFe6PCK6K060PtwEAM3sjQRVdLtYBe5vZOA9uiBIue+0A064nqFZNrXc80P/qchrB1WBGhW4H\nfjZBffNAB3IJ8AkzG2dmb2LXnZtuI0Ed5XCkTvox4b8tYWI/haAeNN2fCOojz6PvVUYDMMvMPmDB\nTbbdzex9ZpatxJtV+AfkLuAnZraHBQ6zQdruh34NnG9mb4eem1EHEdRpvmJmdWGM5Wb2VjN7Z9q8\n7zCzj1nQGuLfCf6wPBaO28Cu+7f/H6Q/EFxmv9+Cm87nh8t4JIfNh6D0/jV6q2Aa+w1nFW7n7gT3\nACosuLGYj3P6D8A3zWyymVUR1KMCQVUY8BTwfTPbLTxe6YntBuDjZnZi2jlTG16lRDGeoMpiS7jd\nXyK415OugeCy/kz6nse/Ar6aOh/MbLyZfcTMxg1j/X+ht+qsvzuAajP7VBjbpwkS7Z/D/dUMzAv3\n1/Hs+ocg1Yhgv7S4dhIUAFM3WzcSVKMNViD9DfDF8PdpFtzAnNp/IjN7S3g8xhDch+pIW0e6W4CP\nmdl0M9uNoKQ/3NY6qYYUqwiqc39oZmMsaAQxh+BcGWi9p5rZMWGMPxggvvcRNMzIqFBNIYMPQRvW\nxwcaB/yE4IbhBoL6p/7NrNKn/Q3w1vCS8rYBxg8ah7tvI0jat1hQ730GcHufCYPLpVsJWrvclvb9\nGoIbrN8luOR6ATif3v02lIOdaZrPEfzhaSG49LqFDFcw7r4AuJyg1NFOUDLaK6zj+whB3e1KYBPB\nDzq9/fDtBPXmbQR1sx9Pu0dwBXBRuH//Y6C4w8vZ2cD/I9gXHwZmufvOIWznQO4nSFgPDDKMmX3O\nzJ7IsIzvE5SYv0Vwf2c7MJxOLT7I56sJWgg1E/wBvKXffGcAxwOtBNVfPYnU3V8guHF9EcF+WkVw\nc3M458yugbo3E7QY+TtBSfDNBDew06d5IYy5090fTfv+MeAc4OrwN/AsfevnhxLTrxik+V14v+ij\nBPt+C/ANgua/W8NJziRISFsI9svNBIm1//pTN+rXEey7dwOpK6BFBDfeN5rZLvfv3P0RgnsLPwO2\nAvcSXJ32NxaoD5e/jqDu+sIBltdMUAhaQFDC3kxwvAe6JzGY9P16OsGVzwaCwsO3w/sPA633GwTn\n3Jowxp5qvPAP3wcZQlW3DV4jUFrM7CKCu+ufizuWfDOzecDhSdw26cvMrgOed/dLs048/GXfTFBN\n+ZesE2dezgLgCXe/PD+RFV5YhfMyQWu/gapTRiqObxI0nsjaV6Zgde6jiQUtJr5A39KMyKhiQUue\njxK0Tsk7dz8j+1S7MrN30XvlewrBVd+8PIZWEBb0I7ib4IrixwQtzmJL7ADuftVQpy35Z6+Y2RcJ\n2uH/2d0fijsekVyY2Q+BJ4DLw+rEYjKZoLqtHfhP4Ivu/ky8IQ3JxwmqRV4kuAE64LOHipWqZURE\nEqjkS+4iIkk0knXuukQQERm+nB6iqJK7iEgCKbmLiCRQ5GqZsJvwAwSdcSqABe5+SdTliohI7vLS\nWsbM3uDu28Ou7Q8B57l7U7/JVOcuIjJ88dW5h09Mg6BrbwVK5CIiscpLcg8fkPQEwTMQFrn7QE+O\nExGREZKvknu3ux9N8KCeY8ysOh/LFRGR3OS1nXv43Of7CN4605I+rrGxkcbGxp7h2tpaamtr87l6\nEREJRb6hamZ7AzvcfWv4OMq/AVfs8uS4hQtVDy8iMlyzZuV0QzUfJff9gevClySUAb+P+kjQnTt3\nct3ixWzs6BjwKfojrQzYd9w4zpoxg4oKPUhTRIpf5EwVPlz+7XmIpcddTz5J5ZQpfPakkxiz2275\nXHROXt+xg9sXLeKuJ5/kQ+94R9zhiIhkVZQ9VJe2tnLicccVRWIHGLPbbpzwnvewtLU17lBERIak\nKJN7x86dTNhjsBetx2NiZSWdO3dmn1BEpAgUZXIHKCsrrtDKysqKov5fRGQoiiuDiohIXii5i4gk\nUMkn99UbNlD9kY9QUV3NHu94Bxf/7GdxhyQiElnJJ/dZ557LmDFj2PLoo1x9ySVc8YtfcO9jj8Ud\nlohIJCWd3Nu2bqV56VKuvvhi9qysZPZHPsKR1dX85Prr4w5NRCSSRHW3/O7FF9PVry16eVUVP7z0\n0gGnf2jJEsyMdx91VM93b5s6lUefeKKgcYqIFFqikntXaytXHnhgn+/mrlkz6PRtW7cyZsyYPt/t\nuccedLz2WkHiExEZKSVdLTNxwgRef/31Pt+1tbczbvfdY4pIRCQ/Sjq5H3fUUbg7jyxZ0vPd08uX\n86ZDDokvKBGRPEhUtUx5VdUu1TDlVVWDTj9xwgT+Zdo0vnrZZdxzzTXccf/9PLV0KfXnn1/oUEVE\nCipRyX2wG6eZ/M/8+Xzwi19kn3e/m3G77853zz2XE445pgDRiYiMnEQl91wctN9+tNxxR9xhiIjk\nVUnXuYuIJJWSu4hIAim5i4gkkJK7iEgCKbmLiCSQkruISAIpuYuIJJCSu4hIAim5i4gkUMkn93Mu\nvZT9jj+e8mnTOOaMM+IOR0QkL0o+uR9ywAF86wtf4Ph3vSvuUERE8iZxyb27u5ub77yLzs7OIU0/\n9wtf4II5c5g4YUKBIxMRGTmJS+6PPPUUv16wkkWPNsUdiohIbCIndzM70MzuNbNnzKzZzM7LR2C5\n6O7upuH2f7DHGz/AzX9ZOuTSu4hI0uSj5L4T+A93fyvwbuCrZvaWPCx32B556ilWb9yPg/Y/lq3b\njlDpXURKVuTk7u4b3H1J+HkbsBQ4IOpyhytVai8vO4Ktr6xm9zFvUuldREpWXl/WYWaHAEcBj+Vz\nuUOxbft29po4lrG7PwY8xsQJsPuYcbS1t7PfPvsMOt/rO3bwWmcnXd3ddHV1sW37dsbsthtjdttt\n5IIXEcmzvCV3MxsPLAC+EZbg+2hsbqaxublnuLamhtqamnytnsrx47n8vNnDnu/TF1zArXfe2TO8\nx9FHc9qHPsQtP/lJ3mKT+Fx3++10trf3DI+trOSsU09N/LqzKebYJD/yktzNrIIgsd/g7rcPNE2+\nk3m+LLjqKrjqqrjDkALpbG/ny2lXbr/cvLkk1p1NMccm+ZGvppDXAC3u/tM8LU9ERCLIR1PI44DP\nACeY2RNm9riZnRw9NBERyVXkahl3fwgoz0MsInk3trKyT5XD2MrKklh3NsUcm+RHXlvLiBSbOG8S\nFvMNymKOTfKjKB8/UAbs3Lkz7jD62LlzZ3HuLBGRARRlvpo4diyPLFlSNAl+586dPLJkCRPHjo07\nFBGRISnKapkzjzmGmx57jMWLF9MddzAEfwEnjh3LmcccE3coIiJDUpTJfc/x4zln5sy4w5AhKuYO\nMerEJKWqKJO7jC7F3CFGnZikVBVlnbuIiESj5C4ikkCqlpHIirlDjDoxSakydx+ZNS1cOEIrEhFJ\nkFmzLJfZVC0jIpJASu4iIgmkOncZ1aK2JS9kW/Rsy840/quXX07X1q0948onTOC/L7wwL3EVs1Ld\n7kJQcpdRLWpb8kK2Rc+27Ezju7Zu5ef77tsz/JWNG/MWVzEr1e0uBFXLiIgkkJK7iEgCqVpGRrWo\nbckL2RY927IzjS+fMKFPlUT5hAl5i6uYlep2F4LauYuIFDO1cxcRkRQldxGRBFJyFxFJIN1QlZKW\nqSORXrYx8rTP80fJXUpapo5EetnGyNM+zx9Vy4iIJJCSu4hIAqlaRkpapo5EetnGyNM+zx91YhIR\nKWZxdmIys9+Y2UYzeyofyxMRkWjyVed+LfDBPC1LREQiyktyd/cHgbZ8LEtERKLTDVUpacX6JqZi\nfsNUVMUcW5IouUtJK9Y3MRXzG6aiKubYkmTEkntjczONzc09w7U1NdTW1IzU6kVESko+k7uF/wak\nZC4iMnLyktzN7EagFqgysxeBee5+bT6WLVJIxfompmJ+w1RUxRxbkqgTk4hIMdObmEREJEXJXUQk\ngdQUUiK1x06yr15+OV1bt/YMl0+YwH9feGGMESVfktv3jzQld4nUHjvJurZu5ef77tsz/JWNG2OM\npjQkuX3/SFO1jIhIAim5i4gkkKplJFJ77CQrnzChT1VM+YQJMUZTGpLcvn+kqZ27iEgxUzt3ERFJ\nUXIXEUkgJXcRkQTSDVWJrJg7+6iDVv5pn40OSu4SWTF39lEHrfzTPhsdVC0jIpJASu4iIgmkahmJ\nrJg7+6iDVv5pn40O6sQkIlLM1IlJRERSlNxFRBJIyV1GTEdnZ9whiJQM3VCVoWloyG2+qVO5bv16\nWjdv5qGVL3PcoXtStc8+Q+5IFLUTUrYOVlHWnU0xd/Yp5HZLcVByl76amjj9tyf3+Wpdx0RgHkza\nd+B5MrlnI298/QoO7Xoj2/0gDjtgA5vSEgdk7hQTtRNStg5WUdadTTF39inkdktxUHIvcRfN7aRx\nU3XaN4fDpH2p/WRVzzdTgenTc1t+U1MVS++qYkurMfbF4/ive/7GtvJOvvzZSGGLSBZK7qWiqYmF\njeMBqF86q8+o2nOqc07e2UyfDk/d28r+E9/PPgfuw+ZX303j039mxpzDAaibtpDlqzbDR/fJsiQR\nGQ4l94RbWN9Cw6rjWddxZlCtUlUF06CubmTW39GxjS0d5WzoeIKyV5+k27upmrYHX//2FG69dTz1\n66p59aU2Tr5hHZ84+TWgb6eYqJ2QsnWwyjR/kt8KVMjtluKgTkwJlSoZQ1Ayh9yrVqJwd7Zu3Yx7\nd893ZmVMmLAPZr19M+rntPR8XjzzEpg6NZ6ARYpNjp2YlNyTpKGBheveHlS7jBtH3fxD445o2Orr\ngVUroaOD2kktTK96nll11VnnG4qF9S3ZJ8pRvmIU2YWSe2k7/dy9glYt06qZPBlmz447ougaGmDd\nPYMn5MXn3ATLlzPjnnlDX+i0AiThpbvGuPicm3quPDo6Oxk3dmz+1yulIc7kbmYnA1cRdIr6jbtf\nuctECUjuRdn+t6mJGVefCUDdtaVTeqyvpzepTqsesXsIQ1E/txU2BfX8O7pfZuNr9/KJAw/gP4/+\nazBBEv7yysiJK7mbWRmwHJgJrAP+Dpzh7s/2mTAByf2XN9ywS/vfL382njZ9F80Nens2bqqGSftS\nd2VVljkkDo88chd33fUKr26AvStre5J+7aTgD9NlV6pEL1nkmNzz0VpmOrDC3V8AMLObgVOBZzPO\nJTlL3SydPLOaWt13LFrt7a0899wm3vGO02hrW8Cpp0JlZTUNDbCcatY1tzJjTpDs66YtVL295FU+\nkvsBwOq04TUECV8KYMacw0ftzdJS88wz/6C8/EgqKnanvPxIWloe59hjT0qrlakCqmhqgvqroX5O\n8O3imZcEH1R9IxGMWDv3xuZmGpube4Zra2qorakZqdXnRdztf08/dy8AJfZRoKNjG6tWrWLnzm1s\n2bKS7u6drFy5hSOP3Ma4ceP7TDt9OkyfHpTa6+e2MqN5PrzSDvd0MHlcG7MPeVClehm2fNS5Hwt8\n391PDoe/DfguN1UTUOcemxK9aTqaDbV9fyZNTbB8eW+Locnj2vj9/JcKEq8UsRhvqJYDywhuqK4H\nmoAz3X1pnwmV3IdtYX0LTa2H66apAFB/btD+H8I6+smPq+qmFBRBU8if0tsU8opdJlJyH5aeHqbT\nqqmt1U1T6VVfH35Y2kLtpBa1uEk6dWIa5cIHe/U81KsEb5q2t79EZeVeBVl2Z2cHY8eOK8iy49Tn\nsQ3n3BR8UEkgWZTcR6feB3tNhHHjmPyeQ0vySnvt2hX86ldX8qUvzeWAA96c12W3t7eyaNFtnHTS\nJ6isTGbVVv3c1uAm7BAf21CUHfJkYDG2c5fhaGjo113+cCbPrKauBBN6ukWLbmPz5qncffcfOeus\n/HY3feaZf7Bp0149TRGTKLgfUxXehK2m8Z4W6ufA4mufH3B6vZAj+ZTcCyHtlXSnP3xe+CajlHlF\n110+bmvXrqCl5SWmTPkezzzzA9auXZG30nuqI9FBB53GihULqK5uTWzpHVLNKoHZ1dSfu7Ln3o3a\nzpceJfdcNTRwUfOndvk6eKtR2ivp9oC6+clNJvmwaNFtlJefSEXFHpSXn5jX0vtgHYlKQeqeTUMD\nQdv5TRuZ/LCaU5YKJfcs0p+L3tc8Js/ctU5zMiocDUdb2waWL3+erq4uNm1agvsOli1bRVvbBiZO\n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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "#from mlxtend.evaluate import plot_decision_regions\n", - "fig = plot_decision_regions(X=X_std, y=y, clf=nn1, legend=2)\n", - "plt.title('Multi-layer Perceptron w. 1 hidden layer (logistic sigmoid)')" - ] - }, - { - "cell_type": "code", - "execution_count": 124, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAAEPCAYAAABsj5JaAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGCRJREFUeJzt3Xu0XnV95/H3B8LJBTAEMQlDEHHhBaFKUdCq0zmOFei0\nEqedIl7qrc7qDMtBnYsQ/YM4a1aVduFlvMxaHS1GCkXKtAIOg4j0OKNVUIGCJAOZKopIglwMkJCQ\nhO/8sffhPDkcknM25znX92utvZ69f8/e+/ntn/F8+P32bz9PqgpJkiZqv+mugCRpdjJAJEmdGCCS\npE4MEElSJwaIJKkTA0SS1ElfAyTJwiQ3JLk5yW1JzmvLlyW5NskdSb6eZGnPMWuSbEyyIckp/ayf\nJKm79Ps5kCRLqmpbkv2B7wBnA78PPFBVf5rkHGBZVZ2b5CXAxcBJwCrgOuAF5cMqkjTj9H0Iq6q2\ntasLgQVAAauBdW35OuBN7frpwKVVtauq7gI2Aif3u46SpInre4Ak2S/JzcAm4BtV9X1gRVVtBqiq\nTcDydvcjgLt7Dr+nLZMkzTBT0QN5oqp+nWZI6uQkx9H0QvbYrd/1kCRNrgVT9UFV9XCSIeA0YHOS\nFVW1OclK4L52t3uAI3sOW9WW7SGJgSNJHVRVJutc/Z6FddjwDKski4E3ABuAK4F3tbu9E7iiXb8S\nODPJQJKjgWOAG8c6d1W5VHHeeedNex1mymJb2Ba2xd6XydbvHsjhwLok+9GE1Veq6uok3wMuS/Ie\n4KfAGQBVtT7JZcB6YCdwVvXjqiVJz1hfA6SqbgNOHKP8QeC3nuaYjwEf62e9JEnPnE+iz3KDg4PT\nXYUZw7YYYVuMsC36p+8PEvZDEke2JGmCklCz5Sa6JGnuMkAkSZ0YIJKkTgwQSVInBogkqRMDRJLU\niQEiSerEAJEkdWKASJI6MUAkSZ0YIJKkTgwQSVInBogkqRMDRJLUiQEiSerEAJEkdWKASJI6MUAk\nSZ0YIJKkTgwQSVInBogkqRMDRJLUiQEiSerEAJEkdWKASJI6MUAkSZ30NUCSrEpyfZLbk9yW5N+1\n5ecl+XmSm9rltJ5j1iTZmGRDklP6WT9JUnepqv6dPFkJrKyqW5IcBPwQWA28GXikqj4xav9jgUuA\nk4BVwHXAC2pUJZOMLpIk7UMSqiqTdb6+9kCqalNV3dKuPwpsAI5o3x7rIlYDl1bVrqq6C9gInNzP\nOkqSupmyeyBJngecANzQFr0vyS1JvpBkaVt2BHB3z2H3MBI4kqQZZEoCpB2+uhx4f9sT+Tzw/Ko6\nAdgEXDAV9ZAkTZ4F/f6AJAtowuOiqroCoKp+2bPLfweuatfvAY7seW9VW/YUa9eufXJ9cHCQwcHB\nSauzJM0FQ0NDDA0N9e38fb2JDpDky8D9VfXve8pWVtWmdv2DwElV9dYkLwEuBl5JM3T1DbyJLkmT\nYrJvove1B5LkNcDbgNuS3AwU8GHgrUlOAJ4A7gL+GKCq1ie5DFgP7ATOMikkaWbqew+kH+yBSNLE\nzappvJKkucsAkSR1YoBIkjoxQCRJnRggkqRODBBJUicGiCSpEwNEktSJASJJ6sQAkSR1YoBIkjox\nQCRJnRggkqRODBBJUicGiCSpEwNEktSJASJJ6sQAkSR1YoBIkjoxQCRJnRggkqRODBBJUicGiCSp\nEwNEktSJASJJ6sQAkSR1YoBIkjoxQCRJnRggkqRO+hogSVYluT7J7UluS3J2W74sybVJ7kjy9SRL\ne45Zk2Rjkg1JTuln/SRJ3aWq+nfyZCWwsqpuSXIQ8ENgNfBu4IGq+tMk5wDLqurcJC8BLgZOAlYB\n1wEvqFGVTDK6SJK0D0moqkzW+fraA6mqTVV1S7v+KLCBJhhWA+va3dYBb2rXTwcurapdVXUXsBE4\nuZ91lCR1M2X3QJI8DzgB+B6woqo2QxMywPJ2tyOAu3sOu6ctkyTNMAum4kPa4avLgfdX1aNJRo8/\nTXg8au3atU+uDw4OMjg4+EyqKElzztDQEENDQ307f1/vgQAkWQB8DfhfVfXptmwDMFhVm9v7JH9X\nVccmOReoqjq/3e8a4LyqumHUOb0HIkkTNKvugbT+Alg/HB6tK4F3tevvBK7oKT8zyUCSo4FjgBun\noI6SpAnq9yys1wD/G7iNZpiqgA/ThMJlwJHAT4EzqupX7TFrgD8CdtIMeV07xnntgUjSBE12D6Tv\nQ1j9YIBI0sTNxiEsSdIcZIBIkjoxQCRJnRggkqRODBBJUicGiCSpEwNEktSJASJJ6sQAkSR1YoBI\nkjoxQCRJnRggkqRODBBJUicGiCSpEwNEktSJASJJ6sQAkSR1YoBIkjoxQCRJnRggkqRODBBJUicG\niCSpEwNEktSJASJJ6mRcAZLkovGUSZLmj/H2QI7r3UiyP/Dyya+OJGm22GuAJFmT5BHgpUkebpdH\ngPuAK6akhpKkGSlVte+dko9V1ZopqM+4JKnx1FuSNCIJVZXJOt94h7C+luTAtgJvT/KJJEft66Ak\nX0yyOcmtPWXnJfl5kpva5bSe99Yk2ZhkQ5JTJnw1kqQpM94A+W/AtiQvA/4D8I/Al8dx3IXAqWOU\nf6KqTmyXawCSHAucARwL/Dbw+SSTlpSSpMk13gDZ1Y4ZrQY+W1WfAw7e10FV9W3goTHeGisYVgOX\nVtWuqroL2AicPM76SZKm2HgD5JEka4A/BP5nkv2AA57B574vyS1JvpBkaVt2BHB3zz73tGWSpBlo\nwTj3ezPwVuA9VbUpyXOBP+v4mZ8H/nNVVZL/AlwAvHeiJ1m7du2T64ODgwwODnasjiTNTUNDQwwN\nDfXt/OOahQWQZAVwUrt5Y1XdN87jjgKuqqqX7u29JOcCVVXnt+9dA5xXVTeMcZyzsCRpgqZlFlaS\nM4AbgT+gudF9Q5J/Nc7PCD33PJKs7Hnv94AftetXAmcmGUhyNHBM+5mSpBlovENYHwFOGu51JHkO\ncB1w+d4OSnIJMAg8O8nPgPOA1yU5AXgCuAv4Y4CqWp/kMmA9sBM4y26GJM1c432Q8Laq+rWe7f2A\nf+gtm0oOYUnSxE32ENZ4eyDXJPk68Fft9puBqyerEpKk2WevPZAkxwArquo7SX4PeG371q+Ai6vq\nH6egjmPVyx6IJE3QZPdA9hUgXwPWVNVto8p/DfiTqnrjZFVkIgwQSZq4qZ6FtWJ0eAC0Zc+brEpI\nkmaffQXIIXt5b/FkVkSSNLvsK0B+kORfjy5M8l7gh/2pkiRpNtjXPZAVwN8CjzMSGK8ABoB/WVWb\n+l7DsevlPRBJmqApvYne86GvA45vN2+vqusnqwJdGCCSNHHTEiAzjQEiSRM3Xb9IKEnSHgwQSVIn\nBogkqRMDRJLUiQEiSerEAJEkdWKASJI6MUAkSZ0YIJKkTgwQSVInBogkqRMDRJLUiQEiSerEAJEk\ndWKASJI6MUAkSZ0YIJKkTgwQSVInBogkqZO+BkiSLybZnOTWnrJlSa5NckeSrydZ2vPemiQbk2xI\ncko/6yZJemb63QO5EDh1VNm5wHVV9SLgemANQJKXAGcAxwK/DXw+yaT9+LskaXL1NUCq6tvAQ6OK\nVwPr2vV1wJva9dOBS6tqV1XdBWwETu5n/SRJ3U3HPZDlVbUZoKo2Acvb8iOAu3v2u6ctkyTNQAum\nuwJAdTlo7dq1T64PDg4yODg4SdWRpLlhaGiIoaGhvp0/VZ3+fo//A5KjgKuq6qXt9gZgsKo2J1kJ\n/F1VHZvkXKCq6vx2v2uA86rqhjHOWf2utyTNNUmoqkm7tzwVQ1hpl2FXAu9q198JXNFTfmaSgSRH\nA8cAN05B/SRJHfR1CCvJJcAg8OwkPwPOAz4O/HWS9wA/pZl5RVWtT3IZsB7YCZxlN0OSZq6+D2H1\ng0NYkjRxs3EIS5I0BxkgkqRODBBJUicGiCSpEwNEktSJASJJ6sQAkSR1YoBIkjoxQCRJnRggkqRO\nDBBJUicGiCSpEwNEktSJASJJ6sQAkSR1YoBIkjoxQCRJnRggkqRO5lSA3HorPPbYdNdCkuaHORUg\n730v3HTTdNdCkuaHORUgxx0Ht98+3bWQpPlhTgXI8ccbIJI0VeZUgBx3HPzoR9NdC0maH+ZcgNgD\nkaSpMacCZNWqZhbWAw9Md00kae6bUwGSwMteBjffPN01kaS5b04FCMBv/AZ897vTXQtJmvvmXIC8\n+tXw938/3bWQpLkvVTU9H5zcBWwBngB2VtXJSZYBXwGOAu4CzqiqLWMcW09X7/vugxe9qLkPst+c\ni0dJ6i4JVZXJOt90/ol9Ahisql+vqpPbsnOB66rqRcD1wJqJnnT5cjjsMKfzSlK/TWeAZIzPXw2s\na9fXAW/qcuJTT4Wrr34GNZMk7dN0BkgB30jy/STvbctWVNVmgKraBCzvcuI3vhGuumqSailJGtN0\n3gM5vKruTfIc4FrgbOCKqjq0Z58HqurZYxz7tPdAAHbsgBUr4M47myEtSdLk3wNZMFknmqiqurd9\n/WWSrwInA5uTrKiqzUlWAvc93fFr1659cn1wcJDBwcEntxcubHohl1wCH/hAny5Akma4oaEhhoaG\n+nb+aemBJFkC7FdVjyY5kKYH8lHg9cCDVXV+knOAZVV17hjH77UHAvCtb8FZZzU30zNpeStJs9dc\nmYW1Avh2kpuB7wFXVdW1wPnAG5LcQRMmH+/6Ab/5m7B7dxMkkqTJN233QJ6J8fRAAC68EC6+GK67\nbgoqJUkz3FzpgUyJt78dfvIT+OY3p7smkjT3zOkAOeAA+OQnm3shO3ZMd20kaW6Z0wECcPrpcOyx\n8NGPTndNJGlumdP3QIZt3gyveAV89rOwenUfKyZJM9iceQ5kKq1YAZdfDr/7u7B0KfQ8MiJJ6mjO\nD2ENe+Ur4bLL4IwzYN06mIUdL0maUebFEFavW2+Ft70NjjgCPvIReO1rfdBQ0vww2UNY8y5AoJmR\n9aUvwac+BY880vwI1fHHw+GHN9+dtWwZHHggLFmy5+uiRYaNpNnLAOGZB0ivO++EH/wA1q+HTZua\nH6R68EHYtq1Ztm4dWd+xowmRxYufuixZMnb5M138USxJk8UAYXIDZCJ274bHHuvPsm3bU8u2b4eB\ngf6F01jBt2BeTKuQ5icDhOkLkKlW1YTIZAfT3pb99tszUA48sJm59qxnjSx72+5dP/BAe1DSTGKA\nMH8CZKpVwc6dewbKo48294m2bIGHHx5ZRm+PVbZtGxx88FPDZjhkhtfH2u4tGxiY7paR5gYDBANk\ntti9uwmf0QGzZcuey77KFiwYX+jsLYSWLHEChGSAYIDMJ1VNT2isoJlIGO3c+dRe0NOF0EEHNcNv\nw69jLVN1r+iii+Ad72jWL7gA3vCGZmhx9+5mxuCSJU0PzXDUeBggGCCauMcfH38v6NFHm9l3o5fh\n8m3bmi/qHB0qTxc4w+WLFu25LF781LJFi5pf1Ny8ufkpggsumNh17r9/EyqHH96cf8WK5nX58qYe\nRx4Jhx7abB96aBOahxzSfO5wMBpGc5dfZSJ1MDAAhx3WLM/U8OSG0cHydIGzdWszNXzHjpHZdfta\nDjsMXvUquOMOeOELm8/duhV+9avmvFVw//1w773wwAPNzxZs2dK87trVlFU109OfeAIeeqj5/Cee\nGP91LlkyMvx38MFN4BxySBNIBx008nxU77NSixc3+x58cPM81fD6cIA6qWJusQcizUNVzTDY8H2q\n0cOE998/cu/q8ceb0DrggD23d+xoQm04TLdvH5n19/DDTdnTOeCAJpAWLWqGDQcGmteFC0e2ly59\n+u3h10WLmlAbnvU3lcOLs5FDWBgg0myza1cTLFu3jkysGO4VPfJIE0qjX4fvXT38cLPfo4+OlA8f\nt2NHE3iPPbbn5w0MjPSWDj646SEN95pGDzXu7V7XcO9q+ByLFzfDhLOVAYIBIumphocWt20b6Ult\n394EzfbtTQANT00fDrPeb5sYHm4c/d7wMdu2NZ8zMDASKL3DeMPPTQ2XDwfOcGiN9RDvokXN68KF\nI9uLFzfbixZNfht5D0SSxpCM/HF+9rMn//xVI/exekNorNfhobzhEHrggT2H+Hof9B1+WLj3oeHt\n25ve1/DEioGBJpwWLmyG/4bDZsGC5r2FC/eclDFcdsABzTIw0J9AMkAkaRySkT/Qy5b197OqRnpU\n27c3Q3dbtzavjz8+Ejy7djXb27fvOUnj8ceb7Z07m2XLlmZm32RzCEuS5onJHsJyUp0kqRMDRJLU\niQEiSerEAJEkdWKASJI6MUAkSZ3MyABJclqS/5vkziTnTHd9JElPNeMCJMl+wGeBU4HjgLckefH0\n1mrmGhoamu4qzBi2xQjbYoRt0T8zLkCAk4GNVfXTqtoJXAqsnuY6zVj+n2OEbTHCthhhW/TPTAyQ\nI4C7e7Z/3pZJkmaQmRggkqRZYMZ9F1aSVwFrq+q0dvtcoKrq/J59ZlalJWmWmNO/B5Jkf+AO4PXA\nvcCNwFuqasO0VkyStIcZ93XuVbU7yfuAa2mG2L5oeEjSzDPjeiCSpNlh1t1En08PGSZZleT6JLcn\nuS3J2W35siTXJrkjydeTLO05Zk2SjUk2JDll+mrfH0n2S3JTkivb7XnZFkmWJvnr9tpuT/LKedwW\nH0zyoyS3Jrk4ycB8aoskX0yyOcmtPWUTvv4kJ7ZteGeST43rw6tq1iw0gff/gKOAA4BbgBdPd736\neL0rgRPa9YNo7g29GDgf+FBbfg7w8Xb9JcDNNEOTz2vbKtN9HZPcJh8E/hK4st2el20BfAl4d7u+\nAFg6H9sC+CfAj4GBdvsrwDvnU1sArwVOAG7tKZvw9QM3ACe161cDp+7rs2dbD2RePWRYVZuq6pZ2\n/VFgA7CK5prXtbutA97Urp8OXFpVu6rqLmAjTZvNCUlWAf8C+EJP8bxriyTPAv5pVV0I0F7jFuZh\nW7T2Bw5MsgBYDNzDPGqLqvo28NCo4gldf5KVwMFV9f12vy/3HPO0ZluAzNuHDJM8j+a/Mr4HrKiq\nzdCEDLC83W10+9zD3GqfTwL/Cei9cTcf2+Jo4P4kF7bDeX+eZAnzsC2q6hfABcDPaK5rS1Vdxzxs\ni1GWT/D6j6D5ezpsXH9bZ1uAzEtJDgIuB97f9kRGz3yY8zMhkvwOsLntke1tHvucbwua4YcTgc9V\n1YnAVuBc5ue/i0No/mv7KJrhrAOTvI152Bb70Jfrn20Bcg/w3J7tVW3ZnNV2yy8HLqqqK9rizUlW\ntO+vBO5ry+8Bjuw5fC61z2uA05P8GPgr4J8nuQjYNA/b4ufA3VX1g3b7f9AEynz8d/FbwI+r6sGq\n2g38LfBq5mdb9Jro9Xdql9kWIN8HjklyVJIB4EzgymmuU7/9BbC+qj7dU3Yl8K52/Z3AFT3lZ7az\nUI4GjqF5EHPWq6oPV9Vzq+r5NP+7X19Vfwhcxfxri83A3Ule2Ba9Hridefjvgmbo6lVJFiUJTVus\nZ/61RdizZz6h62+HubYkObltx3f0HPP0pnsGQYcZB6fRzEbaCJw73fXp87W+BthNM9vsZuCm9voP\nBa5r2+Fa4JCeY9bQzKzYAJwy3dfQp3b5Z4zMwpqXbQG8jOY/qG4B/oZmFtZ8bYvz2uu6leaG8QHz\nqS2AS4BfADtoAvXdwLKJXj/wcuC29m/rp8fz2T5IKEnqZLYNYUmSZggDRJLUiQEiSerEAJEkdWKA\nSJI6MUAkSZ0YIFKPJLvb75e6uX390CSe+6gkt03W+aTpNuN+kVCaZlur+X6pfvHBK80Z9kCkPY35\nRY1JfpLk/PYHd76X5Plt+VFJvpnkliTfaL9yniTLk/xNW35zkle1p1rQfnvuj5Jck2Rhu//Z7Q9D\n3ZLkkim5UukZMkCkPS0eNYT1Bz3vPVRVLwU+Bwx/N9lngAur6gSar5T4TFv+X4GhtvxEmu+qAngB\n8JmqOh7YAvx+W34OzY+HnQD8m35dnDSZ/CoTqUeSh6vqWWOU/wR4XVXd1X5D8r1V9ZwkvwRWVtXu\ntvwXVbU8yX3AEdX88NnwOY4Crq2qF7XbHwIWVNWfJLma5mvZvwp8taq29v9qpWfGHog0fvU06xOx\no2d9NyP3IX8H+CxNb+X7Sfz/pmY8/5FKe9rbj1W9uX09E/huu/4d4C3t+tuB/9OuXwecBZBkv/Zn\naPd2/udW1bdofhjqWcBBE6+6NLWchSXtaVGSm2j+0BdwTVV9uH1vWZJ/ALYzEhpnAxcm+Y/AL2m+\nShvgA8CfJ/kjYBfwb4FNjNFzaYe+/rINmdB8lfbDfbk6aRJ5D0Qah/YeyMur6sHpros0UziEJY2P\n/6UljWIPRJLUiT0QSVInBogkqRMDRJLUiQEiSerEAJEkdWKASJI6+f9A2SpV0sXLogAAAABJRU5E\nrkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "plt.plot(range(len(nn1.cost_)), nn1.cost_)\n", - "plt.ylim([0, 300])\n", - "plt.ylabel('Cost')\n", - "plt.xlabel('Epochs')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 127, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "text/plain": [ - "" - ] - }, - "execution_count": 127, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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\nc1+9Odb9cVKC4VHHK1nnU65ns0lW7dKf8YlEVeFUpyQo31tUPSz2Mkyi0r3hcNvD+g8ahlzPZpOs\n2qU/4xMpRv2axM/58VcTrh9//tG6qy4guZ7NJlm1S3/GJ1Ks+jWJ3/awKkKiINez2SSrdunP+ESK\nVXSrUyQvsqm6SLXP/v17E1a7ZDvWiapCRLrq1webixZR+K/dF7h8z+ySycw0vZmVxt07q106JBrr\nJJv4up9LVSFSrArnwab0SX9UZJgZI0ceTmNjA0uXLspojJGOfZIdb/Lkk3Men4jE9P5WSEITX5ER\n1rn6MwYRSU9JPCIOVmRcwoYN9TQ25m82m2Tn6s8YRCQzaZO4mT1uZvVm9laKNg+a2QYzqzGz6bkN\nUSBxRUZ/n6s/YxCRzGRyJ/4k8IVkG83sIuBYdz8euB54JEexFbXm5qak2xobd3VZPliRsYGdO5+n\ntXUDGzdupKlpb87jij/Xtm2/7DzX7t3bMooh1edKtS2X+4gMJBlVp5jZFGCRu386wbZHgN+7+y+C\n5bVAlbvXd2+r6pSY3r6e3p8VGR3n+vjjnbz00ouce+5FDB9+WEZjjGQ7UUMyerVeJCZVdUou+sQn\nAJvjluuCdZJEqoeD8a+nd+ioyBg16ojOr5EjD89LSV3HubZs2cLHHx9FXV0dI0ceTklJSdoYUn2u\nbB6I6iGqSHr9+mCztraaZ575dudXbW11f56+IKR6OHjw9fQbWL26gbq6DQUXYzb75Pp4InJQLpJ4\nHTApbnlisK6Hysoqrrrq251flZVVOTh9tKR6OJjo9fRCizGbfXJ9PBE5KNOXfSz4SuR54CbgF2Y2\nC/goUX+49O/r6fmIMZvX7iH5RA3ZHE+v1ot0lfbBppk9A1QBY4B64G5gMODu/ljQ5iHgQuAT4Cvu\nnvC2aaA/2OzP19PzEWOyPvhU+0DyiRqyOZ5erZeBqGAmhRjoSVxEJBv5rk4REZGQKImLiESYkriI\nSIQpiYuIRJiSuIhIhCmJi4hEmJK4iEiEKYmLiESYkriISIQpiYuIRJiSuIhIhCmJi4hEmJK4iEiE\nKYmLiESYkriISIQpiYuIRJiSuIhIhCmJi4hEmJK4iEiEKYmLiERYRknczC40s3Vmtt7Mbk+w/Vwz\n+8jMVgZf38p9qCIi0l1ZugZmVgI8BJwPbAXeMLOF7r6uW9OX3f2yPMQoIiJJZHInPgPY4O7vu3sL\n8HNgToJ2ltPIREQkrUyS+ARgc9zylmBdd2eYWY2ZvWBm03ISnYiIpJS2OyVDK4DJ7r7PzC4CfgVM\nzdGxRUSRf/J9AAAE5ElEQVQkiUySeB0wOW55YrCuk7vvjfv+RTN72MxGu/uu+Ha1tdXU1lZ3LldW\nVlFZWZVF2CIiApkl8TeA48xsCvAhcAVwZXwDMxvn7vXB9zMA657AQUlbRCTX0iZxd28zs68Bi4n1\noT/u7mvN7PrYZn8MuNzMbgBagCZgbj6DFhGRGHP3fjvZokX038lERIrE7NnJq//0xqaISIQpiYuI\nRJiSuIhIhCmJi4hEmJK4iEiEKYmLiESYkriISIQpiYuIRJiSuIhIhCmJi4hEmJK4iEiEKYmLiESY\nkriISIQpiYuIRJiSuIhIhCmJi4hEmJK4iEiEKYmLiESYkriISIQpiYuIRFhGSdzMLjSzdWa23sxu\nT9LmQTPbYGY1ZjY9t2GKiEgiaZO4mZUADwFfAE4GrjSzE7u1uQg41t2PB64HHslDrCIi0k0md+Iz\ngA3u/r67twA/B+Z0azMHeArA3ZcBI8xsXE4jFRGRHjJJ4hOAzXHLW4J1qdrUJWgjIiI5pgebIiIR\nVpZBmzpgctzyxGBd9zaT0rRh+PBqqqurO5erqqqoqqrKMFQREenO3D11A7NS4G3gfOBDYDlwpbuv\njWtzMXCTu19iZrOA+919VoLDpT6ZiIgkYsk2pL0Td/c2M/sasJhY98vj7r7WzK6PbfbH3P3XZnax\nmb0DfAJ8JVeRi4hIcmnvxHNMd+IiIr2X9E5cDzZFRCJMSVxEJMIKJonHV60MdLoWB+ladKXrcZCu\nRYySeAHStThI16IrXY+DdC1iCiaJi4hI7ymJi4hEWH+XGCZlZlXuXh12HIVA1+IgXYuudD0O0rWI\nKZgkLiIivafuFBGRCFMSFxGJsIJI4mZWYmYrzez5sGMJm5ltMrM3zWyVmS0PO54wmdkIM/ulma01\ns9VmNjPsmMJgZlODfw8rgz/3mNnNYccVFjO7xcz+aGZvmdlPzWxw2DGFqSD6xM3sFuB0oMLdLws7\nnjCZ2XvA6e6+O+xYwmZmPwZecvcnzawMOMTdG0MOK1TBdIlbgJnuvjld+2JjZuOB/wJOdPcDZvYL\n4AV3fyrk0EIT+p24mU0ELgb+NexYCoRRAH8vYTOzCuAcd38SwN1bB3oCD3weeHcgJvA4pcChHT/Y\nga0hxxOqQkgW9wG3ohEOOziwxMzeMLPrwg4mREcDO83syaAb4TEzKw87qAIwF/hZ2EGExd23Av8X\n+IDYxDMfuftvwo0qXKEmcTO7BKh39xpid6BJh1scQM5y99OI/XZyk5mdHXZAISkDTgN+EFyPfcD/\nDjekcJnZIOAy4JdhxxIWMxtJbGL2KcB4YJiZXRVuVOEK+078LOCyoB/4Z8DnzGzA9m0BuPuHwZ87\ngH8HZoQbUWi2AJvd/Q/B8gJiSX0guwhYEfzbGKg+D7zn7rvcvQ14Djgz5JhCFWoSd/c73H2yux8D\nXAH8zt3/IsyYwmRmh5jZsOD7Q4E/Af4YblThcPd6YLOZTQ1WnQ+sCTGkQnAlA7grJfABMMvMhpqZ\nEft3sTbNPkUtk4mSpf+MA/7dzJzY381P3X1xyDGF6Wbgp0E3wnsM4Gn/zOwQYnehfxV2LGFy9+Vm\ntgBYBbQEfz4WblThKogSQxERyU7YfeIiItIHSuIiIhGmJC4iEmFK4iIiEaYkLiISYUriIiIRpiQu\nIhJhSuIiIhH2/wGjuiu+wQDCXgAAAABJRU5ErkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "from sklearn.linear_model import LogisticRegression\n", - "\n", - "lr = LogisticRegression()\n", - "lr.fit(X, y)\n", - "fig = plot_decision_regions(X=X, y=y, clf=lr, legend=2)\n", - "plt.title('Logistic Regression 2')" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy: 100.00%\n" - ] - } - ], - "source": [ - "y_pred = nn1.predict(X_std)\n", - "acc = np.sum(y == y_pred, axis=0) / X_std.shape[0]\n", - "print('Accuracy: %.2f%%' % (acc * 100))" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\nrkJggg==\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "plt.plot(range(len(nn1.cost_)), nn1.cost_)\n", - "plt.ylim([0, 300])\n", - "plt.ylabel('Cost')\n", - "plt.xlabel('Epochs')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Stochastic Gradient Descent" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Setting `minibatches` to `n_samples` will result in stochastic gradient descent training; please see [Gradient Descent vs. Stochastic Gradient Descent](../general_concepts/gradient-optimization.md) for details." - ] - }, - { - "cell_type": "code", - "execution_count": 9, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n27nZAZLGufsRyetzJLm7/7rBNtdKetzd70hez5M01N2XNNpXeoUCADqEu1trtu+SViGJ5yXtaGYD\nJf1L0vGSRjXaZqKkH0q6Iwm15Y0DSmr9gQEAyl+qIeXutWZ2mqRJiq7F6919rpmdGh/7eHd/wMyO\nNLMFklZLGp1mTQCA8pFqdx8AAO1RFgMnCrkhOG/MbJGZvWBmM81saqnrSYuZXW9mS8xsdoP3epnZ\nJDN7xcweNrMepawxDc0c91gze9PMZiSPI0pZY7GZWX8ze8zMXjKzOWY2Jnk/1+e7ieM+PXk/t+fb\nzDY2s+eSv19zzGxs8n6rz3XmW1LJDcF/l3SIpH8qrnMd7+7zSlpYysxsoaR93P3dUteSJjP7kqRV\nkia4++DkvV9LesfdL03+UdLL3c8pZZ3F1sxxj5W00t0vL2lxKTGzrSRt5e6zzGxTSdMV90mOVo7P\ndwvHPVL5Pt/d3f19M+ssaYqkMZK+qVae63JoSRVyQ3Aemcrj/LSLu/9NUuMgHiHppuT5TZK+0aFF\ndYBmjluK855L7r7Y3Wclz1dJmiupv3J+vps57rp7QfN8vt9Pnm6sGP/gasO5Loc/goXcEJxHLmmy\nmT1vZt8rdTEdrE/dCE93XyypT4nr6UinJXNY/m/eur0aMrNtJQ2R9KykvpVyvhsc93PJW7k932bW\nycxmSlosabK7P682nOtyCKlKdZC77y3pSEk/TLqHKlW2+6SL5xpJ27v7EMX/2HntBtpU0p8lnZG0\nLBqf31ye7yaOO9fn290/dve9FK3l/cxsd7XhXJdDSNVIGtDgdf/kvVxz938lP5dK+oui27NSLKmb\nvzHpz3+rxPV0CHdf6vUXia+TtG8p60mDmXVR/KG+2d3vTd7O/flu6rgr4XxLkruvkFQt6Qi14VyX\nQ0h9ckOwmW2kuCF4YolrSpWZdU/+1SUz20TS4ZJeLG1VqTKt3zc/UdJJyfPvSrq38S/kxHrHnfxP\nW+cY5fOc3yDpZXe/osF7lXC+P3XceT7fZta7rvvSzLpJOkxxLa7V5zrzo/ukGIIu6QrV3xD8qxKX\nlCoz207RenLFBcdb8nrMZnarpCpJW0haImmspHsk/UnSNpJel/Qtd19eqhrT0MxxH6y4XvGxpEWS\nTm1q9pVyZWYHSXpS0hzFf9su6TxJUyXdqZye7xaO+wTl9Hyb2SDFwIhOyeMOd/+FmW2uVp7rsggp\nAEBlKofuPgBAhSKkAACZRUgBADKLkAIAZBYhBQDILEIKAJBZhBRQBGZWmyy3MDP5eVYR9z3QzOYU\na39AOUl7+XigUqxO5lpMCzc0oiLRkgKKo8klF8zsNTP7tZnNNrNnzWz75P2BZvZoMgP2ZDPrn7zf\nx8zuTt6faWYHJLvqYmbjzexFM3vIzDZOth+TLKY3K5nFAsgVQgoojm6NuvuOa/DZu8nChlcrpveS\npN9JujGZAfvW5LUkXSmpOnl/b0kvJe/vJOl37r6HpPcUi8dJ0tmShiTb/7+0Dg4oFaZFAorAzFa4\n+2ZNvP+apIPdfVEyE/a/3H1LM1uqWK21Nnn/n+7ex8zektQvWeCzbh8DJU1y912S12dJ6uLuvzSz\nByStVsx3eI+7r07/aIGOQ0sKSJ8387w11jR4Xqv668lHSbpK0ep63sz4fxq5wn/QQHG0tAz4yOTn\n8ZKeSZ5PkTQqef7vkp5Knj8i6QfSJyub1rXOmtv/AHd/QtI5kjaTtGnrSweyi9F9QHF8xsxmKMLE\nJT3k7ucln/Uysxckfaj6YBoj6UYz+/+Slkoanbz/I0njzewUSeskfV+xauunWmBJN+EfkyAzSVck\nC8wBucE1KSBFyTWpfdx9WalrAcoR3X1AuvhXINAOtKQAAJlFSwoAkFmEFAAgswgpAEBmEVIAgMwi\npAAAmUVIAQAy6/8AgD+zJP9Xnx4AAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "batches = np.array_split(range(len(nn2.cost_)), nn2.epochs+1)\n", - "cost_ary = np.array(nn2.cost_)\n", - "cost_avgs = [np.mean(cost_ary[i]) for i in batches]\n", - "plt.plot(range(len(cost_avgs)),\n", - " cost_avgs,\n", - " color='red')\n", - "plt.ylim([0, 2])\n", - "plt.ylabel('Cost')\n", - "plt.xlabel('Epochs')\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Continue the training for 200 epochs..." - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Epoch: 200/200 | Elapsed: 0:00:23 | ETA: 0:00:00" - ] - } - ], - "source": [ - "nn2.epochs = 200\n", - "nn2 = nn2.fit(X_std, y)" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n5Mby1DyPucIAR9QK1KSA3Cjx+j5mNtfM7jGzj81sjJntk1re2Mz+k5ppfISZ7Z5avrOZvZBaPtHM\njkxtqq6Z9TOzKWb2hpltmVr/mtTF8yalZo8AqjVCCsiNrYo1952V9dz37t5C0sOS0nO19ZU0IDXT\n+KDUY0nqIyk/tfxQSVNTy5tI6uvuzST9IOmM1PKbJLVMrf/bXH04oLIwLRKQA2a21N23LWH5XEnt\n3H1eaubrBe6+k5l9I2kXdy9ILf/K3Xc2s68lNXL3NVnbaCxpeOqKrUqd76rr7r3M7HVJyxWz9L/k\n7stz/2mB3KEmBVQ+L+X+hvgp636BMueXT5H0kKLWNc7M+B9HtcYfMJAbJZ6TSumS+nmOpP+m7o+W\ndG7q/vmSRqbuvyWpmySZWR0zS9fOStv+nu7+rqSbJW0rqd6GFx1IDnr3AbnxMzOboAgTl/SGu9+S\nem47M/tI0iplgukaSQPM7HpJ30i6OLX8Okn9zOxSSWslXam4Ou46NbBUM+G/UkFmkh5096U5+XRA\nJeGcFFCJUuekDnP376q6LEB1QHMfULn4VghsAGpSAIDEoiYFAEgsQgoAkFiEFAAgsQgpAEBiEVIA\ngMQipAAAifX/xtk7m735Cg0AAAAASUVORK5CYII=\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "batches = np.array_split(range(len(nn2.cost_)), nn2.epochs+1)\n", - "cost_ary = np.array(nn2.cost_)\n", - "cost_avgs = [np.mean(cost_ary[i]) for i in batches]\n", - "plt.plot(range(30, len(cost_avgs)+30),\n", - " cost_avgs,\n", - " color='red')\n", - "plt.ylim([0, 2])\n", - "plt.xlim([30, 30+nn2.epochs])\n", - "plt.ylabel('Cost')\n", - "plt.xlabel('Epochs')\n", - "plt.tight_layout()\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Accuracy: 96.67%\n" - ] - } - ], - "source": [ - "y_pred = nn2.predict(X_std)\n", - "acc = np.sum(y == y_pred, axis=0) / X_std.shape[0]\n", - "print('Accuracy: %.2f%%' % (acc * 100))" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "fig = plot_decision_regions(X=X_std, y=y, clf=nn2, legend=2)\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example 2 - Classifying Handwritten Digits from a 10% MNIST Subset" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Load a **5000-sample subset** of the [MNIST dataset](http://rasbt.github.io/mlxtend/docs/data/mnist/) (please see [`data.load_mnist`](../data/load_mnist.md) if you want to download and read in the complete MNIST dataset).\n" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "from mlxtend.data import mnist_data\n", - "from mlxtend.preprocessing import shuffle_arrays_unison\n", - "\n", - "X, y = mnist_data()\n", - "X, y = shuffle_arrays_unison((X, y), random_seed=1)\n", - "X_train, y_train = X[:500], y[:500]\n", - "X_test, y_test = X[500:], y[500:]" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Visualize a sample from the MNIST dataset to check if it was loaded correctly:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\nQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "def plot_digit(X, y, idx):\n", - " img = X[idx].reshape(28,28)\n", - " plt.imshow(img, cmap='Greys', interpolation='nearest')\n", - " plt.title('true label: %d' % y[idx])\n", - " plt.show()\n", - " \n", - "plot_digit(X, y, 3500) " - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Standardize pixel values:" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "import numpy as np\n", - "from mlxtend.preprocessing import standardize\n", - "\n", - "X_train_std, params = standardize(X_train, \n", - " columns=range(X_train.shape[1]), \n", - " return_params=True)\n", - "\n", - "X_test_std = standardize(X_test,\n", - " columns=range(X_test.shape[1]),\n", - " params=params)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Initialize the neural network to recognize the 10 different digits (0-10) using 300 epochs and mini-batch learning." - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, - "outputs": [], - "source": [ - "nn = NeuralNetMLP(n_output=10, \n", - " n_features=X_train_std.shape[1],\n", - " n_hidden=50,\n", - " l2=0.5,\n", - " l1=0.0,\n", - " epochs=300,\n", - " eta=0.001,\n", - " minibatches=25,\n", - " alpha=0.001,\n", - " decrease_const=0.0,\n", - " random_seed=1,\n", - " print_progress=3)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Learn the features while printing the progress to get an idea about how long it may take." - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Epoch: 300/300, Elapsed: 0:00:12, ETA: 0:00:00" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "import matplotlib.pyplot as plt\n", - "\n", - "nn.fit(X_train_std, y_train)\n", - "\n", - "plt.plot(range(len(nn.cost_)), nn.cost_)\n", - "plt.ylim([0, 500])\n", - "plt.ylabel('Cost')\n", - "plt.xlabel('Epochs')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Train Accuracy: 98.80%\n", - "Test Accuracy: 84.00%\n" - ] - } - ], - "source": [ - "y_train_pred = nn.predict(X_train_std)\n", - "y_test_pred = nn.predict(X_test_std)\n", - "\n", - "train_acc = np.sum(y_train == y_train_pred, axis=0) / X_train_std.shape[0]\n", - "test_acc = np.sum(y_test == y_test_pred, axis=0) / X_test_std.shape[0]\n", - "\n", - "print('Train Accuracy: %.2f%%' % (train_acc * 100))\n", - "print('Test Accuracy: %.2f%%' % (test_acc * 100))" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "**Please note** that this neural network has been trained on only 10% of the MNIST data for technical demonstration purposes, hence, the lousy predictive performance." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "# API" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "## NeuralNetMLP\n", - "\n", - "*NeuralNetMLP(n_output, n_features, n_hidden=30, l1=0.0, l2=0.0, epochs=500, eta=0.001, alpha=0.0, decrease_const=0.0, random_weights=[-1.0, 1.0], shuffle_init=True, shuffle_epoch=True, minibatches=1, random_seed=None, print_progress=0)*\n", - "\n", - "Feedforward neural network / Multi-layer perceptron classifier.\n", - "\n", - "**Parameters**\n", - "\n", - "- `n_output` : int\n", - "\n", - " Number of output units, should be equal to the\n", - " number of unique class labels.\n", - "\n", - "- `n_features` : int\n", - "\n", - " Number of features (dimensions) in the target dataset.\n", - " Should be equal to the number of columns in the X array.\n", - "\n", - "- `n_hidden` : int (default: 30)\n", - "\n", - " Number of hidden units.\n", - "\n", - "- `l1` : float (default: 0.0)\n", - "\n", - " Lambda value for L1-regularization.\n", - " No regularization if l1=0.0 (default)\n", - "\n", - "- `l2` : float (default: 0.0)\n", - "\n", - " Lambda value for L2-regularization.\n", - " No regularization if l2=0.0 (default)\n", - "\n", - "- `epochs` : int (default: 500)\n", - "\n", - " Number of passes over the training set.\n", - "\n", - "- `eta` : float (default: 0.001)\n", - "\n", - " Learning rate.\n", - "\n", - "- `alpha` : float (default: 0.0)\n", - "\n", - " Momentum constant. Factor multiplied with the\n", - " gradient of the previous epoch t-1 to improve\n", - " learning speed\n", - " w(t) := w(t) - (grad(t) + alpha*grad(t-1))\n", - "\n", - "- `decrease_const` : float (default: 0.0)\n", - "\n", - " Decrease constant. Shrinks the learning rate\n", - " after each epoch via eta / (1 + epoch*decrease_const)\n", - "\n", - "- `random_weights` : list (default: [-1.0, 1.0])\n", - "\n", - " Min and max values for initializing the random weights.\n", - " Initializes weights to 0 if None or False.\n", - "\n", - "- `shuffle_init` : bool (default: True)\n", - "\n", - " Shuffles (a copy of the) training data before training.\n", - "\n", - "- `shuffle_epoch` : bool (default: True)\n", - "\n", - " Shuffles training data before every epoch if True to prevent circles.\n", - "\n", - "- `minibatches` : int (default: 1)\n", - "\n", - " Divides training data into k minibatches for efficiency.\n", - " Normal gradient descent learning if k=1 (default).\n", - "\n", - "- `random_seed` : int (default: None)\n", - "\n", - " Set random seed for shuffling and initializing the weights.\n", - "\n", - "- `print_progress` : int (default: 0)\n", - "\n", - " Prints progress in fitting to stderr.\n", - " 0: No output\n", - " 1: Epochs elapsed and cost\n", - " 2: 1 plus time elapsed\n", - " 3: 2 plus estimated time until completion\n", - "\n", - "**Attributes**\n", - "\n", - "- `cost_` : list\n", - "\n", - " Sum of squared errors after each epoch.\n", - "\n", - "### Methods\n", - "\n", - "
\n", - "\n", - "*fit(X, y)*\n", - "\n", - "Learn weight coefficients from training data.\n", - "\n", - "**Parameters**\n", - "\n", - "- `X` : array, shape = [n_samples, n_features]\n", - "\n", - " Input layer with original features.\n", - "\n", - "- `y` : array, shape = [n_samples]\n", - "\n", - " Target class labels.\n", - "\n", - "**Returns:**\n", - "\n", - "self\n", - "\n", - "
\n", - "\n", - "*predict(X)*\n", - "\n", - "Predict class labels of X.\n", - "\n", - "**Parameters**\n", - "\n", - "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n", - "\n", - " Training vectors, where n_samples is the number of samples and\n", - " n_features is the number of features.\n", - "\n", - "**Returns**\n", - "\n", - "- `class_labels` : array-like, shape = [n_samples]\n", - "\n", - " Predicted class labels.\n", - "\n", - "\n" - ] - } - ], - "source": [ - "with open('../../api_modules/mlxtend.classifier/NeuralNetMLP.md', 'r') as f:\n", - " print(f.read())" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "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.5.0" - } - }, - "nbformat": 4, - "nbformat_minor": 0 -} diff --git a/docs/sources/user_guide/classifier/Perceptron.ipynb b/docs/sources/user_guide/classifier/Perceptron.ipynb index 78ef611ce..818bdc75f 100644 --- a/docs/sources/user_guide/classifier/Perceptron.ipynb +++ b/docs/sources/user_guide/classifier/Perceptron.ipynb @@ -25,13 +25,13 @@ "output_type": "stream", "text": [ "Sebastian Raschka \n", - "last updated: 2016-02-22 \n", + "last updated: 2016-05-01 \n", "\n", "CPython 3.5.1\n", "IPython 4.0.3\n", "\n", "matplotlib 1.5.1\n", - "numpy 1.10.4\n", + "numpy 1.11.0\n", "scipy 0.17.0\n" ] } @@ -280,14 +280,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 5/5 | Elapsed: 0:00:00 | ETA: 0:00:00" + "Iteration: 5/5 | Elapsed: 00:00:00 | ETA: 00:00:00" ] }, { "data": { - "image/png": "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\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW8AAAEKCAYAAADdBdT9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAH6hJREFUeJzt3XuUXFWZ9/Hvr9NJCORKVCAhBBF5JdgaQAIIOG188xqR\niM7IIIhiYByHqLhEISoTGGScpXFG4uUNy6UhghGQy5IQFUkG6DFeIEgSaEw0yM2YJiBJTCAJndue\nP87p5HRT1VWdOnWqTvXvs1ZWquqc2vs51dVP79rnObsUQsDMzPKlqdYBmJlZ3zl5m5nlkJO3mVkO\nOXmbmeWQk7eZWQ45eZuZ5ZCTt/Ubkv5O0tpets+X9OUsY7LKSdoj6ahax5E1J+8ySHpG0jZJWyQ9\nF/+SH1jruJIkPS1pcq3j6CJpfPxLtSX+95SkmbWOC0jlwgZJD0i6qMdjvSYRSRdK2hW/Hn+TtFzS\ne9OIJy1xjEsz7jP5+9WxH79f/fJiFSfv8gTgvSGE4cAJwNuAf+1rI5IGpB1YnfcdgBHx63YOMEvS\nu2oQR1bKSSK/CSEMDyGMBG4AbpM0oi+dVPlnKUoch6S080by92sicDzwxT48XynHkwtO3uUTQAjh\nOeAe4M0AkoZL+n48Ylgr6VpJirddKOlXkr4h6UXg6vjxj0taFY80Hpc0MX78MEl3SHpB0pOSPr23\nc+lqSbdLujV+3u8ktcTbbgKOABbF2z6fGPleJOlZ4L543/fFfW6UdL+kNyX6eFrS5yQ9KmmTpFsk\nDUrpdXsE+D3RL2dXf2+KR7CbJLVLmpbYdqak38fHs1bSZYltZ0laET/vV12vQ5nHIElflPTX+NPA\n+QWDlkZKWhT/LDbEt8fE2/4dOAP4ThzftyT9T3ysj8WPnVPGa3MDMAR4Q5nHdYWkR4GXJTVJOlzS\nnXGMf5X0rcT+F8XvsQ2S7pF0RGLbHkmfjt9jL0ia3fXzAK4HTpX0kqSN8ePzJc2V9DNJLwGt8fv+\npvj5T0u6MtH+hZKWSvp6/D57UtLUEq9F1/vkBeBeur9Pun3KUS+fDiQNkvSfkp5V9Cl5rqTBJfrO\npxCC/5X4BzwNTI5vjwMeB/4tvv8TYC5wAPAa4EHg4/G2C4GdwAyiP5SDiUaga4ET4n2OitsU8Dvg\nSmAAcCTwJ2BKvN/VQCfwgXj754CngAGJGN+ZiHk8sAf4AVGCGAy8EXgZmBy3cTnwBNCcaONB4BBg\nJLAK+Of9fM3GA7sT8Z0S9312fL857ntmfPudwBbgjfH2DuDt8e0RwMT49vHA80SffgR8JI57YKlj\nAP4u/nl8HRgIvCOOqavP+cCX49sHx6/1YOAg4MfATxLH9wBwUY9j3gO8vpfX5ELgl4nj/wywGRhW\n5nEtB8bEMTUBK4H/JHrvDUq8XmcDa4Bj4v2+BPy6R5z3xa/r4cAfu44lGWNi//nAJuCU+P5g4Cai\n9/6B8c/6j8D0RBudwEXxsfwLsK7M36/DgceAbxR7rXvGGB/PUfHt64C74mM7CFgIfKXWOaQqeanW\nAeThX/zm2gJsjG9/O34Dvw54BRic2PdDwP3x7QuBZ3q09Qvg0wX6mFRg3y8A8+LbVxN95O7aJqIE\nd1oixsmJ7V3Jc3zisX8Fbu3Rxl+AdyTaOC+x/WvA3P18zbr+eGwEtsWxzE5sPx3o6PGcm4Gr4tvP\nAB8HhvXYZy5wTY/H/gCcUeoYiJL3DuCAxPYfA1fGt/cm7wLHMxHYkLhfLHkf1ctr0vXHfCPwAvAb\n4j+4ZR7XhYltpxAl+6YC/fycOJHG95uArcC4RJxTEtsvAZYkYiyUvH/Qo71O4P8kHvtnur/v1yS2\nDYl//q8r8fu1JY5tCTC82GvdM0a6J++XSfwBBU4Fntqf93C9/2vGynV2COGB5AOSxhON4J5TPFMS\n//tzYree1Q3jgCcLtD8eGNv1UTVupwn4ZaG2QghB0l+IRmK9+Uvi9hjg2R5trAXGJvZ5PnF7G3BY\noUYlPR7HHID3hBB+XWC3AIyOb38GOF9ScwhhVxxLz9fm2UQs/wDMAr4WTxV8MYTwYNznRxNTSiL6\nGSRfh96OYVMI4ZUefb7qNZQ0BJgDvJtoBC9gqCSFOCvsp9+GEN5R4PFyjiv5sxwHPBtC2FOkrW9K\n+q9EW4Hote16zZNtFXwNekj+rF5D9Mkh+T5P/uwA1nfdCCFsV/QLMpToj1YhZ4cQHpB0BtEf8dcQ\nJfOySXot0SeBR+LfR4h+hxpyTtxz3uUr9AZYSzTyHh1CODiEMCqEMDKE8JbEPj1/0dcSz3EWePyp\nuJ2utkaEEKYl9hm3N5jo3Xk4sK5IP4X67yD6xU4aR/df5LKEEN4cQhgWopNvhRL33lBDZA7RaG1G\nIpZxPfY9gvh4QgiPhBDeD7yW6KPvbfE+a4k+Bidfp6EhhB+XGfqoODEn++wosN/niaaZTgrRycWu\nhNv1PqgkgRdSznGFHvsfocInD/8MfKJAWw8m9km+9snXoJz30YtEnyCS76Xx7Hsv7o+uOe+lwI3A\nfyW2bSVKyl0OLdLGi0R/rI9LHPvIEEKfTgjnhZN3BUII64HFwHWShilylKRCI6su3wc+L+kEAElv\nkDQOWAa8FJ+UOkDSAEnHSXpb4rknSnq/omqDzxL94Xgo3raeaP48qecfnNuA90p6p6RmSZ+P2/jt\nfhx+OXr2/1VgZnwC8SFgW3y8zZJagbOAWyQNlHS+pOEhhN3AS0QfuwG+B/yLpEkAkg5SdHLzoD7E\ndE3cxxnAe9n3hyFpKLAd2CLpYODfemx/nle/3oV+BuXq63EtA54DvirpQEmDJb093vZd4EuSJsRt\njZD0wR7Pv1zRSdlxRJ+Kbk0c1+GSBhYLNB7t3wZ8RdLQ+BPoZ4Ef9vmoC5sDTEmcsF0J/L2kIZKO\nBi4uElcgeh3nxKNwJI2V9P9SiquuOHmXp7dR1keJThatIprLvJ3iIwNCCHcAXwFulrSF6KTPwfEv\nxFlEc6tPE328/B4wPPH0hcC5RCePPgx8IE5uECXGWfHZ/a7KjG5xhxDWABcA3wH+SpS4psXTGKWO\nc3/07P9nRK/Rx0MIO4FpwJlEI6bvAB8JITwR7/4R4GlJfyOaTz0/buMRornw78RTTGuI5kAL9lnA\nc0SvXwdRsvlEos+kOUSjvReJ5qZ/3mP7N4Fz4mqOOfFj1wA3xT+DnsmyV309rvj9Mo3o08GfiUbi\n/xhvu4vo/XBr/Po9BvSs9lgIPEJ0EnQRUeULwP1EVUHrJRWb4gC4lGiU+xTR1N6CEML83g6x3G0h\nhBeJRt9XxQ9dRzTSX080/76gl+fPJDrR/2B87IuJTtw2HFU2fWdZkXQ18IYQwkdrHYvlm6Q9wNEh\nhKdqHYvtP4+8zcxyqOJqk7gA/pdEUwfNwB0hhGsqbdfMqsYftxtAKtMmkg4MIWyLT6T9Grg0hLCs\n4obNzKygVKZNQgjb4puDiUbf/stuZlZFqVykE9eaPkJUv/z/QwgPF9jNCd3MrO8KXmSUSvKOy5aO\nlzQcuEvShBDCquQ+bW1ttLW17b3f2tpKa2trGt2bmfU7qZcKSpoFbA0hfKPHJo+8zcz6ruDIu+I5\nb0mvUbwecXzZ8RSiBXXMzKxK0pg2OQy4MZ73bgJ+HELoeTWamZmlKMsrLD1tYmbWd9WZNjEzs+w5\neZuZ5ZCTt5lZDmX2TTqLFmXVk5lZ45g2rfDj/ho0M2tYu3btYunSG9m+/Xmir7qstSaGDDmEM864\nkObmytKvk7eZNaxHH13MEUcMZ8qUjzBw4KBah8POnTtYsmQhjz66mBNPPLOitjznbWYNa8OG1Zx2\n2v+ti8QNMHDgIN7+9sls2LC64racvM2sYe3atZ1hw+rr+4eHDx/Frl2dFbfj5G1mDa2pqb7SXBRP\n5fPv9XVUZmZWFidvM7MccvI2M0vB+vVrOeusCUyY0MyJJw7j29++qqr9OXmbmaVgxoxpDBo0iAcf\nfJFrrrme7373qzz00P1V68/J28ysQps3b2L16nauuup6hg8fyVlnXcCECW/lppuuq1qfvkjHzKyH\n955+KLu3vdztsQEHDuVnv1pfcP+VK3+NJCZOPHXvY8cc82ZWrHiwajE6eZuZ9bB728v86cCDuj12\ndI9knrR58yYGDep+IdCwYSN55ZXtVYkPPG1iZlaxESNGsWPHjm6PbdmyiQMOGFK1Pp28zcwqNHHi\naYQQWLnyt3sfW7PmcY488uiq9enkbWbWw4ADh3L0tq3d/g04cGjR/UeMGMWxx76Fa6/9JJs3b+Lu\nu3/I6tWP8dGPfrZqMXrO28ysh2InJnszd+7d/NM/vZtTT30tBxwwhBkzvsTJJ0+uQnQRJ28zsxQc\neug4fvrTVZn152kTM7MccvI2M8shJ28zsxxy8jYzyyEnbzOzHHLyNjPLISdvM7MccvI2M8shJ28z\nsxxy8jYzS8GXv3wJp59+KMceO4APfejkqvdXcfKWdLik+yX9XlK7pEvTCMzMLE/Gjj2Siy/+HCed\ndHom/aUx8t4FXBZCOA44FfikpDel0K6ZWc10dnZy1VWfYNu2rWXtf/HFM5k+/XJGjBhV5cgiFSfv\nEML6EMLK+PbLwGpgbKXtmpnV0o9+9C0WLmzjhhu+XutQCkp1zlvSkcBE4KE02zUzy1JnZyc33ngr\nzc1XcMstPyl79J2l1JK3pKHAHcBn4hG4mVku/ehH32Lr1mMYMuRiOjtPqsvRdyrreUtqJkrcPwwh\nLCy0T3t7G+3tbXvvt7S00tLSmkb3Zmap6Rp1h3AJO3cuJ4RWbrllNhdddDkH9vhS4lpK68sYbgBW\nhRC+WWwHJ2szy4MNG9YzcuRBHHDATcBNAAwaNJL165/lqKMmFH3ezp076Ox8hT17drN79262bXuZ\ngQMHMXDgoKLPqUTFyVvSacCHgXZJK4AAfCmE8ItK2zYzy9qYMeNZuPCXfX7e5Zefzz333Ln3/vHH\nD+PMMz/IddfdnmZ4e1WcvEMIvwYGpBCLmVluzZlzB3PmZNefr7A0M8shJ2+zKnnppY21DsEamJO3\nWRWsW7eGL3xhKuvWral1KNagnLzNqmDhwu+xefPR3H3392sdijUoJ2+zlK1bt4aVKx9j9OjrWbHi\nUY++a6qJXbt21TqIbqJ4Kk+9Tt5mKVu48HvAhQwYMAK40KPvGho8eBQrV/62bhL4rl27WLnytwwe\nXPniVWldpGNmwMaNz7Fy5QM0Na3nlVfuo6lpBytWrGbjxuc4+ODDah1ev3Pyyefx0EO3sHTpUmBP\nrcMBmhg8eBQnn3xexS0phJBCQKUtWkQ2HZnV0J49e1i7dhW7d+8b6Q0Y0My4cRNoavIHXeu7adNQ\nocc98jZLUVNTE+PHv7nWYdSdl17ayLBhB9c6jIbioYCZVZXLJqvDydvMqsplk9Xh5G1mVeOyyepx\n8jazqnHZZPX4hKWZVYXLJqvLydvMqmLkyEO48sofvKpscuTIQ2oYVeNw8jarkeeee5LDDntDVfuo\nZYmeyyary3PeZjWwfPm9fPKTp7B8+b1V68Mleo3NydusBubNu5bdu09m3rx/r1ofLtFrbE7eZhlb\nvvxeOjo209x8Ix0df6vK6Nsleo3PydssY/PmXQt8iqam0cCnqjL6dole4/MJS7MMPfXUSjo6/gTc\nzu7dC4EddHQ8wVNPreSooyam0odL9PoHrypolqFdu3bx8MOL2Llzx97HBg4cxEknTaO5OZ2xlFc2\nbCzFVhV08rbcqbT8LavyuVL9pBFHGn3UQ5xZtZFHxZK3/wxbrlRa/pZV+VypftKII40+6iHOrNpo\nNE7eliuVlr9lVT5Xqp804kijj3qIM6s2Go2Tt+VGpeVvWZXPleonjTjS6KMe4syqjUbk5G25UWn5\nW1blc6X6SSOONPqohzizaqMRuVTQcqHS8resyudK9ZNGHGn0UQ9xZtVGo3K1ieVCpeVvWZXPleon\njTjS6KMe4syqjbxzqaDVhf5a7rW/slh5MA1ZlCxWGkNeuVTQas7lXn2TxcqDaciiZLHSGBqRk7dl\nxuVefZPFyoNpyKJksdIYGlEqyVvSPEnPS3osjfas8bjcq2+yWHkwDVmULFYaQ6NKa+Q9H3h3Sm1Z\nA3K5V99ksfJgGrIoWaw0hkaVSqlgCOFXksan0ZY1Hpd79U0WKw+mIYuSxUpjaGSpVZvEyXtRCOEt\nhba72qT/crlX32Sx8mAasihZrDSGRlD1UsFSyfs//qMttLe37b3f0tJKS0trKn2bmTWqYsk7sz/j\nTtaWlVK10X/60yMcffSJvbZRzj5ZqLR+Oov66rTasL5J83OF4n9mNVOqNnrx4nlcdtlkFi+eV7SN\ncvbJQqX101nUV6fVhvVdWqWCNwO/AY6R9GdJ09No16yvStVGz5//VeD0+P/CytknC5XWT2dRX51W\nG9Z3qSTvEML5IYQxIYTBIYQjQgjz02jXrC9K1UYvXjyPrVubgZvYurW54Mi6nH2yUGn9dBb11Wm1\nYfunMU7HmlG6NjoaSV+KNBq4tODIupx9slBp/XQW9dVptWH7p37qjswqUKo2esWKJWzdugm4jRB+\nAuxk69ZNrFixhOOPnwJQ1j5ZqLR+Oov66rTasP3nVQWtIZSqjd6xYwe/+MVcduzo3Lt90KDBTJ06\ng0GDBgGUtU8WKq2fzqK+Oq02rDQvCWv9Rhalb1kt1eoSPPOSsNYvZFH6ltVSrS7Bs944eVtDyaL0\nLaulWl2CZ71x8raGkUXpW1ZLtboEz0px8raGkUXpW1ZLtboEz0pxqaA1hCxK37JaqtUleFYOV5tY\nQ8ii9C2rpVpdgmdJLhW0qquXsrY0VtozqxcuFbSqqpeytjRW2jPLAydvS0W9lLWlsdKeWR44eVvF\n6qWsLY2V9szywsnbKlYvZW1prLRnlhcuFbSK1EtZWxor7ZnliatNrCL1UtaWxkp7ZvXIpYLWq3LK\n57JaSa9SWawq6C/ttay4VNCKKqd8LquV9CqVxaqC/tJeqweZJe/ZM54u+m/ZsqyisELKKZ/LaiW9\nSmWxqqC/tNfqQWYnLJd+7IaCj8+68620Xb+dtuuLP/eK+ROqFJXtK5+7jRUr/pF169Ywduwx3fbZ\nt5LeQjo6Wlm+/F5OOOHdNYq4uHKOpdI2sujDrBzZVZtMmlTw4WsnATxZ9GnnzjiY2dNXFW93yBDG\nvP31BTcdc0zRbi1WqHzukktmd9snuZLenj3RSnr1mLzLOZZK28iiD7Ny1H2p4I/nbgQ2Ft0+a2Yn\ntD9ScFvbfRNoays+ar/iikqjy7dyyueyWkmvUlmsKugv7bV6klm1CYsWZV9tsmwZi9qGFty04JnT\n6dg+CoYMKfr0K+YWHtE3inLK57JaSa9SWawq6C/ttVqoealgTZJ3Kb2cKT3j+vN6f+6xE/r9yN3M\nqs/JO03LlpVM7mPeNYFjipyD8jy8mZXLyTtDi2avYsEzpxfc1rF9VHTjWM/Fm1lpTt51ZNHs4tUz\ns1dPi2687pCC28e0jOaCC6oRlZnVIyfvPFmwoOimM+67utentl4ywdMyZg3EybsfmDWzk7YXer+g\nqfWS4tud9M3qj5O3ce6M4osgdZVN+oIns/pS1eQtaSowh2itlHkhhK+9aicn77o3a2Zn0W1tL0wo\nOg/f5YqvjU47JLN+r2rJW1ITsAZ4F9ABPAx8KITwh247OnnnWy/z8ACz2s+JEnw/vujJrBqqmbxP\nAa4OIbwnvv8FILxq9O3k3T8UufCp5EVPrzvEI3ezAool7zSubx4LrE3c/wvg2dH+qsjE+NJJxRcf\n67roafb054vvc+wExowpvMmlk9Yf1c/iFNZ/TZrUe3JfsIBZ7efAhldvanthArPvwxc9Wb+TRvJe\nBxyRuH94/Fg3be3ttLW3773f2tJCa0tLCt1bw7vgAq4tuvFJWLCARR0nFNw6e/U0Zk+n+Fz8ka93\ncrdcSmPOewDwR6ITls8By4DzQgiru+3oOW+rlWILkK1Z44uerO5lUSr4TfaVCn71VTs5eVvOLJq9\nat9yBUX4oierNl+kY5ayWTM7WfNS4S9Q2LtW/JGFyyPHjPGJViuPk7dZxkouQNbLRU8um7QuTt5m\n9aSXLwI59wdT9y0dXMiQIb7gqR9x8jZrEGdMf0PvO7zuEFr/ofDI3fPw+ePkbdYfLFvGuT+YWnRz\nx/ZRjHlX8ZOsnoevP07eZra3Jn7ZhleP3vcuJ+y5+Lri5G1mpVXwRSD+Uu7qcPI2s+pZsMAXPFWJ\nk7ftt8mXXcaWzZv33h8+YgT3f+MbNYzI8qacC548F19YNVcVtAa3ZfNmfjdixN77b0skcrNyTLti\nAtMovvjYrJmd0F64Lr7thQnM/s0QGDa88JNHj+6XFz05eZtZzV37tcG9bH2y17n4RR0nMPu+aVGC\nL6L1Y69vuCkbJ28zq3+9DKunAdOW3VJ0+6w730rb9dtpu77IDjm96MnJ20oaPmJEt6mS4YkpFLO6\n0Muw+tpJQC9TNufOOJjZ07cXb7uXi55KdF1VPmFpZlbMsmXMuvOtRTe3vTCh6l8E4moTM7O09fJF\nIAueOX3f6pKFDBte1kVPTt5WNS4lNCuilwXISn4pd3zRk0sFrWpcSmhWRC8T4qW+t/WM+65m9nSY\n9mLhaRknbzOzenPBBSy9oCu5F07eTdlFY2ZmafHI2yrmUkKz7Dl5W8V8ctIse542MTPLIY+8raRS\npYBjzzkHdu7c94SBA1l3++2pxzH67LMZmCht3SmxYeHCVPtw2aPlhZO3lVSyFHDnTtYNHLj37thk\nIk/RwBBYr30lr4dW4RoFlz1aXnjaxMwsh5y8zcxyyNMmVlLJUsCBA7tPlSSmUNK0U+o2VbJTBa8a\nrojLHi0vvLaJmVk9mzat4CjF0yZmZjnk5G1mlkOe866hUjXFadQcZ9FGVnXeWXCdt+WFk3cNlaop\nTqPmOJM2MqrzzoLrvC0vPG1iZpZDFSVvSR+U9Lik3ZIKfxeQmZmlrtJpk3bgA8B3U4il3ylVU5xG\nzXEmbWRU550F13lbXqRS5y3pAeBzIYTlRXdynbeZWd+5ztvMrHGUnDaRtAQ4JPkQEIArQwiLyu2o\nrb2dtvb2vfdbW1pobWnpQ6j5ksbypaXaKKdEr1Qb5ZTGjXrf+xicuN8JbLr77rL7KCfWcuIo1UYW\nJYsuJbR6UTJ5hxCmpNFRoyfrntJYvrRkG2WU6JVqo5zSuMHA+sT9Q/saZxmxllWiV+p4MyhZdCmh\n1Ys0p03SXyXIzMwKqrRU8P2S1gKnAD+VdE86YZmZWW8qKhUMIdwF3JVSLA0ljeVLS7ZRRoleqTbK\nKY3rpPtUSWdf4ywj1rJK9EodbwYliy4ltHrhJWHNzOqZSwXNzBqHF6baT3kpGSsVZxbfyF5OHGbW\nN07e+ykvJWOl4sziG9nLicPM+sbTJmZmOeTkbWaWQ5422U95KRkrFWcW38heThxm1jcuFTQzq2cu\nFTQzaxxO3mZmOeTkbWaWQ07eZmY55ORtZpZDTt5mZjnk5G1mlkNO3mZmOeTkbWaWQ07eZmY55ORt\nZpZDTt5mZjnk5G1mlkNO3mZmOeTkbWaWQ07eZmY55ORtZpZDTt5mZjnk5G1mlkNO3mZmOeTkbWaW\nQ07eZmY55ORtZpZDFSVvSbMlrZa0UtKdkoanFZiZmRVX6ch7MXBcCGEi8ATwxcpDMjOzUipK3iGE\n/w4h7InvPggcXnlIZmZWSppz3hcB96TYnpmZFdFcagdJS4BDkg8BAbgyhLAo3udKYGcI4eaqRGlm\nZt2UTN4hhCm9bZf0MeBMYHJv+7W1t9PW3r73fmtLC60tLeVFaWZm3ZRM3r2RNBW4HHhHCKGzt32d\nrM3M0lPpnPe3gaHAEknLJc1NISYzMyuhopF3COGNaQViZmbl8xWWZmY55ORtZpZDTt5mZjnk5G1m\nlkNO3mZmOaQQQlZ9ZdaRmVkDUaEHPfI2M8shJ28zsxxy8jYzyyEnbzOzHHLyNjPLISfvXrS1tdU6\nhKpoxONqxGMCH1feZHlcTt698BssPxrxmMDHlTdO3mZm1isnbzOzHMryCsvckdQaQmirdRxpa8Tj\nasRjAh9X3mR5XE7eZmY55GkTM7MccvI2M8shJ+8SJM2WtFrSSkl3Shpe65gqJemDkh6XtFvSCbWO\np1KSpkr6g6Q1kmbWOp40SJon6XlJj9U6ljRJOlzS/ZJ+L6ld0qW1jikNkgZLekjSivi4rq52n07e\npS0GjgshTASeAL5Y43jS0A58APifWgdSKUlNwHeAdwPHAedJelNto0rFfKJjajS7gMtCCMcBpwKf\nbISfVwihE3hnCOF4YCLwHkmTqtmnk3cJIYT/DiHsie8+CBxey3jSEEL4YwjhCYqsE5wzk4AnQgjP\nhhB2ArcCZ9c4poqFEH4FbKp1HGkLIawPIayMb78MrAbG1jaqdIQQtsU3BwPNVPk7DJy8++Yi4J5a\nB2HdjAXWJu7/hQZJBo1O0pFEo9SHahtJOiQ1SVoBrAeWhBAermZ/zdVsPC8kLQEOST5E9FfzyhDC\nonifK4GdIYSbaxBin5VzTGa1ImkocAfwmXgEnnvxJ/Tj4/Nid0maEEJYVa3+nLyBEMKU3rZL+hhw\nJjA5k4BSUOqYGsg64IjE/cPjx6xOSWomStw/DCEsrHU8aQshbJH0ADAVqFry9rRJCZKmApcD74tP\nSjSavM97PwwcLWm8pEHAh4C7axxTWkT+fz6F3ACsCiF8s9aBpEXSaySNiG8PAaYAf6hmn07epX0b\nGAoskbRc0txaB1QpSe+XtBY4BfippNzO44cQdgOfIqoK+j1wawhhdW2jqpykm4HfAMdI+rOk6bWO\nKQ2STgM+DEyOy+qWxwOkvDsMeEDSSqI5/HtDCD+vZoe+PN7MLIc88jYzyyEnbzOzHHLyNjPLISdv\nM7MccvI2M8shJ28zsxxy8jYzyyEnbzOzHPpfM4xfBUlFAmMAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -297,14 +297,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "Bias & Weights: [ 0.0097627 0.08408412 0.31449279]\n" + "Bias & Weights: [[ 0.03330268]\n", + " [ 0.23472335]]\n" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEPCAYAAABCyrPIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGqFJREFUeJzt3Xv0HHV5x/H3JyZcLAQRUKjhYtCIoDFQFVqhbrEKpTWA\nTVGwYKHNaUGT9EYbqD359SIoPdXagOeUEmlRQysXkVRFqrAUVBByIZhETACBthikJYAWMSFP/5jZ\nsGx+l5n97ezM7H5e5+zJXmbm+zgn5uE732eeUURgZmY2pewAzMysGpwQzMwMcEIwM7OUE4KZmQFO\nCGZmlnJCMDMzoOCEIGmZpM2S1nZ8v0DSBkn3SfpokTGYmVk2Uws+/pXAUuCq1heSGsC7gTdGxDZJ\n+xYcg5mZZVDoDCEi7gCe7Pj6XOCjEbEt3eaJImMwM7NsylhDmAX8oqQ7Jd0q6c0lxGBmZh2KvmQ0\n1ph7R8Qxkt4CfB6YWUIcZmbWpoyE8ChwPUBE3C1pu6R9IuJ/OjeU5EZLZmZdiAjl3acfl4yUvlpu\nAI4HkDQLmDZaMmiJiMq/lixZUnoMjtMxOk7H2Xp1q9AZgqTlQAPYR9IjwBLg08CVku4DngPOKjIG\nMzPLptCEEBFnjPHTmUWOa2Zm+flO5R5oNBplh5CJ4+ydOsQIjrPX6hJntzSZ601FkxRVjs/MrIok\nERVdVDYzsxpwQjAzM8AJwczMUk4IZmYGOCGYmVnKCcHMzAAnBDMzSzkhmJkZUIOEsG1b2RGYmQ2H\nyieEG24oOwIzs+FQ+YSwdGnZEZiZDYfKJ4QHH4Q1a8qOwsxs8FU+IZx7rmcJZmb9UPlup48/Hsya\nBRs3wr77lh2RmVn1DWy30/32g1NPhSuuKDsSM7PBVvkZQkSwejXMnQsPPQRTC33Gm5lZ/Q3sDAHg\nyCPhkENcgmpmVqRCE4KkZZI2S1o7ym9/JGm7pJdnOdbChV5cNjMrUtEzhCuBEzq/lDQDeCfwcNYD\nnXKKS1DNzIpUaEKIiDuAJ0f56RPA+XmONW2aS1DNzIrU9zUESXOBRyPivrz7zp8P118PTzxRQGBm\nZkOurwlB0u7AhcCS9q+z7u8SVDOz4vS7iPNQ4BDgXkkCZgArJb01Ih4fbYeRkZEd7xuNBgsWNJg7\nF/74j12CamYG0Gw2aTabkz5O4fchSDoEWBERbxzlt4eAoyJitHWGHfchdDruOFi0CObN63GwZmYD\noJL3IUhaDnwTmCXpEUlnd2wS5Lhk1OISVDOz3qvFncqdtm6FmTNhxQqYM6eEwMzMKqySM4SiuATV\nzKz3ajlDAPjhD3EXVDOzUQzVDAFcgmpm1mu1nSEA7oJqZjaKoZshgLugmpn1Uq0TArgE1cysV2qf\nENwF1cysN2qfEFyCambWG7VeVG5xCaqZ2QuGclG5xSWoZmaTNxAzBHAJqplZy1DPEMAlqGZmkzUw\nCQFcgmpmNhkDlRBcgmpm1r2BSgguQTUz697ALCq3uATVzIbd0C8qt7gE1cysOwM3QwCXoJrZcPMM\noY1LUM3M8is0IUhaJmmzpLVt310iaYOkNZKukzS9iLFdgmpmlk/RM4QrgRM6vrsZOCIi5gAbgQuK\nGNglqGZm+RSaECLiDuDJju++FhHb0493AjOKGNslqGZm+ZS9hnAO8JWiDj5/Plx/PTzxRFEjmJkN\njtJqcCT9GbA1IpaPt93IyMiO941Gg0ajkXmM9hLUxYu7DNTMrOKazSbNZnPSxym87FTSwcCKiJjd\n9t1vAfOB4yPiuXH27arstJ1LUM1s2FS57FTpK/kgnQicD8wdLxn0iktQzcyyKbrsdDnwTWCWpEck\nnQ0sBfYA/l3SKkmfKjIGcAmqmVkWA3mncqetW2HmTFixAubM6UFgZmYVVuVLRqVzCaqZ2cSGYoYA\n7oJqZsPDM4QJuAuqmdn4hmaGAC5BNbPh4BlCBi5BNTMb21AlBHAJqpnZWIYuIbgLqpnZ6IYuIbgE\n1cxsdJkSgqRFkqYrsSy9w/hdRQdXFHdBNTPbWdYZwjkR8TTwLmBv4Ezgo4VFVTCXoJqZ7SxrQmiV\nL50EfCYi1rV9V0sLFsBll8G2bWVHYmZWDVkTwkpJN5MkhK9K2hPYPsE+leYSVDOzF8t0Y5qkKcAc\n4MGI2CJpH+BVEbG20OB6fGNap2uugUsvhdtuK2wIM7O+6/bGtMx3Kkt6FXAwbU9Zi4j/yDtgHkUn\nBHdBNbNBVGhCkPQx4L3AeuD59OuIiLl5B8yj6IQAcNFF8MADsGxZocOYmfVN0QnhfmB2P55w1jFu\n4QnBXVDNbNAU3cvoQWBa3oPXgUtQzcwSWWcI1wFvAr4O7JglRMTC4kLrzwwB3AXVzAZLtzOErP/8\n3Zi+BlJ7Ceq8eWVHY2ZWjjxVRrsAs9KP90fE1gz7LAN+DdgcEbPT7/YG/pWkYun7wGkR8dQY+/dl\nhgAuQTWzwVHoGoKkBrARuAz4FPA9Sb+YYdcrgRM6vlsMfC0iXgfcAlyQOdoCuQuqmQ27rGsIK4Ez\nIuL+9PMs4OqI+LkM+x4MrGibIXwXeHtEbJa0P9CMiMPG2LdvMwRwCaqZDYaiq4ymtZIBQER8j+6r\njl4REZvT4/wAeEWXx+k5d0E1s2GWdVH5HklXAJ9NP78fuKdHMYw7BRgZGdnxvtFo0Gg0ejTsztpL\nUBcvLmwYM7OeajabNJvNSR8n6yWjXYEPAsemX90OfCrLjWqjXDLaADTaLhndGhGvH2Pfvl4yApeg\nmln9FXrJKCKei4iPR8R70tcncty1LF7cKvtG4LfS9x8Avpg52j5wF1QzG1bjzhAkfT4iTpN0H6Nc\n2mn9V/84+y8HGsA+wGZgCXADcA1wIPAwSdnpljH27/sMAVyCamb1VkgvI0kHRMRj6WWfnUTEw3kH\nzKOshOAuqGZWZ4VcMoqIx9K350XEw+0v4LxuAq2DadPg3HNh6dKyIzEz65+si8qrIuKoju/WTnTJ\naLLKmiGAu6CaWX0VMkOQdG66fvA6SWvbXg8BhT4trWzugmpmw2aiNYS9gL2Bi0laTrQ8ExH/W3Bs\npc4QwCWoZlZPRa0hPBUR34+I09N1g2dJqo32kHRQl7HWhktQzWyYZG1u925JG4GHgNtIupR+pcC4\nKmPhQi8um9lwyNrL6K+BY4DvRcSrgXcAdxYWVYW4C6qZDYusCWFrRPwPMEXSlIi4FXhzgXFVhktQ\nzWxYZC07/RpwCsni8r7A48BbIuIXCg2u5EXlFpegmlmdFHKnctvBf4ZkQXkKSafTvYDPpbOGwlQl\nIQCcc06SFNwF1cyqruiE8GrgsYj4Sfp5d+CVEfH9vAPmCq5CCcElqGZWF0U/IOcaYHvb5+fT74aG\nS1DNbNBlTQhTI+KnrQ/p+12KCam6XIJqZoMsa0L4oaS5rQ+STgaG7kGTLkE1s0GWdQ3hUOBzwM+S\nPOzmUeCsiNhUaHAVWkNouegieOABWLas7EjMzEZX6KJy2yB7AETEj/IO1I0qJgSXoJpZ1RX1gJzf\njIjPSvrD0X6PiI/nHTCPKiYEcAmqmVVbUVVGL03/3HOM11BasAAuuwy2bSs7EjOz3pmoov7Q9M/1\nETFUZabjaS9BnTev7GjMzHpjohnCSZIEXNDrgSX9gaTvpA/c+ZykWpWxugTVzAbNRAnhJuBJYLak\np9tez0h6uttBJf0ssAA4Kn0M51Tgfd0erwwuQTWzQTPRA3LOj4iXAV+KiOltrz0jYvokx34J8DOS\nppKsVfz3JI/XV+6CamaDJlfZaU8HlhYCHwH+D7g5Is4cZZtKVhm1uATVzKqo2yqjcReVJd0REcdK\neobk0ZntA0S3swRJLwNOBg4GngKulXRGRCzv3HZkZGTH+0ajQaPR6GbIQuy3H5x6KlxxhUtQzaw8\nzWaTZrM56eOUMkOQNA84ISLmp5/PBI6OiA91bFfpGQK4C6qZVU+h3U4lHSpp1/R9Q9LC9L/yu/UI\ncIyk3dIqpncAGyZxvNK4C6qZDYqsze2uA56X9BrgcuBAYKfLO1lFxLeBa4HVwL0kl6Iu7/Z4ZXMJ\nqpkNgqzN7VZFxFGSzgd+EhFLJa2OiCMLDa4Gl4wAtm6FmTNhxQqYM6fsaMxs2BX9gJytkk4HPgD8\nW/rdtLyDDSqXoJrZIMg6Qzgc+D3gWxFxdfpIzdMi4mOFBleTGQK4BNXMqqMv7a/TgfYGDoyItXkH\ny6tOCQHcBdXMqqHQhCCpCcwluW9hJfA48I2IGLUtdq/ULSG4BNXMqqDoNYS9IuJp4D3AVRFxNPDL\neQcbdC5BNbM6y5oQpko6ADiNFxaVbRQuQTWzusqaEP4S+CqwKSLuljQT2FhcWPXlLqhmVlelNbfL\nom5rCC0XXQQPPADLlpUdiZkNo6IXlXcDfhs4Atit9X1EnJN3wDzqmhBcgmpmZSp6UfkzwP7ACcBt\nwAzgmbyDDYv2LqhmZnWRdYawOiKOlLQ2ImZLmgbcHhHHFBpcTWcI4BJUMytP4a0r0j+3SHoDsBfw\niryDDROXoJpZ3WRNCJendyj/OXAjsB64pLCoBoRLUM2sTlxlVCB3QTWzMhRSZSRp3NYUEfHxvAPm\nUfeEAC5BNbP+KyohLBlv54j4i7wD5jEICcElqGbWb33rdtpPg5AQwF1Qzay/in6m8j+3P0NZ0t6S\nPp13sGG1YAFcdhls21Z2JGZmY8taZTQ7Ira0PkTEk0Chj88cJC5BNbM6yJoQpqRlpwBIejnJsxG6\nJmkvSddI2iBpnaSjJ3O8qnMJqplVXdaE8LfAtyT9laS/Br7J5O9D+CTw5Yh4PfAmYMMkj1dp7oJq\nZlWXeVE5fa7y8enHWyJifdeDStOB1RFx6ATbDcSicotLUM2sH4rudnoo8J8R8ZykBjCb5MlpW8bf\nc8zjvQm4nOSO5zcB9wCLIuLZju0GKiG4BNXM+qHbhJB1HeA64M2SXgP8A0n7iuXASXkHbBv3KOCD\nEXGPpL8DFgM73fcwMjKy432j0aDRaHQ5ZPnau6C6BNXMeqXZbNJsNid9nKwzhFURcZSkPwGejYil\nrQ6oXQ0qvRL4VkTMTD8fC/xpRLy7Y7uBmiGAu6CaWfEK73Yq6XTgLF54pvK0vIO1RMRm4FFJs9Kv\n3kFy+WjguQTVzKoqa0I4G/h54CMR8ZCkV5M8NGcyFgKfk7SGZB3hokkerzZcgmpmVZS7dUV6P8KB\nEbG2mJBeNNbAXTICd0E1s2IV3bqiKWl6ekPaKuAfJRXa6XSQTZsG553nWYKZVUveR2j+DsnsYEnr\ncZqFBjegMwSAJ56A177WJahm1ntFLypPlXQAcBovLCrbJOy77wslqGZmVZA1Ifwl8FVgU0TcLWkm\nsLG4sIaDu6CaWZX4eQglO+44WLQI5s0rOxIzGxRFPTHtTyLiEklLgZ02jIiFeQfMFdwQJIRrroFL\nL4Xbbis7EjMbFEWtIbQ6kN4DrBzlZZPkLqhmVhW+ZFQBF18Mmza5C6qZ9UZRl4xuHG/niJibd8A8\nhiUhuATVzHqpqITwQ+BR4GrgLuBFA0REoVe+hyUhAJxzTtIa211QzWyyikoILwHeCZxO8gyELwFX\nR8S6bgPNFdwQJQR3QTWzXilkUTkino+ImyLiA8AxwCagKelDXcZpY3AXVDMr24Q3pknaVdJ7gM8C\nHwT+HvhC0YENI3dBNbMyTXTJ6CrgDcCXgX+JiO/0K7B0/KG5ZATugmpmvVHUGsJ24Mfpx/YNBURE\nTM87YB7DlhDAJahmNnmFJISyDWNCcAmqmU1W0d1OrU/cBdXMyuIZQgW5BNXMJsMzhAHiElQzK0Op\nCUHSFEmrJmqRMYxcgmpm/Vb2DGERsL7kGCrJXVDNrN9KSwiSZgAnAV4+HcW0aXDeeZ4lmFn/lDlD\n+ARwPqM8eMcS8+fD9dcnpahmZkUrpYZF0q8CmyNijaQGHV1U242MjOx432g0aDQaRYdXGe0lqO6C\namZjaTabNJvNSR+nlLJTSRcBvwlsA3YH9gSuj4izOrYbyrLTdi5BNbO8alV2GhEXRsRBETETeB9w\nS2cysIRLUM2sX8quMrIMXIJqZv3gO5VrwF1QzSyPWl0ysnxcgmpm/eAZQk24C6qZZeUZwoBzF1Qz\nK5pnCDXiElQzy8IzhCHgElQzK5ITQs24BNXMiuKEUDPugmpmRXFCqBmXoJpZUbyoXEMuQTWz8XhR\neYi4BNXMiuAZQk25BNXMxuIZwpBxCaqZ9ZoTQo25BNXMeskJocZcgmpmveSEUGMuQTWzXvKics25\nBNXMOnlReUi5BNXMesUzhAHgElQza+cZwhBzCaqZ9UIpCUHSDEm3SFon6T5JC8uIY5C4BNXMJquU\nS0aS9gf2j4g1kvYAVgInR8R3O7bzJaOMtm6FmTNhxQqYM6fsaMysTLW6ZBQRP4iINen7HwEbgFeV\nEcugcAmqmU1W6YvKkg4BmsAb0uTQ/ptnCDm4BNXMoPsZQqk1KenlomuBRZ3JoGVkZGTH+0ajQaPR\n6EtsddRegrp4cdnRmFm/NJtNms3mpI9T2gxB0lTg34CvRMQnx9jGM4ScXIJqZrVaQ0h9Glg/VjKw\n7rgE1cy6VVbZ6duA9wPHS1otaZWkE8uIZRC5BNXMulH6ovJ4fMmoOy5BNRtudbxkZAVxCaqZdcMz\nhAHlElSz4eUZgr2Iu6CaWV6eIQwwl6CaDSfPEGwnLkE1szycEAacS1DNLCsnhAF3yinw4IOwZk3Z\nkZhZ1TkhDDiXoJpZVl5qHALz5yclqAccAIcfDkccAa97Hey2W9mRmVmVuMpoSNx+O3z967B+Paxb\nl1xGOvDAJDkccYQThdkg6bbKyAlhSP30p7BpU5Ic1q1zojAbJE4I1hNOFGb154RghXKiMKsPJwQr\nhROFWfU4IVilOFGYlccJwWrBicKseE4IVmtOFGa944RgA8mJwiy/2iWE9BnKf0fSPmNZRHxslG2c\nEGxUThRmY6tV+2tJU4BLgROAI4DTJR1WRiy90Gw2yw4hk0GKc5ddkn/sf+M3YGQEPv/5JCE89VTS\n7vuMM5JnQLTe7703zJqVPDTowx+G5cvh3nvhJz8pLsYqcJy9VZc4u1VWc7u3Ahsj4uGI2Ar8C3By\nSbFMWl3+kgxDnP1KFMNwLvvJcVZDWc3tXgU82vb5P0mShFkhWomilSxaOi893XADfOQjvvRkw8nd\nTm2odZsotm+HlSvLizur++93nL1Ulzi7VcqisqRjgJGIODH9vBiIzoVlSV5RNjPrQm2qjCS9BLgf\neAfwGPBt4PSI2ND3YMzMDCjpklFEPC/pQ8DNvFB26mRgZlaiSt+YZmZm/VOJZypLOlHSdyV9T9Kf\njrHN30vaKGmNpDlVi1HS2yVtkbQqfX243zGmcSyTtFnS2nG2KfVcpjGMG2cVzqekGZJukbRO0n2S\nFo6xXdl/NyeMsyLnc1dJd0lanca5ZIztyj6fE8ZZhfOZxjElHf/GMX7Pdy4jotQXSVLaBBwMTAPW\nAId1bPMrwJfS90cDd1YwxrcDN1bgfB4LzAHWjvF7qecyR5yln09gf2BO+n4PknWvSv3dzBFn6ecz\njeOl6Z8vAe4E3lq185kxzqqczz8APjtaLN2cyyrMELLcpHYycBVARNwF7CXplRWLESD3qn6vRcQd\nwJPjbFL2uSQde6I4oeTzGRE/iIg16fsfARtI7qFpV/r5zBgnVOPv5/+lb3clWcPsvGZd+vlMx54o\nTij5fEqaAZwEXDHGJrnPZRUSwmg3qXX+Ze7c5r9G2aZIWWIE+Pl0avYlSYf3J7Tcyj6XeVTmfEo6\nhGRGc1fHT5U6n+PECRU4n+kljtXAD4B/j4i7OzapxPnMECeUfz4/AZzP6MkKujiXVUgIg2IlcFBE\nzCHp03RDyfHUXWXOp6Q9gGuBRel/gVfSBHFW4nxGxPaIOBKYARxddqIfS4Y4Sz2fkn4V2JzODEWP\nZitVSAj/BRzU9nlG+l3nNgdOsE2RJowxIn7UmmZGxFeAaZJe3r8QMyv7XGZSlfMpaSrJP7KfiYgv\njrJJJc7nRHFW5Xy2xfM0cCtwYsdPlTifLWPFWYHz+TZgrqQHgauBX5J0Vcc2uc9lFRLC3cBrJB0s\naRfgfUDnivmNwFmw4y7nLRGxuUoxtl+bk/RWkpLe/+1jjC8Kh7H/i6Hsc9luzDgrdD4/DayPiE+O\n8XtVzue4cVbhfEraV9Je6fvdgXcC3+3YrPTzmSXOss9nRFwYEQdFxEySf49uiYizOjbLfS5L72UU\nY9ykJul3k5/j8oj4sqSTJG0CfgycXbUYgXmSzgW2As8C7+1njC2SlgMNYB9JjwBLgF2oyLnMGicV\nOJ+S3ga8H7gvvZ4cwIUk1WaVOZ9Z4qQC5xM4APhnJe3vpwD/mp6/yvx/PWucVON87mSy59I3ppmZ\nGVCNS0ZmZlYBTghmZgY4IZiZWcoJwczMACcEMzNLOSGYmRnghGADTtIz6Z8HSzq9x8e+oOPzHb08\nvlm/OSHYoGvdaPNq4Iw8Oyp51Ot4LnzRQBHH5jm+WdU4IdiwuBg4Nn2YyKK0m+Ul6YNQ1kiaDzse\nfPIfkr4IrEu/+4Kku9OHpfxO+t3FwO7p8T6TfvdMazBJf5Nuf6+k09qOfaukayRtaO2X/vZRSd9J\nY7mkb2fFrE3prSvM+mQx8EcRMRcgTQBbIuLotD/VNyTdnG57JHBERDySfj47IrZI2g24W9J1EXGB\npA9GxFFtY0R67F8HZkfEGyW9It3ntnSbOcDhJG2VvyHpF0j65JwSEYel+08v6iSYjcczBBtW7wLO\nSnv/3AW8HHht+tu325IBwO9LWkPy5KwZbduN5W0kHSiJiMeBJvCWtmM/FknPmDXAIcBTwLOSrpB0\nKklvHLO+c0KwYSVgQUQcmb4OjYivpb/9eMdG0tuB44Gj0973a4Dd2o6RdayW59rePw9MjYjnSZ7K\ndy3wa8BNuf/XmPWAE4INutY/xs8Ae7Z9/1XgvPQ5Akh6raSXjrL/XsCTEfGcpMOAY9p++2lr/46x\nbgfem65T7AccB3x7zACTcV8WETcBfwjMzv4/z6x3vIZgg65VZbQW2J5eIvqniPikksdNrpIk4HHg\nlFH2vwn4PUnrSB5e/6223y4H1kpaGRFntsaKiC+k/efvBbYD50fE45JeP0Zs04EvpmsUkDw43azv\n3P7azMwAXzIyM7OUE4KZmQFOCGZmlnJCMDMzwAnBzMxSTghmZgY4IZiZWcoJwczMAPh/CX3woRFT\nyL4AAAAASUVORK5CYII=\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -369,10 +370,13 @@ "text": [ "## Perceptron\n", "\n", - "*Perceptron(eta=0.1, epochs=50, shuffle=False, random_seed=None, zero_init_weight=False, print_progress=0)*\n", + "*Perceptron(eta=0.1, epochs=50, random_seed=None, print_progress=0)*\n", "\n", "Perceptron classifier.\n", "\n", + " Note that this implementation of the Perceptron expects binary class labels\n", + " in {0, 1}.\n", + "\n", "**Parameters**\n", "\n", "- `eta` : float (default: 0.1)\n", @@ -382,20 +386,11 @@ "- `epochs` : int (default: 50)\n", "\n", " Number of passes over the training dataset.\n", - "\n", - "- `shuffle` : bool (default: False)\n", - "\n", - " Shuffles training data every epoch if True to prevent circles.\n", + " Prior to each epoch, the dataset is shuffled to prevent cycles.\n", "\n", "- `random_seed` : int\n", "\n", - " Random state for initializing random weights.\n", - "\n", - "- `zero_init_weight` : bool (default: False)\n", - "\n", - " If True, weights are initialized to zero instead of small random\n", - " numbers in the interval [-0.1, 0.1];\n", - " ignored if solver='normal equation'\n", + " Random state for initializing random weights and shuffling.\n", "\n", "- `print_progress` : int (default: 0)\n", "\n", @@ -407,9 +402,13 @@ "\n", "**Attributes**\n", "\n", - "- `w_` : 1d-array\n", + "- `w_` : 2d-array, shape={n_features, 1}\n", + "\n", + " Model weights after fitting.\n", "\n", - " Weights after fitting.\n", + "- `b_` : 1d-array, shape={1,}\n", + "\n", + " Bias unit after fitting.\n", "\n", "- `cost_` : list\n", "\n", @@ -419,9 +418,9 @@ "\n", "
\n", "\n", - "*fit(X, y, init_weights=True)*\n", + "*fit(X, y, init_params=True)*\n", "\n", - "Learn weight coefficients from training data.\n", + "Learn model from training data.\n", "\n", "**Parameters**\n", "\n", @@ -434,26 +433,41 @@ "\n", " Target values.\n", "\n", - "- `init_weights` : bool (default: True)\n", + "- `init_params` : bool (default: True)\n", "\n", - " Re-initializes weights prior to fitting. Set False to continue\n", - " training with weights from a previous fitting.\n", + " Re-initializes model parametersprior to fitting.\n", + " Set False to continue training with weights from\n", + " a previous model fitting.\n", "\n", "**Returns**\n", "\n", - "self\n", + "- `self` : object\n", + "\n", "\n", "
\n", "\n", - "*net_input(X)*\n", + "*predict(X)*\n", + "\n", + "Predict targets from X.\n", + "\n", + "**Parameters**\n", + "\n", + "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n", + "\n", + " Training vectors, where n_samples is the number of samples and\n", + " n_features is the number of features.\n", + "\n", + "**Returns**\n", + "\n", + "- `target_values` : array-like, shape = [n_samples]\n", "\n", - "Net input function\n", + " Predicted target values.\n", "\n", "
\n", "\n", - "*predict(X)*\n", + "*score(X, y)*\n", "\n", - "Predict class labels of X.\n", + "Compute the prediction accuracy\n", "\n", "**Parameters**\n", "\n", @@ -462,11 +476,16 @@ " Training vectors, where n_samples is the number of samples and\n", " n_features is the number of features.\n", "\n", + "- `y` : array-like, shape = [n_samples]\n", + "\n", + " Target values (true class labels).\n", + "\n", "**Returns**\n", "\n", - "- `class_labels` : array-like, shape = [n_samples]\n", + "- `acc` : float\n", "\n", - " Predicted class labels.\n", + " The prediction accuracy as a float\n", + " between 0.0 and 1.0 (perfect score).\n", "\n", "\n" ] diff --git a/docs/sources/user_guide/classifier/Perceptron_files/Perceptron_25_1.png b/docs/sources/user_guide/classifier/Perceptron_files/Perceptron_25_1.png index bd1b5a74073e7874b1b8dfbe074b49e58d4f42de..dbd35a58f6c2662617b4d12e784bdd6710f59872 100644 GIT binary patch literal 8198 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 literal 8829 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 diff --git a/docs/sources/user_guide/classifier/Perceptron_files/Perceptron_25_3.png b/docs/sources/user_guide/classifier/Perceptron_files/Perceptron_25_3.png index 56e4e9949a8db14f4f08ffec74a7db06f68c253c..78adf27ea6877e4faaad4cf7f400ed9d925fb261 100644 GIT binary patch literal 7615 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 literal 6911 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" + "" ] }, "metadata": {}, @@ -536,9 +543,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nAc5q5G6NnoavAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -560,7 +567,11 @@ "X[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std()\n", "X[:,1] = (X[:,1] - X[:,1].mean()) / X[:,1].std()\n", "\n", - "lr = SoftmaxRegression(eta=0.005, epochs=200, minibatches=1, random_seed=1)\n", + "lr = SoftmaxRegression(eta=0.075, \n", + " epochs=500, \n", + " minibatches=1, \n", + " random_seed=1,\n", + " print_progress=3)\n", "lr.fit(X, y)\n", "\n", "plot_decision_regions(X, y, clf=lr)\n", @@ -621,9 +632,9 @@ "output_type": "stream", "text": [ "Last 3 Class Labels:\n", - " [[ 4.99921674e-06 7.23245885e-02 9.27670412e-01]\n", - " [ 2.50487208e-07 1.20047952e-02 9.87994954e-01]\n", - " [ 2.14388120e-04 2.95955727e-01 7.03829884e-01]]\n" + " [[ 5.19550893e-07 3.12873619e-02 9.68712119e-01]\n", + " [ 1.08556117e-09 2.37254987e-03 9.97627449e-01]\n", + " [ 1.07576472e-05 1.63409763e-01 8.36579479e-01]]\n" ] } ], @@ -641,16 +652,16 @@ }, { "cell_type": "code", - "execution_count": 16, + "execution_count": 15, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": "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\n", + "image/png": "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\nYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -658,9 +669,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -704,7 +715,7 @@ }, { "cell_type": "code", - "execution_count": 267, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -715,9 +726,9 @@ "text": [ "## SoftmaxRegression\n", "\n", - "*SoftmaxRegression(eta=0.01, epochs=50, l2_lambda=0.0, minibatches=1, random_seed=None, zero_init_weight=False, print_progress=0)*\n", + "*SoftmaxRegression(eta=0.01, epochs=50, l2=0.0, minibatches=1, n_classes=None, random_seed=None, print_progress=0)*\n", "\n", - "Logistic regression classifier.\n", + "Softmax regression classifier.\n", "\n", "**Parameters**\n", "\n", @@ -728,29 +739,30 @@ "- `epochs` : int (default: 50)\n", "\n", " Passes over the training dataset.\n", + " Prior to each epoch, the dataset is shuffled\n", + " if `minibatches > 1` to prevent cycles in stochastic gradient descent.\n", "\n", - "- `l2_lambda` : float\n", + "- `l2` : float\n", "\n", " Regularization parameter for L2 regularization.\n", - " No regularization if l2_lambda=0.0.\n", + " No regularization if l2=0.0.\n", "\n", "- `minibatches` : int (default: 1)\n", "\n", - " Divide the training data into *k* minibatches\n", - " for accelerated stochastic gradient descent learning.\n", - " Gradient Descent Learning if `minibatches` = 1\n", - " Stochastic Gradient Descent learning if `minibatches` = len(y)\n", - " Minibatch learning if `minibatches` > 1\n", + " The number of minibatches for gradient-based optimization.\n", + " If 1: Gradient Descent learning\n", + " If len(y): Stochastic Gradient Descent (SGD) online learning\n", + " If 1 < minibatches < len(y): SGD Minibatch learning\n", "\n", - "- `random_seed` : int (default: None)\n", + "- `n_classes` : int (default: None)\n", "\n", - " Set random state for shuffling and initializing the weights.\n", + " A positive integer to declare the number of class labels\n", + " if not all class labels are present in a partial training set.\n", + " Gets the number of class labels automatically if None.\n", "\n", - "- `zero_init_weight` : bool (default: False)\n", + "- `random_seed` : int (default: None)\n", "\n", - " If True, weights are initialized to zero instead of small random\n", - " numbers following a standard normal distribution with mean=0 and\n", - " stddev=1.\n", + " Set random state for shuffling and initializing the weights.\n", "\n", "- `print_progress` : int (default: 0)\n", "\n", @@ -762,22 +774,25 @@ "\n", "**Attributes**\n", "\n", - "- `w_` : 1d-array\n", + "- `w_` : 2d-array, shape={n_features, 1}\n", + "\n", + " Model weights after fitting.\n", + "\n", + "- `b_` : 1d-array, shape={1,}\n", "\n", - " Weights after fitting.\n", + " Bias unit after fitting.\n", "\n", "- `cost_` : list\n", "\n", - " List of floats with sum of squared error cost (sgd or gd) for every\n", - " epoch.\n", + " List of floats, the average cross_entropy for each epoch.\n", "\n", "### Methods\n", "\n", "
\n", "\n", - "*fit(X, y, init_weights=True)*\n", + "*fit(X, y, init_params=True)*\n", "\n", - "Learn weight coefficients from training data.\n", + "Learn model from training data.\n", "\n", "**Parameters**\n", "\n", @@ -790,9 +805,11 @@ "\n", " Target values.\n", "\n", - "- `init_weights` : bool (default: True)\n", + "- `init_params` : bool (default: True)\n", "\n", - " (Re)initializes weights to small random floats if True.\n", + " Re-initializes model parametersprior to fitting.\n", + " Set False to continue training with weights from\n", + " a previous model fitting.\n", "\n", "**Returns**\n", "\n", @@ -803,7 +820,7 @@ "\n", "*predict(X)*\n", "\n", - "Predict class labels of X.\n", + "Predict targets from X.\n", "\n", "**Parameters**\n", "\n", @@ -814,9 +831,9 @@ "\n", "**Returns**\n", "\n", - "- `class_labels` : array-like, shape = [n_samples]\n", + "- `target_values` : array-like, shape = [n_samples]\n", "\n", - " Predicted class labels.\n", + " Predicted target values.\n", "\n", "
\n", "\n", @@ -836,7 +853,29 @@ "- `Class probabilties` : array-like, shape= [n_samples, n_classes]\n", "\n", "\n", - "### Properties\n", + "
\n", + "\n", + "*score(X, y)*\n", + "\n", + "Compute the prediction accuracy\n", + "\n", + "**Parameters**\n", + "\n", + "- `X` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n", + "\n", + " Training vectors, where n_samples is the number of samples and\n", + " n_features is the number of features.\n", + "\n", + "- `y` : array-like, shape = [n_samples]\n", + "\n", + " Target values (true class labels).\n", + "\n", + "**Returns**\n", + "\n", + "- `acc` : float\n", + "\n", + " The prediction accuracy as a float\n", + " between 0.0 and 1.0 (perfect score).\n", "\n", "\n" ] @@ -846,15 +885,6 @@ "with open('../../api_modules/mlxtend.classifier/SoftmaxRegression.md', 'r') as f:\n", " print(f.read())" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/docs/sources/user_guide/classifier/SoftmaxRegression_files/SoftmaxRegression_34_1.png b/docs/sources/user_guide/classifier/SoftmaxRegression_files/SoftmaxRegression_34_1.png index fbceb246b8c9726e9f279de7f7a5d648b68d5aa4..8be2e1f535e6c2a3717dde5412d0ed8b39885e30 100644 GIT binary patch literal 11287 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 literal 7785 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 L15vK$@Z|pi+V08g&)vs|EVS=k(Kdbk*cd7j zE1JTkR21Wjo_9rOjReQv^Ic$py5;|1eR9kGydhp<|DL@;zA*!lSXJd zXNES`3M@T)#|ryqiykeOy&QVEVu^OaV%0A+r8`1ZRfW=p#j#i`0M<;QaNNYF5p5-S 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 literal 0 HcmV?d00001 diff --git a/docs/sources/user_guide/classifier/SoftmaxRegression_files/SoftmaxRegression_40_0.png b/docs/sources/user_guide/classifier/SoftmaxRegression_files/SoftmaxRegression_40_0.png index 01af37b56270d56528b49fc499183deac046cc88..943aea22d9d8ed99d83450003796a6ca44943a1f 100644 GIT binary patch literal 11858 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
~ggfkwoH7hIEifAE!aGa)e4{O%kbCg5{)~ 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 literal 14636 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

%zX{0yK#uTO9^IwYnT`)U zFP8s1{Zwdb&t4G&5f$+7P!o>`D_wk(-=5cK*?_3Cj8DEy=e<;GKf=m{ZrBmlw!9Lj zd+c+Ao}qQS@2&M5mMlaj!g-uI|I8IIE5RwN>OuaSB}+TwQL<#@vW70|kiL#V9 zgN5IFmye{|xSaO1l*(b(n)m+mg=OZJ1^(M(D@!xIH@p`5x3{1`XEvNiR#c?NTefoH zJ=D`ua;?8K%Chv+#g{LAZw#(Y1vq`ARb?weUM}0G++!s1qHJ%^TF1aSuYZv3O{|PlZh2pA;0pad)aB5E zw)Ag#F`AurR}XUpBbdBUx`@&MrSHsMV`&MTopYIe;To(IG_Q$*=q9e~=|PoVSAurz zSrc}eN}c=do>!RumNQ8NzUDOMUyqW;yC{vp2bkc zs{YmbVeRe(DuagV zYN!9CI$p^suzU5pcy-3_CtF2ch*IoP;8Ra|ow)ZiNNjdWgACMAt%gdwUh+Mh3p23Pf1P%yikyVzXr2kw; zLcKbCLS5U-TbfZZAnapvgsOMKJVMJuVPw* z4daWwddq<0wIMF%PIsJbQxN;8437WEs25OPVzgkQ8XUg2x1;TU08-BZ2>^7Egb&z? zVp(%oL04q}%K zH2b*En=J%7S%ZoS&ZszpO<4kUlN5ZC(o>64OU%U@0( z)qS#6;4sKBDv48Or)U9nPGf(m$55SYluJMm(({-x?Vz2Jc#iqz_<+C(B`u9i(kUBN zIeOpIcO^t@hGGO!doX9m3f@Vy`c?rS<#X-a_7*Q4ZYbB{PHV(yxSFqO*BKPQ72QfA zsg_eIwY09ojFV8nM1{Kh`a-HtikW4ns)Lmc=~8D<=CD+@QG-6^>I>e#UjY_a6TqEi z+;&oZ%athvj_TA0*%>9FPQf-@3mksuWgya)WF znt6e87@3~ZMcBH5`4P$nuyjumq)Gz`ux&$7 zF;pp$BOv3-d}uG)RUn3O+UowshHv8MHGM--1y-X~S-gZ4K#q(Riq#>S=By1L=u11rZ4aX=cVg>;D{R%N2S5OA1B_!ZEz!YtevyWBO1Te zvQRFP{7dlbQ8iO-eKJij`6IG(Gkgez6n%V=WxmWF5TG9Er&gli{F}N9X" + "" ] }, "metadata": {}, @@ -214,14 +214,14 @@ "import matplotlib.pyplot as plt\n", "from mlxtend.regressor import LinearRegression\n", "\n", - "X = np.array([ 1, 2.1, 3.6, 4.2, 6])[:, np.newaxis]\n", - "y = np.array([ 1, 2, 3, 4, 5])\n", + "X = np.array([ 1.0, 2.1, 3.6, 4.2, 6])[:, np.newaxis]\n", + "y = np.array([ 1.0, 2.0, 3.0, 4.0, 5.0])\n", "\n", "ne_lr = LinearRegression(minibatches=None)\n", "ne_lr.fit(X, y)\n", "\n", - "print('Intercept: %.2f' % ne_lr.w_[0])\n", - "print('Slope: %.2f' % ne_lr.w_[1])\n", + "print('Intercept: %.2f' % ne_lr.b_)\n", + "print('Slope: %.2f' % ne_lr.w_[0])\n", "\n", "def lin_regplot(X, y, model):\n", " plt.scatter(X, y, c='blue')\n", @@ -241,7 +241,7 @@ }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -250,22 +250,22 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 1000/1000 | Cost 0.08 | Elapsed: 0:00:00 | ETA: 0:00:00" + "Iteration: 100/100 | Cost 0.08 | Elapsed: 0:00:00 | ETA: 0:00:00" ] }, { "name": "stdout", "output_type": "stream", "text": [ - "Intercept: 0.25\n", - "Slope: 0.81\n" + "Intercept: 0.82\n", + "Slope: 0.22\n" ] }, { "data": { - "image/png": "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\nTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -277,18 +277,18 @@ "import matplotlib.pyplot as plt\n", "from mlxtend.regressor import LinearRegression\n", "\n", - "X = np.array([ 1, 2.1, 3.6, 4.2, 6])[:, np.newaxis]\n", - "y = np.array([ 1, 2, 3, 4, 5])\n", + "X = np.array([ 1.0, 2.1, 3.6, 4.2, 6])[:, np.newaxis]\n", + "y = np.array([ 1.0, 2.0, 3.0, 4.0, 5.0])\n", "\n", "gd_lr = LinearRegression(eta=0.005, \n", - " epochs=1000,\n", + " epochs=100,\n", " minibatches=1,\n", " random_seed=123,\n", " print_progress=3)\n", "gd_lr.fit(X, y)\n", "\n", - "print('Intercept: %.2f' % gd_lr.w_[0])\n", - "print('Slope: %.2f' % gd_lr.w_[1])\n", + "print('Intercept: %.2f' % gd_lr.w_)\n", + "print('Slope: %.2f' % gd_lr.b_)\n", "\n", "def lin_regplot(X, y, model):\n", " plt.scatter(X, y, c='blue')\n", @@ -301,16 +301,16 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": "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\nf/1LtnlsvjJLAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -328,51 +328,6 @@ "plt.show() " ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - " **Tip**: I you are using gradient descent, consider standardizing the variables for better convergence of the algorithm." - ] - }, - { - "cell_type": "code", - "execution_count": 38, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Epoch: 1000/1000 | Cost 0.04 | Elapsed: 0:00:00 | ETA: 0:00:00" - ] - }, - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "X_std = (X - np.mean(X)) / X.std()\n", - "y_std = (y - np.mean(y)) / y.std()\n", - " \n", - "gd_lr.fit(X_std, y_std)\n", - "\n", - "plt.plot(range(1, gd_lr.epochs+1), gd_lr.cost_)\n", - "plt.xlabel('Epochs')\n", - "plt.ylabel('Cost')\n", - "plt.tight_layout()\n", - "plt.show() " - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -382,7 +337,7 @@ }, { "cell_type": "code", - "execution_count": 39, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -397,9 +352,9 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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\nYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -411,18 +366,17 @@ "import matplotlib.pyplot as plt\n", "from mlxtend.regressor import LinearRegression\n", "\n", - "X = np.array([ 1, 2.1, 3.6, 4.2, 6])[:, np.newaxis]\n", - "y = np.array([ 1, 2, 3, 4, 5])\n", + "X = np.array([ 1.0, 2.1, 3.6, 4.2, 6])[:, np.newaxis]\n", + "y = np.array([ 1.0, 2.0, 3.0, 4.0, 5.0])\n", "\n", "sgd_lr = LinearRegression(eta=0.01, \n", " epochs=100, \n", " random_seed=0, \n", - " minibatches=len(y),\n", - " zero_init_weight=True)\n", + " minibatches=len(y))\n", "sgd_lr.fit(X, y)\n", "\n", - "print('Intercept: %.2f' % sgd_lr.w_[0])\n", - "print('Slope: %.2f' % sgd_lr.w_[1])\n", + "print('Intercept: %.2f' % sgd_lr.b_)\n", + "print('Slope: %.2f' % sgd_lr.w_)\n", "\n", "def lin_regplot(X, y, model):\n", " plt.scatter(X, y, c='blue')\n", @@ -435,16 +389,16 @@ }, { "cell_type": "code", - "execution_count": 40, + "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAakAAAEbCAYAAABgLnslAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHItJREFUeJzt3XmYVdWZ7/HfW4AIiCARsGUSBI0a4xQFNbcto0/EIWKi\nMWKimbRJbjQmmlyHPETspHPTSXdyY6vdoeO1nYga+ypq0CCJlcQBRBuMrSDggEwyD4IBanjvH+/G\nOpRF1amqc6h12N/P8+yn6uyzh3VW7dq/vdZe5xxzdwEAkKKqzi4AAAC7QkgBAJJFSAEAkkVIAQCS\nRUgBAJJFSAEAklX2kDKzsWY238wWmNm1zTx/sZm9lE1Pm9lHi10XALBns3K+T8rMqiQtkHSapOWS\nZku6yN3nFywzRtI8d99oZmMlTXL3McWsCwDYs5W7JXWCpIXuvtjdayXdJ2lc4QLuPtPdN2YPZ0oa\nVOy6AIA9W7lDapCkJQWPl6oxhJpzmaTH27kuAGAP07WzC7CDmZ0q6cuSPt7ZZQEApKHcIbVM0tCC\nx4OzeTvJBktMljTW3de3Zd1sfT6AEAAS5e7W3nXL3d03W9JIMxtmZntJukjSI4ULmNlQSf8p6RJ3\nf70t6xZy91anSy913XFH68vtadONN97Y6WVIeaJ+qB/qp3xTR5W1JeXu9WZ2haTpikC83d3nmdmE\neNonS5ooqZ+k28zMJNW6+wm7Wrcj5eneXdq2rUMvCQCwG5X9npS7PyHp0Cbzflnw++WSLi923Y4g\npACgsuTqEye6d5e2b+/sUux+1dXVnV2EpFE/LaN+Wkb9lFdZ38y7u5iZF/M6brhB6tVL+t73dkOh\nAAAyM3nCAyeSQncfAFQWQgoAkCxCCgCQrNyFVB4HTgBApcpVSO21Fy0pAKgkuQopuvsAoLIQUgCA\nZBFSAIBk5S6kGDgBAJUjVyHFwAkAqCy5Cim6+wCgshBSAIBkEVIAgGTlLqQYOAEAlSNXIcXACQCo\nLLkKKbr7AKCyEFIAgGQRUgCAZOUupBg4AQCVI1ch1aWL1NAg1dd3dkkAAMXIVUiZ0eUHAJUkVyEl\nEVIAUEkIKQBAsnIZUgyeAIDKkLuQ4lMnAKBy5C6k6O4DgMpBSAEAkkVIAQCSlcuQYuAEAFSG3IUU\nAycAoHLkLqTo7gOAykFIAQCSRUgBAJKVy5Bi4AQAVIbchRQDJwCgcuQupOjuA4DKQUgBAJKVy5Di\nnhQAVIZchhQtKQCoDLkLKQZOAEDlyF1I0ZICgMpBSAEAkpXLkGLgBABUhlyGFC0pAKgMuQspBk4A\nQOXIXUjRkgKAykFIAQCSlcuQYuAEAFSGsoeUmY01s/lmtsDMrm3m+UPN7Fkz22pmVzd57i0ze8nM\n5pjZ86UoDy0pAKgcXcu5cTOrknSLpNMkLZc028ymuvv8gsXWSrpS0nnNbKJBUrW7ry9VmRg4AQCV\no9wtqRMkLXT3xe5eK+k+SeMKF3D3Ne7+oqS6Zta3UpeRlhQAVI5yh9QgSUsKHi/N5hXLJT1pZrPN\n7PJSFIiQAoDKUdbuvhI42d1XmFl/RVjNc/enO7JBBk4AQOUod0gtkzS04PHgbF5R3H1F9nO1mT2k\n6D5sNqQmTZr0/u/V1dWqrq5udpvckwKA8qmpqVFNTU3JtmfuXrKNfWDjZl0kvaYYOLFC0vOSxrv7\nvGaWvVHSZnf/5+xxT0lV7r7ZzHpJmi7pJnef3sy6Xuzr2LBBGjZM2rixva8KAFAsM5O7W3vXL2tL\nyt3rzewKRcBUSbrd3eeZ2YR42ieb2UBJL0jqLanBzK6SdLik/pIeMjPPynlvcwHVVtyTAoDKUdaW\n1O7SlpZUQ4PUtatUXy9Zu7MdAFCMjrakcveJE1VVUpcuUl1zA94BAEnJXUhJDJ4AgEqRy5DivhQA\nVAZCCgCQLEIKAJCs3IYUnzoBAOnLZUgxcAIAKkMuQ4ruPgCoDIQUACBZhBQAIFm5DSkGTgBA+nIZ\nUgycAIDKkMuQorsPACoDIQUASBYhBQBIVm5DioETAJC+XIYUAycAoDLkMqTo7gOAykBIAQCSRUgB\nAJKV25Bi4AQApC+XIcXACQCoDLkMKbr7AKAyEFIAgGTlNqS4JwUA6cttSNGSAoD05TKkGDgBAJUh\nlyFFSwoAKgMhBQBIVm5DioETAJC+3IYULSkASF8uQ4qBEwBQGXIZUrSkAKAyEFIAgGTlNqQYOAEA\n6cttSNGSAoD05TKkGDgBAJUhtyFVWys1NHR2SQAALcllSJlFUHFfCgDSlsuQkhg8AQCVINchxX0p\nAEhbbkOKwRMAkL7chhQtKQBIHyEFAEhWrkOKgRMAkLZchxQtKQBIW1EhZWZ3FzOvkjBwAgDSV2xL\n6ojCB2bWRdJxpS/O7kNLCgDS12JImdn1ZvaupI+a2aZselfSKklTd0sJy4SQAoD0tRhS7v6/3b23\npJ+6+77Z1NvdP+Tu1++mMpYFAycAIH3Fdvc9Zma9JMnMvmBmPzOzYcWsaGZjzWy+mS0ws2ubef5Q\nM3vWzLaa2dVtWbcjaEkBQPqKDal/lfSemR0l6RpJr0u6q7WVzKxK0i2SzlDc1xpvZh9usthaSVdK\n+mk71m03Bk4AQPqKDak6d3dJ4yTd4u63SupdxHonSFro7ovdvVbSfdk23ufua9z9RUl1bV23I2hJ\nAUD6ig2pd83sekmXSPpt1srpVsR6gyQtKXi8NJtXjI6s2ypCCgDS17XI5T4n6WJJX3H3d8xsqJp0\nz3W2SZMmvf97dXW1qqurW1yegRMAUHo1NTWqqakp2faKCqksmO6VdLyZnSPpeXdv9Z6UpGWShhY8\nHpzNK0ab1i0MqWLsvbe0cWObVgEAtKJpI+Gmm27q0PaK/cSJCyU9L+mzki6UNMvMLihi1dmSRprZ\nMDPbS9JFkh5paVcdWLdNzj5buvdeqb6+VFsEAJRasd1935N0vLuvkiQz6y9phqQHW1rJ3evN7ApJ\n0xWBeLu7zzOzCfG0TzazgZJeUAzEaDCzqyQd7u6bm1u3Ha+xWSeeKA0YID3yiPTpT5dqqwCAUrIY\ntNfKQmYvu/uRBY+rJL1UOK8zmZkX8zqauv9+6dZbpT/9qQyFAgDIzOTu1vqSzSt2dN8TZvY7M/uS\nmX1J0m8lTWvvTlNx/vnSW29JL77Y2SUBADSnxZaUmY2UNNDdnzGzz0j6ePbUBkn3uvvru6GMrWpv\nS0qSfvpT6aWXpHvuKXGhAAAdbkm1FlKPSbre3V9uMv9IST9y90+1d8el1JGQ2rBBGjFCevllaVDJ\n3oUFAJDK3903sGlASVI276D27jQlfftKn/983JsCAKSltZbUQncftYvnFrn7yLKVrA060pKSpEWL\nYrTf4sVSz54lLBgA5Fy5W1IvmNnlzez0Mkl7zHCDkSOl0aNjtB8AIB2ttaQGSnpI0nY1htLHJO0l\n6dPu/k7ZS1iEjrakJOmxx6Qf/ECaNatEhQIAlHfgRMFOTpX0kezhK+7+h/busBxKEVL19dLw4dLD\nD0vHHluiggFAzu2WkEpdKUJKkn74Q2nJEumXvyxBoQAAhJRUupBasUI6/PAYQLHvviUoWAtqa6Xn\nn5e6dZP22SemAw+Uuhb7QVUAUAEIKZUupCTps5+VPvEJ6etfL8nmPmDFCmny5GitHXBAhNLmzfF+\nrQMPlB59VPqbvynPvpuzdm3s86GHpFdfle66K0Y6Asi37dul996TtmyRGhrifaRVTYba1dVJCxdK\n/ftL++/f/HY6GlJctzfxta9J3/52/LQWqrW2Vpo5U5o+PULl8sujVdScurpY7j/+Q5oxQ7roIunJ\nJ6Ujjmhcxl360Y+kMWNiEMeRu/hUxE2bpKlT475Z4fpt4R6fV/iTn0hPPy2dfnqEc/fu0rnnRlCd\neWb7tl3J3OOfslev0m532TLpuefik01eeikeT5wonXdeafeDyrNunfTv/y796lfSJZdI3/9+55TD\nPY7NP/4xpj//OS6ce/WKqaFB2rpVOu446WMfi7CaOVN64YUIqLVr4/x3+OFxkf+975WwV8jdK36K\nl1Ea9fXuo0a5P/NMPG5ocF+92n3WLPd77nH//vfdzzvPvW9f92OPdb/uOvfTTnM//HD3J59s3M57\n77k/9ZT7Nde4H3CA++jR7rfd5r5+fcv7nzLFvX9/98cfd9+61X3jRvdVq9xraty/+EX3Pn3czzzT\nff/93W+4Ifazw4oV7j/5ifsPfuD+5psf3HZtrfujj7qfdJL7yJHukye7b9my8zLPPus+cKD7XXe1\no/Ja0dDg/tprH9xnQ0PU98UXx2u8++54Le7xOm67zf3cc93Hj3dfuLD05XKP+h0zxr1nT/cf/9h9\n+/aObe/NN93/6Z9im/36RfknTnR/8EH3xx6LY2z8+Di2OtP27e5z57rX1bW+7MaN7q+8Uv4ypWLJ\nEvcHHnC/8Ub3RYtKs80NG9xffNH9N79xnzAhziOXXuo+Y4b7YYe5//CHpdlPc2prdz5fuMf57sEH\n3Y8+2v3gg6NM994br72plSvdp01zv+mmOA9Om+a+dm0819DgvmxZvI4zzohz4o7nsvNzu8/vdPc1\n42c/i8/069ZNWrky3uA7YoQ0apR0yCHSYYfF1cLAgbG8e4wKvOaaWGbz5rgq+chHopXyhS9IH/5w\n8ft/5pn48Nt166J10727NHiwdOmlsa0BA6Lb8Fvfig/HveaaaKnV1Eif+Ux8oeP998f+P/e5WPbZ\nZ+Me2KGHSt/5jnTBBVKXLs3v/9VXoyV10knRojv00Hgv2bZtccW0Zk28xr32apx6945P7+jbV+rT\np/EKrFu3eLP0lCkxbdokvfuudPLJ0tix0n77xad9rFsnXXFFbGvGDOmpp6QePWLU5RlnxLJvvin9\n/OdRBxMnxrpLlkR3w+rV0d0wYEBc2XXpIv31r9Eyqq2NrtX+/Ru7K9zjtcyfHy3Y+fNj4Mzo0VGO\nZcuiW3bMmOL+Zu7S3LnRyp06VVq6NFpKF1wgnXpqvK5C770Xr2HKlPg7jhghDRkSU//+Oy9fWxv3\nSV9/PVr3gwbF8dC7t/Taa9Ls2TFt3x51dfrpzd9TdY+6X7curoKnTpWeeCKW7dIlXvdXvhJ/Qyn+\n3osWxd/jscdind69439g4sT4HzCL7S5YEK3yefOiTAsWRF2ff7504YVxHDXXM7F9uzRnTuxr1Kj4\nO+2qB8M9up569Nj1sbvDtm1Rhn33jZ6OpvXfdLtvvx1/vx2t3dmz4/g58URp2DDp17+O+rn22th/\nW8ydK915Z/xPbtokHXxw/L2PO0667LJ4zVL8n55ySvTKfPe7Ma++Plora9Y0Hh99+7bcy9NUbW30\n4vzDP8T57JBDpOOPj/q+6644v02cKJ1zzge789qjvj7q6eGH46uQjjiCe1IlD6n6+jiw9t8/gmjv\nvYtbb+tW6b774kAaM6b03UbNmTYtTqbnnBOB1Lt3zN+2Tfrtb+Ne09ChETgnnij161fcdt95J9Zf\nsCBOOq+/HvXwoQ/FtM8+0Y25fXvsa8sWaf366CLYsCEeb9kSJ5O+faNsF18cIbBpk/T738cJcsUK\n6e/+TjrrrJ1PPHV1cWIePnznf5xVq6SbboovrNy+PYLqkEMinNaujedXrowTT8+eMXXtGvt59924\n79etW4Rb9+5xAvrqV6UJExpPZO5xQrn66limqqqxDDte77ZtcZzseK6+PsJl3LiYTjqpuO6O556L\nY2bJksZp7dooy377RVlXrIgT7cEHx8lp6dKYtm6Nv+3xx8dUVRV1+uyz0jHHxPG3bl38XXZMPXrE\ndo88Msr5qU/FtmfNkm6+WXr88bi4eeutqMchQ6S//dtY7vTTY/0pUyLY+/WL+qupiXKeckqse8gh\ncWGzebP04IPSAw9EPR5xROx7xzE4c2YE1MiR8XdatCjCe/jw2E9VVRwT27bFRciqVTFvx0XHkCHx\n9+zTJ4773r2jzC+8EGE5dGgcgytXxjE4aFCU96CDYt3ly2P/c+dG+Y4+WjrqqJiOOy5O4jvCYMmS\nuA0wZ06EVX19bHvz5li3b994bT16xPG/dm1MTz0Vjy+9NLrzCrfZnKVLox7HjYtgeuKJOLaHDIky\nvP12HJ/Dh8c0YkTUQffuO1807ni8fHl0648aJU2aFLcJ/vKXCOFXXon9fPKTbQu9Yt15Z1wQr1lD\nSJU8pFAa7nGC6dat9Svftlq9Ok5sbbkQ+Otf4yRQVxf/9Pvs0/Ly770XJ7iGhpjcG08A3bvHa3Jv\nfK5fv9L8s+9oMaxfH6E4ZEjzLYFt26IcTW3ZEq3xuro4cRZOLbUopDipzZvX2LLbVdDW18cF0KZN\n0VI86KCWW0Bz5kTwrVsXU11dBOvo0Tu3+jZujOV2XAQ0NMTxs6OF3KtX1Mny5XHSXr48Lj52tND7\n9Yt7Jkcd1fgRZ/X1cbwsWRIXPosXx8n+gAMizI85prFXpDW/+120EHr2jOOnV68oa+HF2X77NV7M\nHXNMhHxbWiiLF0t///dRP2eeGcFaaMOGqKM33ojehRUrdr54qq2Nx9u3x4XllVdKH/94s7squ1mz\npDFjCClCCgAStbu+9BAAgN2OkAIAJIuQAgAki5ACACSLkAIAJIuQAgAki5ACACSLkAIAJIuQAgAk\ni5ACACSLkAIAJIuQAgAki5ACACSLkAIAJIuQAgAki5ACACSLkAIAJIuQAgAki5ACACSLkAIAJIuQ\nAgAki5ACACSLkAIAJIuQAgAki5ACACSLkAIAJIuQAgAki5ACACSLkAIAJIuQAgAki5ACACSLkAIA\nJKvsIWVmY81svpktMLNrd7HMzWa20MzmmtkxBfPfMrOXzGyOmT1f7rICANLStZwbN7MqSbdIOk3S\nckmzzWyqu88vWOZMSQe7+ygzGy3pXyWNyZ5ukFTt7uvLWU4AQJrK3ZI6QdJCd1/s7rWS7pM0rsky\n4yTdJUnuPktSHzMbmD1nu6GMAIBElTsABklaUvB4aTavpWWWFSzjkp40s9lmdnnZSgkASFJZu/tK\n4GR3X2Fm/RVhNc/dn+7sQgEAdo9yh9QySUMLHg/O5jVdZkhzy7j7iuznajN7SNF92GxITZo06f3f\nq6urVV1d3bGSAwDarKamRjU1NSXbnrl7yTb2gY2bdZH0mmLgxApJz0sa7+7zCpY5S9I33P1sMxsj\n6f+4+xgz6ympyt03m1kvSdMl3eTu05vZj5fzdQAA2sfM5O7W3vXL2pJy93ozu0IRMFWSbnf3eWY2\nIZ72ye4+zczOMrNFkrZI+nK2+kBJD5mZZ+W8t7mAAgDsucraktpdaEkBQJo62pJieDcAIFmEFAAg\nWYQUACBZhBQAIFmEFAAgWYQUACBZhBQAIFmEFAAgWYQUACBZhBQAIFmEFAAgWYQUACBZhBQAIFmE\nFAAgWYQUACBZhBQAIFmEFAAgWYQUACBZhBQAIFmEFAAgWYQUACBZhBQAIFmEFAAgWYQUACBZhBQA\nIFmEFAAgWYQUACBZhBQAIFmEFAAgWYQUACBZhBQAIFmEFAAgWYQUACBZhBQAIFmEFAAgWYQUACBZ\nhBQAIFmEFAAgWYQUACBZhBQAIFmEFAAgWYQUACBZhBQAIFmEFAAgWYQUACBZhBQAIFmEFAAgWYQU\nACBZhBQAIFmEFAAgWWUPKTMba2bzzWyBmV27i2VuNrOFZjbXzI5uy7oAgD1XWUPKzKok3SLpDElH\nSBpvZh9ussyZkg5291GSJkj6t2LXRXFqamo6uwhJo35aRv20jPopr3K3pE6QtNDdF7t7raT7JI1r\nssw4SXdJkrvPktTHzAYWuS6KwD9Ry6ifllE/LaN+yqvcITVI0pKCx0uzecUsU8y6AIA9WIoDJ6yz\nCwAASIO5e/k2bjZG0iR3H5s9vk6Su/s/Fizzb5Kecvf7s8fzJZ0iaXhr6xZso3wvAgDQIe7e7sZH\n11IWpBmzJY00s2GSVki6SNL4Jss8Iukbku7PQm2Du680szVFrCupYxUAAEhXWUPK3evN7ApJ0xVd\ni7e7+zwzmxBP+2R3n2ZmZ5nZIklbJH25pXXLWV4AQFrK2t0HAEBHpDhwomi82XdnZjbYzP5gZq+Y\n2ctm9s1s/n5mNt3MXjOz35lZn84ua2cysyoz+y8zeyR7TP1kzKyPmf3GzOZlx9Fo6qeRmX3bzP7b\nzP5iZvea2V55rh8zu93MVprZXwrm7bI+zOz67IMb5pnZJ4vZR8WGFG/2bVadpKvd/QhJJ0r6RlYn\n10ma4e6HSvqDpOs7sYwpuErSqwWPqZ9Gv5A0zd0Pk3SUpPmifiRJZnagpCslHevuH1XcLhmvfNfP\nHYpzcKFm68PMDpd0oaTDJJ0p6TYza3U8QcWGlHiz7we4+zvuPjf7fbOkeZIGK+rlzmyxOyWd1zkl\n7HxmNljSWZJ+VTCb+pFkZvtK+h/ufockuXudu28U9VOoi6ReZtZVUg9Jy5Tj+nH3pyWtbzJ7V/Vx\nrqT7suPqLUkLFefxFlVySPFm3xaY2UGSjpY0U9JAd18pRZBJGtB5Jet0P5f0XUmFN2OpnzBc0hoz\nuyPrDp1sZj1F/UiS3H25pH+W9LYinDa6+wxRP00N2EV9ND1nL1MR5+xKDinsgpntI+lBSVdlLaqm\no2NyOVrGzM6WtDJrbbbUzZDL+lF0Xx0r6VZ3P1Yx2vY6cfxIksysr6KVMEzSgYoW1edF/bSmQ/VR\nySG1TNLQgseDs3m5lnVDPCjpbnefms1emX0eoszsAEmrOqt8nexkSeea2RuSfi3pE2Z2t6R3qB9J\n0RuxxN1fyB7/pyK0OH7C6ZLecPd17l4v6SFJJ4n6aWpX9bFM0pCC5Yo6Z1dySL3/RmEz20vxZt9H\nOrlMKfi/kl51918UzHtE0pey378oaWrTlfLA3W9w96HuPkJxvPzB3S+R9KioH2VdNEvM7JBs1mmS\nXhHHzw5vSxpjZntnN/xPUwzAyXv9mHbumdhVfTwi6aJsRORwSSMlPd/qxiv5fVJmNlYxGmnHm31/\n3MlF6lRmdrKkP0l6WdHEdkk3KA6EBxRXMYslXejuGzqrnCkws1MkXePu55pZP1E/kiQzO0oxqKSb\npDcUb67vIupHkmRmNyoucGolzZF0maTeymn9mNkUSdWSPiRppaQbJT0s6Tdqpj7M7HpJX1XU31Xu\nPr3VfVRySAEA9myV3N0HANjDEVIAgGQRUgCAZBFSAIBkEVIAgGQRUgCAZBFSQAmZWX32uXdzsp//\nq4TbHmZmL5dqe0AlKPfXxwN5syX73Lty4Y2NyBVaUkBpNfvBtWb2ppn9Y/ZleTPNbEQ2f5iZ/d7M\n5prZk9lXicjMBpjZ/8vmzzGzMdmmumafTv7fZvaEmXXPlv9m9iWFc7NPAQD2CIQUUFo9mnT3fbbg\nufXZl+Xdqvg4L0n6F0l3uPvRkqZkjyXpZkk12fxjFZ+hJ0mjJP2Lu39E0kZJ52fzr5V0dLb818r1\n4oDdjY9FAkrIzDa5+77NzH9T0qnu/lb2SfUr3L2/ma2WdIC712fzl7v7ADNbJWlQ9oWeO7YxTNL0\n7BtPld3v6uruPzKzaYqv1nhY0sPuvqX8rxYoP1pSwO7ju/i9LbYV/F6vxvvKZ0u6RdHqmm1m/G9j\nj8CBDJRWS1+m+Lns50WSnst+f0bS+Oz3L0j6c/b7DEn/U5LMrCr7aveWtj/U3f+o+JLCfSXt0/ai\nA+lhdB9QWnub2X8pwsQlPeHuN2TP7WdmL0naqsZg+qakO8zsO5JWK74aQ5K+JWmymX1VUp2kr0t6\nR820wLJuwnuyIDNJv3D3TWV5dcBuxj0pYDfI7kkd5+7rOrssQCWhuw/YPbgaBNqBlhQAIFm0pAAA\nySKkAADJIqQAAMkipAAAySKkAADJIqQAAMn6/zPIwSRlwnsiAAAAAElFTkSuQmCC\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAakAAAEbCAYAAABgLnslAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHENJREFUeJzt3XmYHHW97/H3NxskQCCsBgJhFVHZgkICeBjFJYCKK5v6\nKB4Rr6Jw0XsRl0PO+cPr8uCKek6OyFGvCi4XQQ9iQBkVEAHZISGRsIUdskDCNkm+949fxzTDZDKZ\n6c5Up96v56lnpqurqn/16+r61Leql8hMJEmqohHD3QBJktbEkJIkVZYhJUmqLENKklRZhpQkqbIM\nKUlSZbU9pCJiekTMiYi5EXFGH/efEBE3N4YrI2Kfgc4rSdqwRTs/JxURI4C5wOHAg8B1wHGZOadp\nmqnA7MxcEhHTgRmZOXUg80qSNmztrqQOBOZl5r2Z2QOcDxzdPEFmXpOZSxo3rwF2GOi8kqQNW7tD\nagfg/qbbC1gdQn35EPDbQc4rSdrAjBruBqwSEa8FTgQOHe62SJKqod0h9QCwU9PtSY1xL9B4s8RM\nYHpmLlqXeRvz+wWEklRRmRmDnbfdp/uuA3aPiMkRMQY4Dri4eYKI2An4JfC+zLxrXeZtlpkDGnbd\nNZk3b2DTbijDWWedNextqPJg/9g/9k/7hqFqayWVmSsi4hRgFiUQz83M2RFxcrk7ZwKfB7YEvhMR\nAfRk5oFrmneobRozBnp6hroUSdL60PZrUpl5KbBnr3H/0fT/ScBJA513qEaPhuefb+USJUntUrtv\nnKhjJdXV1TXcTag0+6d/9k//7J/2auuHedeXiMiBrse0aXD22XDwwW1ulCSJiCAr/MaJyqljJSVJ\nnap2IeU1KUnqHLULKSspSeoctQspKylJ6hy1CykrKUnqHLULKSspSeoctQspKylJ6hy1CykrKUnq\nHLULKSspSeoctQspKylJ6hy1CykrKUnqHLULKSspSeoctQspKylJ6hy1CykrKUnqHLULKSspSeoc\ntQspKylJ6hy1CykrKUnqHLULqdGjDSlJ6hS1C6kxYzzdJ0mdonYhZSUlSZ2jdiFlJSVJnaN2IWUl\nJUmdo5YhZSUlSZ2hdiHlW9AlqXPULqSspCSpc9QupKykJKlz1C6krKQkqXPULqSspCSpc9QupKyk\nJKlz1C6krKQkqXPULqSspCSpc9QupKykJKlz1C6krKQkqXPULqSspCSpc9QupKykJKlz1DKkenog\nc7hbIklam9qF1IgRMHIkLF8+3C2RJK1N7UIKvC4lSZ2iliHlDx9KUmeoZUj5E/KS1BlqGVJWUpLU\nGWoZUlZSktQZahlSVlKS1BlqGVJWUpLUGWoZUlZSktQZahlSVlKS1BlqGVJWUpLUGWoZUlZSktQZ\n2h5SETE9IuZExNyIOKOP+/eMiKsj4tmIOL3XffdExM0RcWNEXNuqNllJSVJnGNXOhUfECOAc4HDg\nQeC6iLgoM+c0TfYE8HHgbX0sYiXQlZmLWtkuKylJ6gztrqQOBOZl5r2Z2QOcDxzdPEFmPp6ZfwP6\n+l7yaEcbraQkqTO0O6R2AO5vur2gMW6gErgsIq6LiJNa1Sh/+FCSOkNbT/e1wCGZ+VBEbEMJq9mZ\neeVQF+pPdUhSZ2h3SD0A7NR0e1Jj3IBk5kONv49FxIWU04d9htSMGTP+8X9XVxddXV1rXK6VlCS1\nR3d3N93d3S1bXmQbf0c9IkYCd1LeOPEQcC1wfGbO7mPas4ClmXl24/Y4YERmLo2ITYBZwL9m5qw+\n5s11WY+TT4YpU8pfSVL7RASZGYOdv62VVGauiIhTKAEzAjg3M2dHxMnl7pwZEdsB1wObASsj4lTg\n5cA2wIURkY12/rivgBoMKylJ6gxtvyaVmZcCe/Ya9x9N/z8C7NjHrEuB/drRJq9JSVJnqOU3TlhJ\nSVJnqGVIWUlJUmeoZUj5YV5J6gy1DCm/FkmSOkMtQ8pKSpI6Qy1DykpKkjpDLUPKSkqSOkMtQ8pK\nSpI6Qy1DykpKkjpDLUPKSkqSOkMtQ8pKSpI6Qy1DykpKkjpDLUPKSkqSOkMtQ8pKSpI6Qy1DykpK\nkjpDLUPKSkqSOkMtQ8pKSpI6Qy1DykpKkjpDLUPKSkqSOkMtQ8pKSpI6Qy1DykpKkjpDLUPKSkqS\nOkMtQ8pKSpI6gyElSaqsWoaUp/skqTPUMqRGjYLlyyFzuFsiSepPLUMqwlN+ktQJahlSYEhJUieo\nbUh5XUqSqq+2IWUlJUnVV9uQspKSpOqrbUhZSUlS9dU2pKykJKn6ahtSVlKSVH21DSkrKUmqvtqG\nlJWUJFVfbUPKSkqSqq+2IWUlJUnVV9uQspKSpOqrbUhZSUlS9dU2pKykJKn6ahtSVlKSVH21DSkr\nKUmqvtqGlJWUJFVfbUNqzBhDSpKqrrYhNXq0p/skqeoGFFIR8aOBjOskVlKSVH0DraRe0XwjIkYC\n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\nGJcuLdctt9iitP/pp8v6//rX5aAgs1R4W29dDlZuvRWmTy9V6V/+Aj/9aanUTzut7NgvvrjMe9dd\npT+nTCkHBueeW9r55S/DYYetbseKFaXPmk8BZ5Z1veGGEuzjxsEmm5Rhp53KV331rjYzS9suu6wM\n115btuFXvapszzvvXNb5uefK3wkTyrY1cWJZ1vXXl23hmmtK2IwbV/p/6tRyf09POYtw9dUlWD78\nYfj4x8vz881vlnkOOqj8fetby/2bblqq/ksuKe056KDyvL/znaUvP/Wp8nx/6Uvw5JPwX/9VXo/H\nHlue30MPLQdtqzz/fOmXp58u7enpKQcDd921erjpJnjiCdh//3IQtNtupR8mT4Zf/AK+8x343OfK\njrr39rxyJdx3H9x2W3lNrFrmokWlL6ZPL23q3fdXXQVnnlk+7vKOd5Q2XHNNWf8jjijXxg87rGyP\nmaXPZs0q67H//mUbWZczKz09Aw/yefPKgfHvflfW+Yorymvxe98rr6l1de+95SDzjDMMqZaHVNUs\nWlSCbpddyk5nk03K+CVLygtl4cJy5Nf8Im2l224rldeBB5bwa97on3wSfvOb0rZp0/pfzhNPlCr0\nvvvKizyz7OD233914O++e1mPdbkWd++95cW/777wspetfoHffnvZ6f3xj/DUU2XH9dxzZae3ali2\nrPwdPbq0pXmnklnuf/bZEkybblr6fOnS0sZnnik79re8pexgxo6Fxx8vQ0Q5WNh449XLmz8fPv95\n+PnPy3q++c1l3mnTXrgTXLmyBNrnPlcOQJ57ruzUFi8uy91663JAMH58OTgYMaL03aRJZWe2bFlZ\n3/vuK8PEiSVkFi8u28oTT5QAe8MbyjBtWqkems8MbLRRqYZGjy7b34MPluGZZ8qO8qCDSihNm1aW\ntSbz58NXv1pCZeedS0i/5z1lG378cfjhD8tOcPny0odHHlmW++c/w89+VkI8ooTU6ae/sD/nzSt9\n2d1ddvS77FKep/nzywHdxInlOR09uqzL+PEliFYNe+9dDgrWtK3deSd89KMl/PfYo7RxxYrSf7Nn\nl+fmFa8ov0W3apmbbVbac+mlJWB22231geszz5SzDDNmwPvet/o5X1WNXnRR2ak/+CAcckg5EBg1\nCt70pvJYq6rt0aPLQe748S8eNtustHf27DI8/ng5cNp119I/o0fDAw+U5/ihh8o6jRy5+rLEaaeV\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -469,7 +423,7 @@ }, { "cell_type": "code", - "execution_count": 43, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -478,15 +432,15 @@ "name": "stdout", "output_type": "stream", "text": [ - "Intercept: 0.24\n", + "Intercept: 0.23\n", "Slope: 0.81\n" ] }, { "data": { - "image/png": "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\nRU5ErkJggg==\n", + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAWoAAAEACAYAAACatzzfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGK1JREFUeJzt3X90VPWZx/H3g5A22kU9bk61WCeoZdMWouDPFm0nW6ii\nrVqLp7VWz/aHFRXEVi3gnmq6Vs/2uKtiEVfWLIuujVRUqq60YmVUFEo0QJBfat1BqIhjLSoS5dez\nf3xHq/zI3Elmcu8kn9c5OUzCzc1jwA9Pvvd7n2vujoiIJFefuAsQEZGOKahFRBJOQS0iknAKahGR\nhFNQi4gknIJaRCThIgW1me1rZveY2UozW25mx5W7MBERCfpGPG4y8LC7n2VmfYG9y1iTiIh8iBW6\n4cXM+gOL3f2w7ilJREQ+LMrSx0DgdTObbmatZjbNzKrLXZiIiARRgrovMAy4xd2HAZuBiWWtSkRE\nPhBljXodsNbdn8m/PwuYsPNBZqahISIiRXJ3K3RMwY7a3TcAa81sUP5DXwFW7OHYiny7+uqrY69B\n9cdfh+qvzLdKrj+qqLs+LgHuMrN+wEvA9yJ/BRER6ZJIQe3uS4FjylyLiIjshu5MBNLpdNwldInq\nj5fqj1el1x9FwX3UkU9k5qU6l4hIb2BmeCkuJoqISLwU1CIiCaegFhFJOAW1iEjCKahFRBJOQS0i\nknAKahGRhFNQi4gknIJaRCThFNQiIgmnoBYRSTgFtYhIwimoRUQSTkEtIpJwCmoRkYRTUIuIJJyC\nWkQk4RTUIiIJp6AWEUk4BbWISMIpqEVEEk5BLSKScApqEZGEU1CLiCScglpEJOEU1CJSubZsibuC\nbhEpqM0sa2ZLzWyxmS0qd1EiIh1yh+nTYdAg2Lgx7mrKrm/E43YAaXf/azmLEREp6Pnn4YILYNMm\nmD0b9tsv7orKLurShxVxrIhI6W3ZAtdeC1/8IpxxBixcSG7AAFpaWsjlcnFXV1ZRw9eBuWbWYmbn\nl7MgEZFdPP00DBsGCxZAayuMH0/zb2aRStUxcuQYUqk6mptnxl1l2Zi7Fz7I7CB3X29mNcBcYKy7\nz9/pGI9yLhGRyN58EyZNCksckyfD6NFgRi6XI5Wqo719HlAPtFFd3cCaNauoqamJu+rIzAx3t0LH\nRVqjdvf1+V9zZnY/cCwwf+fjGhsbP3idTqdJp9MRyxUR2cn998O4cXDqqbB8Oey//we/lc1mqaqq\npb29Pv+Revr1S5HNZhMd1JlMhkwmU/TnFeyozWxvoI+7bzKzfYBHgJ+7+yM7HaeOWkS6bt06GDsW\nVq+GadPgxBN3OaS3ddRR1qg/Ccw3s8XAQuDBnUNaRKTLtm+HKVNg6NDwtmTJbkMaoKamhqamqVRX\nN9C//zCqqxtoappaUSFdjEhr1JFOpI5aRDpr2TI4/3yoqgpddF1dpE/L5XJks1lqa2srMqSjdtQK\nahGJT3s7XHMN3H47XHcdfP/70Kf37AQu6cVEEZGS+8Mfwo0rRx8NbW1w4IFxV5RYCmoR6V6vvw6X\nXQaPPw633BJ2dUiHes/PGCISL3f4n/+BwYPhgAPguecU0hGpoxaR8vvTn+DCCyGXg4ceCssdEpk6\nahEpn61b4Ze/hOOOg69+FVpaFNKdoI5aRMpj0aKw5e6gg0JADxwYd0UVSx21iJTW22/D+PFw+ukw\nYQLMmaOQ7iIFtYiUzoMPwuc/H8L6uefgO98BK7hNWArQ0oeIdN369XDJJbB0KcyYAQ0NcVfUo6ij\nFpHO27EDbrsN6uvDbd9tbQrpMlBHLSKds2IF/OhHIaznzQv7o6Us1FGLSHHefReuugq+/GU45xyY\nP18hXWbqqEUkuscfD1304MFhDOmAAXFX1CsoqEWksDfegJ/+FH7/e/jVr8LDZaXbaOlDRPbMHe6+\nO3TQ1dXhkVgK6W6njlpEdi+bhYsugrVr4b774Pjj466o11JHLSIftW0b3HBDmMnxpS9Ba6tCOmbq\nqEXkb1pbw3yO/feHhQvh8MPjrkhQRy0iAO+8A5dfDqNGhTkdc+cqpBNEQS3S282ZEy4WvvZamM9x\n3nmaz5EwWvoQ6a02bIBLLw3jSKdNg5Ej465I9kAdtUhv4w5NTTBkCKRSsGyZQjrh1FGL9CarV4cn\nf2/eHNahjzgi7ookAnXUIr3Bli1wzTVwwglw5pmwYIFCuoKooxbp6Z56KsznOOywsP3u05+OuyIp\nkoJapKfauBEmTYIHHoDJk+Gb39RujgqlpQ+RnsYd7r03PBILwnyO0aMV0hVMHbVIT7J2LVx8Mbz4\nIsycGdakpeJF7qjNrI+ZtZrZA+UsSEQ6Yft2uPlmGDoUjjkGFi9WSPcgxXTU44EVQP8y1SLSI+Vy\nObLZLLW1tdTU1JT+C7S1hfkcH/94uHD4D/9Q+q8hsYrUUZvZwcApwO3lLUekZ2lunkkqVcfIkWNI\npepobp5ZupNv3gwTJ8KIEWFXx7x5Cukeyty98EFm9wDXAvsCl7n7abs5xqOcS6S3yOVypFJ1tLfP\nA+qBNqqrG1izZlXXO+u5c2HMGDj2WLjpJvjkJ0tRsnQzM8PdC17lLbj0YWanAhvcfYmZpYE9nrSx\nsfGD1+l0mnQ6HaVWkR4pm81SVVVLe3t9/iP19OuXIpvNdj6oczm47DJ44gmYOhVOOaVk9Ur5ZTIZ\nMplM0Z9XsKM2s+uA7wLbgGrg74D73P28nY5TRy3yISXtqN3hzjvDcwvPOQd+/nP4xCfKUbZ0o6gd\ndaSljw+d9Mto6UMksubmmfzgBxfRr1+KrVvX0NQ0lbPP/lZxJ3nxxbDM8cYb8J//CUcdVZ5ipdsp\nqEUSotO7PrZuhX//d/i3fwt3GI4fD31160NPUpagLvAFFdQipfLHP4YtdwMGwK23Qm1t3BVJGZTs\nYqKIdKO33oJ//meYNQtuvBG+9S3d+i2a9SGSGL/9bZjP0d4e5nN8+9sKaQHUUYvE75VXYNy48LzC\nO+8EbWuVnaijFonLjh1h/fmII0InvXSpQlp2Sx21SByWLw+3fQNkMn8bSSqyG+qoRbrTu+/Cz34W\nOudzz4Unn1RIS0HqqEW6SyYTuuj6+rDM8alPxV2RVAgFtUi5vfEGXHFFGKQ0ZQqctsv9YiId0tKH\nSLm4w69/HZY29tknrEsrpKUT1FGLlMP//R9ceCGsXw+zZ8Nxx8VdkVQwddQipbRtW5jNccwx0NAA\nzzyjkJYuU0ctUirPPBMuFh5wQJjVcdhhcVckPYQ6apGu2rQJfvIT+NrX4Mc/hkceUUhLSSmoRbri\n4Ydh8GD4y1/CLeDnnqv5HFJyWvoQ6YxXX4VLLw3LHbffHh4wK1Im6qhFirFjRwjm+no49FBYtkwh\nLWWnjlokqlWr4IILwm3gjz4awlqkG6ijFinkvffgX/4FTjwRzjoLnn5aIS3dSh21SEeefDJsuRs0\nCFpb4dOfjrsi6YUU1CK7s3EjTJgA//u/cPPN8I1vaDeHxEZLHyIf5g733BPmc+y1V5jPceaZCmmJ\nlTpqkfe9/DJcfDG89BL85jcwfHjcFYkA6qhFYPt2mDwZhg2D44+HxYsV0pIo6qild1uyJFws3Gef\nsJtj0KC4KxLZhTpq6Z02bw4XC086CcaMgcceU0hLYimopfeZOxeGDIF168Kdhd//vi4WSqJp6UN6\nj1wuTLmbPx9uvRVOPjnuikQiUUctPZ87zJgRptwdeGCYcqeQlgpSsKM2s48BTwBV+eNnufvPy12Y\nSEm88EJYg37zTZgzJ+zsEKkwBTtqd38PaHD3ocCRwCgzO7bslYl0xdatcN118IUvhIH+Cxd+ENK5\nXI6WlhZyuVzMRYpEE2npw903519+jNBVe9kqEumq90P5qafg2WfDU1f6hh8em5tnkkrVMXLkGFKp\nOpqbZ8ZcrEhh5l44c82sD/AscBhwi7tP2s0xHuVcImXz1ltw5ZVw331w001h0t2HdnPkcjlSqTra\n2+cB9UAb1dUNrFmzipqamtjKlt7LzHD3gluOIu36cPcdwFAz6w/MNrPPufuKnY9rbGz84HU6nSad\nTkcuWKRLZs+GceNg1Kgwn2P//Xc5JJvNUlVVS3v7+yNK6+nXL0U2m1VQS7fIZDJkMpmiPy9SR/2R\nTzD7GfCOu9+w08fVUUv3+/OfQ0CvWAHTpsGXvrTHQ9VRS9JE7agLrlGb2d+b2b7519XASGBV10sU\n6YIdO2DqVDjyyDDEf+nSDkMaoKamhqamqVRXN9C//zCqqxtoapqqkJbEK9hRm9kQYAYh1PsAM939\n2t0cp45ausdzz4X5HHvtBbfdBp/7XFGfnsvlyGaz1NbWKqQlVlE76qKXPjr4ggpqKa/2dvjFL8IS\nx7XXwg9/CH10z5ZUrpJeTBSJ3WOPhQfLDh0KbW1w0EFxVyTSbRTUkmx/+QtcfnkI6ilT4Otfj7si\nkW6nnxslmdzhrrvCI7H23TesSyukpZdSRy3J89JLcOGFsGEDPPggHHNM3BWJxEodtSTHtm1w/fVw\n7LEwYgS0tCikRVBHLUnR0hK23NXUwKJFcOihcVckkhjqqCVemzaFoUlf/3q4aPj73yukRXaioJb4\nPPRQuFi4cWOYz3HOOXoklshuaOlDut/69TB+PCxeDNOnwz/+Y9wViSSaOmrpPjt2hLsKjzgCPvOZ\ncOOKQlqkIHXU0j1WrgwXC7dtgz/8ITwFXEQiUUct5fXee9DYGCbbnX12eAK4QlqkKOqopXyeeCJ0\n0Z/9LCxZAgMGxF2RSEVSUEvp/fWvMGFCeOr3zTfDN74Rd0UiFU1LH1I67jBzZthyV1UV5nMopEW6\nTB21lMaaNXDRRfDyy3DvvfCFL8RdkUiPoY5aumbbNrjxRjjqKBg+HJ59ViEtUmLqqKXzFi+G88+H\n/v1hwYKwN1pESk4dtRTvnXfgiivg5JNh7NiwL1ohLVI2Cmopzu9+B4MHh9vAly2Df/onzecQKTMt\nfUg0r70WptwtWAD/8R9w0klxVyTSa6ijlo65h8FJQ4bAwQeHLXcKaZFupY5a9uz558OTvzdtCnOi\njzwy7opEeiV11LKrLVvgF7+AL34RzjgDFi5USIvESB21fNTTT4ctdwMHQmsrHHJI3BWJ9HoKagne\nfBMmTYLZs2HyZBg9Wrs5RBJCSx+9nTvcd1+Yz7F9e3gk1llnKaRFEkQddW+2bl24YWX1amhuhhNP\njLsiEdmNgh21mR1sZo+Z2XIzW2Zml3RHYVJG27fDlCkwdGh4W7JEIS2SYFE66m3AT9x9iZl9AnjW\nzB5x91Vlrk06KZfLkc1mqa2tpaam5qO/2dYWhvlXVcGTT0JdXTxFikhkBTtqd3/V3ZfkX28CVgJ6\nVEdCNTfPJJWqY+TIMaRSdTQ3zwy/0d4eLhaOGAE//CFkMgppkQph7h79YLNaIAMMzof2h3/PizmX\nlF4ulyOVqqO9fR5QD7RRXd3AK3fcxn4TJ8LRR8NNN8GBB8ZdqogAZoa7F7xyH/liYn7ZYxYwfueQ\nfl9jY+MHr9PpNOl0OurppQSy2SxVVbW0t9cDcACf4uZtUD1uHNx+O5x6aswVivRumUyGTCZT9OdF\n6qjNrC/wEDDH3Sfv4Rh11DH7W0f9GN+ljev5Mb/ZaxNnv7CSmoED4y5PRHZS6o76v4AVewppSYaa\nmhpmXncVe192NDX0Y3S/flw8fYZCWqTCFeyozWw48ASwDPD825Xu/rudjlNHHaetW+GGG+D669k0\ndiwrTzqJ2sMP33XXh4gkRtSOuqiLiQW+oII6LosWhfkcBx0Et94a5nSISOJFDWrdQl7J3n4bxo+H\n00+HCRNgzhyFtEgPpKCuVA88EOZzvP12GOb/ne9oPodID6VZH5Vm/XoYNy7cYThjBjQ0xF2RiJSZ\nOupKsWNHeFZhfT189rMhqBXSIr2COupKsHx5mM/hDvPmhaeAi0ivoY46yd59F666CtJp+O53Yf58\nhbRIL6SOOqkefzx00YMHhzGkAzQHS6S3UlAnzRtvwE9/Gp76/atfhYfLikivpqWPpHCHu+8OW+6q\nq8O6tEJaRFBHnQzZLFx0EaxdC/ffD8cfH3dFIpIg6qjjtG1bmM9x9NHhUVitrQppEdmFOuq4tLaG\n+Rz77QcLFsBnPhN3RSKSUOqou9s778Dll8OoUWFOx6OPKqRFpEMK6u40Z07Ybvfaa2E+x3nnaT6H\niBSkpY/usGEDXHppGEc6bRqMHBl3RSJSQdRRl5M7NDXBkCGQSsGyZQppESmaOupyWb0aLrgANm+G\nuXPhiCPirkhEKpQ66lLbsgWuuQaGD4czzww7OhTSItIF6qhL6amnwnyOQw8N2+8OOSTuikSkB1BQ\nl8LGjTBpUnjqyuTJ8M1vajeHiJSMlj66wh3uvTfM53AP8zlGj1ZIi0hJqaPurLVrYexYeOEFmDkT\nTjgh7opEpIdSR12s7dvD+NGhQ+Goo2DxYoW0iJSVOupitLWF+Rwf/3h42kpdXdwViUgvoI46ivZ2\nmDgRRowIuzrmzVNIi0i3UVAX8uij4c7CNWtCR/2DH0AffdtEpPto6WNPcjm47DJ44gmYOhVOOSXu\nikSkl1JruDN3uOOOMOWupiZMuVNIi0iMCnbUZtYEfA3Y4O715S8pRi++CGPGhAfMPvxw2NUhIhKz\nKB31dOCkchcSq61b4V//NTwGa9SoMI5UIS0iCVGwo3b3+WaW6o5i4vD68uXsfcYZ9D3kEKpaWmDg\nwLhLEhH5iF69Rt3cPJPU0Sdy7ivOfk8vpnnhorhLEhHZhbl74YNCR/1gR2vUZuZRzpUUuVyOVKqO\n9vZ5QD3QRnV1A2vWrKKmpibu8kSkFzAz3L3gcKCSbs9rbGz84HU6nSadTpfy9CWVzWapqqqlvf39\nf3vq6dcvRTabVVCLSFlkMhkymUzRnxe1o64ldNRDOjhGHbWISBGidtQF16jN7NfA08AgM3vZzL5X\nigLjVlNTQ1PTVKqrG+jffxjV1Q00NU1VSItI4kTqqCOdqMI66vflcjmy2Sy1tbUKaRHpVlE76l4f\n1CIicSnZ0oeIiMRLQS0iknAKahGRhFNQi4gknIJaRCThFNQiIgmnoBYRSTgFtYhIwimoRUQSTkEt\nIpJwCmoRkYRTUIuIJJyCWkQk4RTUIiIJp6AWEUk4BbWISMIpqEVEEk5BLSKScApqEZGEU1CLiCSc\nglpEJOEU1CIiCaegFhFJOAW1iEjCKahFRBJOQS0iknAKahGRhIsU1GZ2spmtMrPnzWxCuYsSEZG/\nKRjUZtYHmAKcBHweONvM6spdWHfKZDJxl9Alqj9eqj9elV5/FFE66mOBF9x9jbtvBe4GTi9vWd2r\n0v+gVX+8VH+8Kr3+KKIE9QBg7YfeX5f/mIiIdANdTBQRSThz944PMDseaHT3k/PvTwTc3X+503Ed\nn0hERHbh7lbomChBvRewGvgKsB5YBJzt7itLUaSIiHSsb6ED3H27mY0FHiEslTQppEVEuk/BjlpE\nROLV5YuJlXwzjJk1mdkGM2uLu5bOMLODzewxM1tuZsvM7JK4ayqGmX3MzP5oZovz9V8dd03FMrM+\nZtZqZg/EXUuxzCxrZkvz3/9FcddTLDPb18zuMbOV+f8Hjou7pqjMbFD++96a//XNjv7/7VJHnb8Z\n5nnC+vUrQAvwbXdf1emTdiMzOwHYBNzh7vVx11MsMzsQONDdl5jZJ4BngdMr5fsPYGZ7u/vm/LWQ\np4BL3L1iQsPMfgwcBfR399PirqcYZvYScJS7/zXuWjrDzP4beNzdp5tZX2Bvd38r5rKKls/RdcBx\n7r52d8d0taOu6Jth3H0+UJF/SQHc/VV3X5J/vQlYSYXtcXf3zfmXHyNcM6mYtTgzOxg4Bbg97lo6\nyajQLbpm1h840d2nA7j7tkoM6bwRwJ/2FNLQ9T8k3QyTEGZWCxwJ/DHeSoqTXzpYDLwKzHX3lrhr\nKsKNwBVU0D8uO3Fgrpm1mNn5cRdTpIHA62Y2Pb98MM3MquMuqpO+BTR3dEBF/msqH5Vf9pgFjM93\n1hXD3Xe4+1DgYOA4M/tc3DVFYWanAhvyP9FY/q3SDHf3YYSfCi7OLwVWir7AMOCW/H/DZmBivCUV\nz8z6AacB93R0XFeD+s/AIR96/+D8x6Sb5NfmZgF3uvtv466ns/I/ts4DTo67loiGA6fl13mbgQYz\nuyPmmori7uvzv+aA+wlLmZViHbDW3Z/Jvz+LENyVZhTwbP7PYI+6GtQtwOFmljKzKuDbQKVd/a7U\nbuh9/wWscPfJcRdSLDP7ezPbN/+6GhgJVMSFUHe/0t0PcfdDCX/vH3P38+KuKyoz2zv/kxhmtg/w\nVeC5eKuKzt03AGvNbFD+Q18BVsRYUmedTYFlD4hww0tHKv1mGDP7NZAGDjCzl4Gr3784UQnMbDhw\nDrAsv87rwJXu/rt4K4vsIGBG/qp3H2Cmuz8cc029xSeB+/OjH/oCd7n7IzHXVKxLgLvyywcvAd+L\nuZ6imNnehAuJPyp4rG54ERFJNl1MFBFJOAW1iEjCKahFRBJOQS0iknAKahGRhFNQi4gknIJaRCTh\nFNQiIgn3/zzXlFI9+TjLAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -498,18 +452,17 @@ "import matplotlib.pyplot as plt\n", "from mlxtend.regressor import LinearRegression\n", "\n", - "X = np.array([ 1, 2.1, 3.6, 4.2, 6])[:, np.newaxis]\n", - "y = np.array([ 1, 2, 3, 4, 5])\n", + "X = np.array([ 1.0, 2.1, 3.6, 4.2, 6])[:, np.newaxis]\n", + "y = np.array([ 1.0, 2.0, 3.0, 4.0, 5.0])\n", "\n", "sgd_lr = LinearRegression(eta=0.01, \n", " epochs=100, \n", " random_seed=0, \n", - " minibatches=3,\n", - " zero_init_weight=True)\n", + " minibatches=3)\n", "sgd_lr.fit(X, y)\n", "\n", - "print('Intercept: %.2f' % sgd_lr.w_[0])\n", - "print('Slope: %.2f' % sgd_lr.w_[1])\n", + "print('Intercept: %.2f' % sgd_lr.b_)\n", + "print('Slope: %.2f' % sgd_lr.w_)\n", "\n", "def lin_regplot(X, y, model):\n", " plt.scatter(X, y, c='blue')\n", @@ -522,16 +475,16 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 20, "metadata": { "collapsed": false }, "outputs": [ { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAakAAAEbCAYAAABgLnslAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAG+hJREFUeJzt3XuUHWWZ7/HvE5IAzU3UEAZCwtUIKBcRjKDLRkQBFbwc\nEbyMojIclYsXRkDXCMysNcoa55xRwVFGDqJHhDMggoqICBGjXAIGvCUQBAOEkEgIkRBy6e7n/PHu\nNk3T6d5Jeqffzv5+1qrVu2pX1X7r7dr1q/et2ntHZiJJUo3GjHQBJElaG0NKklQtQ0qSVC1DSpJU\nLUNKklQtQ0qSVK2Wh1REHBURcyLi/og4a4Dn3xMR9zaGGRGxX7PLSpI2bdHKz0lFxBjgfuAI4DFg\nJnBCZs7pM880YHZmLo2Io4DzMnNaM8tKkjZtrW5JHQLMzcx5mbkauAI4ru8MmXl7Zi5tjN4O7Nzs\nspKkTVurQ2pn4JE+44+yJoQG8hHgJ+u5rCRpEzN2pAvQKyIOB04CXjPSZZEk1aHVITUfmNxnfFJj\n2nM0bpa4GDgqM5esy7KN5f0CQkmqVGbG+i7b6u6+mcCeETElIsYDJwDX9Z0hIiYDVwPvz8w/rcuy\nfWXmoMOvfpVMmzb4PJvqcO655454GWoerB/rx/pp3bChWtqSyszuiDgVuJESiJdk5uyIOKU8nRcD\n/wS8EPhaRASwOjMPWduy61uWCBiG+pIkbUQtvyaVmTcAU/tN+0afxycDJze77PoaM8aQkqTRpm2+\ncSICenpGuhQjo7Ozc6SLUDXrZ3DWz+Csn9Zq6Yd5N5aIyKG2Y+ZM+OhH4a67NlKhJElEBFnxjRPV\n8JqUJI0+bRNSXpOSpNGnbUKqna9JSdJo1VYhZUtKkkYXQ0qSVK22CSmvSUnS6NM2IeU1KUkafdoq\npGxJSdLo0jYhZXefJI0+bRNSdvdJ0ujTViFlS0qSRhdDSpJUrbYJKa9JSdLo0zYh5TUpSRp92iqk\nbElJ0uhiSEmSqtU2ITVmjN19kjTatE1IjR8Pq1aNdCkkSeuibUJqyy3h2WdHuhSSpHVhSEmSqtU2\nITV+PHR1QXf3SJdEktSstgmpCFtTkjTatE1IgSElSaONISVJqpYhJUmqliElSapW24XU8uUjXQpJ\nUrPaLqRsSUnS6NFWIdXRYUhJ0mjSViFlS0qSRhdDSpJULUNKklQtQ0qSVC1DSpJULUNKklQtQ0qS\nVC1DSpJULUNKklQtQ0qSVC1DSpJULUNKklQtQ0qSVC1DSpJULUNKklQtQ0qSVC1DSpJULUNKklQt\nQ0qSVK2Wh1REHBURcyLi/og4a4Dnp0bEryNiRUR8qt9zf46IeyNiVkTcuaFl2WILWLkSMjd0TZKk\njWFsK1ceEWOAC4EjgMeAmRFxbWbO6TPbYuA04G0DrKIH6MzMJcNRnjFjYPx4WLGitKokSXVrdUvq\nEGBuZs7LzNXAFcBxfWfIzCcy826ga4DlY7jLaJefJI0erQ6pnYFH+ow/2pjWrAR+FhEzI+Lk4SjQ\nllvC8uXDsSZJUqu1tLtvGByWmQsiYgIlrGZn5owNWWFHhy0pSRotWh1S84HJfcYnNaY1JTMXNP7+\nJSKuoXQfDhhS55133t8ed3Z20tnZOeA67e6TpNaZPn0606dPH7b1RbbwVreI2Ay4j3LjxALgTuDE\nzJw9wLznAssy898b4x3AmMxcFhFbATcC52fmjQMsm81uxyGHwFe/Cq961fpulSSpWRFBZsb6Lt/S\nllRmdkfEqZSAGQNckpmzI+KU8nReHBETgbuAbYCeiDgD2AeYAFwTEdko53cHCqh1ZUtKkkaPll+T\nyswbgKn9pn2jz+OFwC4DLLoMOGC4y2NISdLo0VbfOAGGlCSNJoaUJKlahpQkqVqGlCSpWoaUJKla\nhpQkqVqGlCSpWoaUJKlahpQkqVqGlCSpWoaUJKlahpQkqVqGlCSpWoaUJKlahpQkqVqGlCSpWoaU\nJKlahpQkqVptF1IdHbB8+UiXQpLUjLYLqd6WVOZIl0SSNJS2C6nNNoOxY2HVqpEuiSRpKG0XUuB1\nKUkaLQwpSVK1DClJUrUMKUlStQwpSVK1DClJUrUMKUlStQwpSVK1DClJUrUMKUlStQwpSVK1DClJ\nUrUMKUlStQwpSVK1DClJUrUMKUlStQwpSVK1DClJUrUMKUlStQwpSVK12jKkOjoMKUkaDdoypGxJ\nSdLo0LYhtXz5SJdCkjSUtg0pW1KSVD9DSpJUraZCKiK+08y00cKQkqTRodmW1L59RyJiM+Cg4S/O\nxmFISdLoMGhIRcQ5EfE0sF9E/LUxPA0sAq7dKCVsgXHjoKcHurpGuiSSpMFEZg49U8QXMvOcjVCe\n9RIR2cx29LX11rBgAWyzTYsKJUkiIsjMWN/lm+3u+1FEbNV4wfdFxP+KiClNFvCoiJgTEfdHxFkD\n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\n5t4WUkdHOZj3tnBWriwhNlAd3HNPCbnOzjLP2vT0wI9/XA6Mr351Cau11ckTT5T1Ll++Zrsi1pRl\n5cpSr7vtVsK3o6OcDMyZU06kHn20/O96y7/rriWQ9tuvnCw8/ng58N9zT9n2vfYqw+TJJdTvu68M\nCxasCQwodTllShl23RUmTRr6pPKnPy3bvfvu5TX22KPsb71ht2BBKUNmqaPeVm5m2R87O0vw9/YC\nDGTRotICOeecwcPg6afh29+GX/yinBxsv30Zevebrq7y///gB1tzI1gzli2DbbYxpAwpSaqUd/dJ\nkjZZhpQkqVqGlCSpWoaUJKlahpQkqVqGlCSpWoaUJKlahpQkqVqGlCSpWoaUJKlahpQkqVqGlCSp\nWoaUJKlahpQkqVqGlCSpWoaUJKlahpQkqVqGlCSpWoaUJKlahpQkqVqGlCSpWoaUJKlahpQkqVqG\nlCSpWoaUJKlahpQkqVqGlCSpWoaUJKlahpQkqVqGlCSpWoaUJKlahpQkqVotD6mIOCoi5kTE/RFx\n1lrm+UpEzI2IeyLiwD7T/xwR90bErIi4s9VllSTVZWwrVx4RY4ALgSOAx4CZEXFtZs7pM8/RwB6Z\nuVdEvAr4T2Ba4+keoDMzl7SynJKkOrW6JXUIMDcz52XmauAK4Lh+8xwHfBsgM+8AtouIiY3nYiOU\nUZJUqVYHwM7AI33GH21MG2ye+X3mSeBnETEzIk5uWSklSVVqaXffMDgsMxdExARKWM3OzBkjXShJ\n0sbR6pCaD0zuMz6pMa3/PLsMNE9mLmj8/UtEXEPpPhwwpM4777y/Pe7s7KSzs3PDSi5JWmfTp09n\n+vTpw7a+yMxhW9nzVh6xGXAf5caJBcCdwImZObvPPMcAH8/MN0fENOA/MnNaRHQAYzJzWURsBdwI\nnJ+ZNw7wOtnK7ZAkrZ+IIDNjfZdvaUsqM7sj4lRKwIwBLsnM2RFxSnk6L87M6yPimIh4AHgGOKmx\n+ETgmojIRjm/O1BASZI2XS1tSW0stqQkqU4b2pLy9m5JUrUMKUlStQwpSVK1DClJUrUMKUlStQwp\nSVK1DClJUrUMKUlStQwpSVK1DClJUrUMKUlStQwpSVK1DClJUrUMKUlStQwpSVK1DClJUrUMKUlS\ntQwpSVK1DClJUrUMKUlStQwpSVK1DClJUrUMKUlStQwpSVK1DClJUrUMKUlStQwpSVK1DClJUrUM\n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\n", + "image/png": "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\nRK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -556,7 +509,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 21, "metadata": { "collapsed": false }, @@ -567,49 +520,51 @@ "text": [ "## LinearRegression\n", "\n", - "*LinearRegression(solver='normal equation', eta=0.01, epochs=50, random_seed=None, shuffle=False, zero_init_weight=False)*\n", + "*LinearRegression(eta=0.01, epochs=50, minibatches=None, random_seed=None, print_progress=0)*\n", "\n", "Ordinary least squares linear regression.\n", "\n", "**Parameters**\n", "\n", - "- `solver` : {'gd', 'sgd', 'normal equation'} (default: 'normal equation')\n", - "\n", - " Method for solving the cost function. 'gd' for gradient descent,\n", - " 'sgd' for stochastic gradient descent, or 'normal equation' (default)\n", - " to solve the cost function analytically.\n", - "\n", - "- `eta` : float (default: 0.1)\n", + "- `eta` : float (default: 0.01)\n", "\n", - " Learning rate (between 0.0 and 1.0);\n", - " ignored if solver='normal equation'.\n", + " solver rate (between 0.0 and 1.0)\n", "\n", "- `epochs` : int (default: 50)\n", "\n", - " Passes over the training dataset;\n", - " ignored if solver='normal equation'.\n", + " Passes over the training dataset.\n", + " Prior to each epoch, the dataset is shuffled\n", + " if `minibatches > 1` to prevent cycles in stochastic gradient descent.\n", "\n", - "- `shuffle` : bool (default: False)\n", + "- `minibatches` : int (default: None)\n", "\n", - " Shuffles training data every epoch if True to prevent circles;\n", - " ignored if solver='normal equation'.\n", + " The number of minibatches for gradient-based optimization.\n", + " If None: Normal Equations (closed-form solution)\n", + " If 1: Gradient Descent learning\n", + " If len(y): Stochastic Gradient Descent learning\n", + " If 1 < minibatches < len(y): Minibatch learning\n", "\n", "- `random_seed` : int (default: None)\n", "\n", - " Set random state for shuffling and initializing the weights;\n", - " ignored if solver='normal equation'.\n", + " Set random state for shuffling and initializing the weights.\n", "\n", - "- `zero_init_weight` : bool (default: False)\n", + "- `print_progress` : int (default: 0)\n", "\n", - " If True, weights are initialized to zero instead of small random\n", - " numbers in the interval [-0.1, 0.1];\n", - " ignored if solver='normal equation'\n", + " Prints progress in fitting to stderr if not solver='normal equation'\n", + " 0: No output\n", + " 1: Epochs elapsed and cost\n", + " 2: 1 plus time elapsed\n", + " 3: 2 plus estimated time until completion\n", "\n", "**Attributes**\n", "\n", - "- `w_` : 1d-array\n", + "- `w_` : 2d-array, shape={n_features, 1}\n", + "\n", + " Model weights after fitting.\n", "\n", - " Weights after fitting.\n", + "- `b_` : 1d-array, shape={1,}\n", + "\n", + " Bias unit after fitting.\n", "\n", "- `cost_` : list\n", "\n", @@ -620,9 +575,9 @@ "\n", "


\n", "\n", - "*fit(X, y, init_weights=True)*\n", + "*fit(X, y, init_params=True)*\n", "\n", - "Learn weight coefficients from training data.\n", + "Learn model from training data.\n", "\n", "**Parameters**\n", "\n", @@ -635,10 +590,11 @@ "\n", " Target values.\n", "\n", - "- `init_weights` : bool (default: True)\n", + "- `init_params` : bool (default: True)\n", "\n", - " Re-initializes weights prior to fitting. Set False to continue\n", - " training with weights from a previous fitting.\n", + " Re-initializes model parametersprior to fitting.\n", + " Set False to continue training with weights from\n", + " a previous model fitting.\n", "\n", "**Returns**\n", "\n", @@ -647,15 +603,9 @@ "\n", "
\n", "\n", - "*net_input(X)*\n", - "\n", - "Compute the linear net input.\n", - "\n", - "
\n", - "\n", "*predict(X)*\n", "\n", - "Predict class labels of X.\n", + "Predict targets from X.\n", "\n", "**Parameters**\n", "\n", @@ -666,8 +616,9 @@ "\n", "**Returns**\n", "\n", - "- `float` : Predicted target value.\n", + "- `target_values` : array-like, shape = [n_samples]\n", "\n", + " Predicted target values.\n", "\n", "\n" ] @@ -677,6 +628,15 @@ "with open('../../api_modules/mlxtend.regressor/LinearRegression.md', 'r') as f:\n", " print(f.read())" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { @@ -695,7 +655,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.5.0" + "version": "3.5.1" } }, "nbformat": 4, diff --git a/docs/sources/user_guide/regressor/LinearRegression_files/LinearRegression_19_2.png b/docs/sources/user_guide/regressor/LinearRegression_files/LinearRegression_19_2.png index a3f95fae05f65d2582a519ea281350c891a22b40..244e4dcc30898d0378679c47f135de33b24bd9b7 100644 GIT binary patch literal 6474 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 diff --git a/docs/sources/user_guide/regressor/LinearRegression_files/LinearRegression_20_0.png b/docs/sources/user_guide/regressor/LinearRegression_files/LinearRegression_20_0.png index 7001247c1357e65f69dfca33b70ea059a3f7e21d..b239e726751dad1d665d0da4eb656b1f54f462bd 100644 GIT binary patch literal 5643 zcmd6Lc~leGwtgUDP^MN|kV!-<(1?J_JgaC+iAWnQnIwQ9G+`8)Fi+CLwQVF83Q8hT zI}Q|KP$bL{M{XJcMZyrK*dWM^3<+U;75o0~>U-Dyz5m`@uhyzn>+Jf@Is5GM?X&kj zSAIBoOm4I4W()=+2Ra-fU@#H|=&L5Z5tVow#N*M=hRDO<8EN!MkoNl<+TIlI;1-F& z$ZQqA5^a4+D;UhSBJjweGcmNuzGRB$r^JCT!ed)sq~Is~4zi>OH0ePvDN^UHj=)-j z(A_;o+C^$O*j%dd)>5<+@4WSgL!w8SI@!kL@U2E#z(d9>kj>BgMs&=yD4QpZlfDR0 zE}l3jy|Q~JV3|UxUme`>d||1-ucoa(zGbT3%P3l~V%wVNU#@A>8rxz~um=Fg?r#fG zJ_s{>WOYG8fC>R-v>adn;GGK&AZ*!0fq|%wF8e*4VZaLRy)y($j3--iG@3^o!INrH zUSL~W&c%M6n|@N^X5pqYm{K|O3WPi#5~);LhX{af+28`C?E7vP_}R0}8hn&?X&EwA zgsig5*%qs6XSlhABxj@L3*M`bmyg3atcw}#as2vv(Q>Tz&l_WLGddYnB|zX6H!fL1 z9-Ou0OY)EP7+eJk)ZSW>+@{;}CR60)(TCsJ1vG53I|Gtj4Sp+gi-vkGmY#XWGr7a(NlsbO_YUteqm!}qH9@pxt?UV@e7}48<(CW zG3j3tueG~+5TK}?ocPqDdC4!oBfR{f`~73pl8c6H1x&+rfW3xTMt0Q??w!^uba}b9 znr)s91e*FbXhV=0_EC$g;7a|dOsdSWzUZyjEH~#TM6?Cm1e%8wbvC+^^b633b@g3f zN9zQW-tA^LXwpHA)xm@MLqhXOY9)1|Eeoj$k=iC6I(zHxc^mW0pjrJrA?xX|3Y&!wVB!)O1hpX9tfnaq| z^T`%SsGDnnecldo-eSOC$M}DMiK%Qx=sw2A(i-P~1^oLYixakg&gwyc+vU>RG4eFZ z*Ph}0pZ`<~)%WX0EnW3I@tAzA-RWPKL@!|vcC1wk3A140JzH&|J0Iy%Qw#cU7gEun0LWJjxz6lI$p@~+zPt)%NA%&%w{tLDg=A=I(||b%5>YLTv3x(qY3lzqY&J zf0d)k@B$p@ecTIn%^!Jb%rfm7j|*cm`Cr75*66_*kMhCW6#5~+#GF`6@q zSow?J+(M9yMzG*Ez)NTykK97sJN z|4FV6ZZE!wWB=(>)C<4u;YWfjd{y`%M^j0hvjd^#4X>{PLp%-DWYZ2BGFdL%T-P5c6-TQy)YfxGHa5-k z^YfQ9454yw+;V-Ij$UfbXE|DzT(2a}1?s^C$E%c0WOyP>`aQP!Zi=don197jys{C5ntD25@A8p>d3!boOYXzb_V>3nx1hUA z7QMRSCf;5Hdy*?HpbhA^)l{B_1B z4ka(mGYM|rVNa45&)0~yo$pW>g6)LJuPofp81{Am3GuQ87Gk}`INPYhFwfVa`8n#= zUpt@{p8OBE{9iHtFr^wYObh-XJx0B%F_766KbKLgJFuqDR61So$=QBB>w0u*SVfc*7@ z%JnstqZZhdrDbyI^vTqcTIOS`Z?8><3_*L)} zJ$$rL&%BNvA;z)thcw^+mi0o0$lv!9n5U3&*ZJ?f^6=h^rSZ{Ujs236hbwUe+x#-W zC4j{{E_4${qIAJL<|z+?;W!<9x;5t03*|>W>gfhxwn>l!zRH+G`T}1uFJND(p=?wG2P|?pIYp!={x6;1RX~(~C`rD82(TF$TCKT7Oj099$do z#(zMnAGb2=GhuZqsPjb`T~5LJoxd)6lx#O)X%v14eY=?+9`Wd80?r@Awdsuw>XwrI`GdUz#L9&e1j5&<7V;) z*-mQ3ct(K4?c;3p|EaY+q$x+=+1c62X}^hyNzPm_ZwR%ss()Nu-stG4lvV%VTc;eK z%Ev%P@s3bp(9el2lB_e_VgEJzgAn)FMzM=mAV~}R1RBd_%krZ3M|@t;$LewI2uskt zU3+$-9te{Pl}Oqeqc?LCSSSDNSs_7%gHJqFHCL{@$U3d@yk5~KnhrR%IOrDu(U|qw zAI5b#o7f|TWAj@CeXMe`fat8WlU7#1OkX#$OiYgft{ zJCbXK#`9LwKQ9z{X`vC!sx7Deu~t+7wEA1UXd7E&wTWlUp-5KFyy!14aCC2obcCxz z2qj~c796^^g&jx44oIcS3mI4YL?bV!*NV*+j<;1d^Wfu8H@Uh%$=8PlFm^m<+=j}B z$kgqFDkH|DIcK)jem)xBY!W_vThXcr(6<~61y@yPzB>qcxCBqQDq^-|rH~l&NzbR#zPZvU{P!zS^) zT)1hzh99MQpQo^06$&S9RajveBQ{}wJj!LXP}>s;C0Jtr+oU3-KBiJfJ%e?4Gyjqd z|CQp$-2=i>ZLsagVPu>qThLeYu`x-ue>HTGkMq#IgeHU6)7u|AAL{(3HQ6@dqs$Bs zWoo|Ebeu~M9%ejvNpZ)hnOZBJL1TSba{O1>^Qn5NpE^BfmO5WL5+$b-bZC+C>L$Mz zYT*N~%;tUDw@LT24SuzHoUcg#e7VD;U(ztyqIU6hU2Anz>G^gY?c;5`0vz5KQN}8K zaS4L5x>DYg--M#6XrE@)n3hQINgh$izt=j(EseM^T}FZo-@^T^_8&5amy^k#uo(@B z>(MG?n#h12W-;P!8@YNtC$j6J@_p-<50%Hv(;gnPXbB#O?J}L~7QA~_{gNVCtx8B! zH^;;aU+m6e=iAifbSgTtvz-ODIQe;7G`Po8CZDI((a~0tz>sQ@_;|Cw0reH`TEcP~ zE<-b*zG=jxr7EZOTr%U6I=T1qcdezPmn~cFj-I+^)Dyjf)tpdqCy=$18n)O%rd{qL zw-06xo=dw{^TVgAg|qggQ(?}eo^Usf4Ymsu6Q-^a#xFuxiYQQGM zRqxQ%?A#grUsLoPG)9c=MI(2+8yaQ`%KpE({QoBKUos#+Y8Jlx_K*NruM88JW%phm zVgVJu)-Yj4sGCVknvR>qIeD6#H73|G!XBFZ+%qi4&N{=@1&MMi+Tmx*mUixgAcd?l z8j4qqb{sq59RT%tK+CB?sgeG{k@7QO3bM30JOPesu0C=1SD0~4H5$XjO^s6<8r)2K zOly`{y8p<2f*+via+_<-vJyK8Aw|QApD%L-$P%IFG7LDqskA34m);9oWB7N!4LP~v znG-Y_nv`V4S(vX@z@@k6=zHYn=jY{}Cy~bfe%t`es~8;(eE8^*@slqc{Dom4Fafj~Q9CGzO3QamjsF!YAe2wrd`PL>a(^{aV zHTW1&pIY+`0U>TGF#SMzpI(YyAt@fd8do^}3sSAiQOi!yh>@+l+nuQK&$I^y^gYoo zPQQrL@`t-aK#N+B|5GIRw_5Ulo_}w45I|F%?(0KSK(1`}urEl~uCn2%%!!N8pE6At ze+FIk7?p4$tlZl551z4)vcoc~OTI@l**@|X%jTuqcNUDS#sg~K^ud;jU2c%@EH{bo z&ZnvL(69+x?;`b*>U6)pzb%tCtnJSG6HD%BjmflPbYO)G%>x5_)hTyMN@neJv*Y4+ZrZ%R?`1eH9KHUVOno#xwpygInv;7Cc1gk{w zob3dQ!KZN+ozAdcw)KsnlI0w^qAVcSR3Wr0f5fcq{p$_|il6>WYvI_Q6eJEo1m3Ij9-Gv2{kDb6mR`MZ&JJ3@^FOLw z&EPgtQ-i1jg<+CbqpKQp?s<9LFu|Rpu%=`Sre2m=h-BPV_G4d}yvdAO*I0Buxc=I8 z{L#o|b~JpB`%?z-`j9JA6N8LN@Lf_G9x0!UN5z!FLp)A-fs9I}Hy0RJx{ZYxT-CE%~(2A|+o)x(Z zRQb(dy~K($-wUWxjd`~u5m&cG2yu&=S2RD!=qD$~5fu`CL)Pvg@|aHSy6kwsL!X5w zGUiobHP_et4TmXlOW%J43P<}U;(ePgj9nU#SYsi!yo!nM`78cQ0}^I$djl;VBML6u zbY#gVuEEfYiJw-UZJu@bl6)lyorYMdMgC+-6z6~+wM^llM6oWD&NBiN?Did1xv1YvNJ|kcP0GN zzkYs7s^1;TdIq%^ILx~9m65S#FbOk`O938zP&*Ux?TlQUS!ceAv2H{+8@<|M-4eTrBkjKl zt_-OgLkH)2YkKnN>#-79b^AGYWTLDC_iq=D4?g%b{A9Q)dhn0TO!u?FASe^WPYcRk z@r1LC4V#uDV9n5+uoJVFfeIbbxw$=CVA`#rYJX7(*g}#oM`A5S13;Ap=Y6waI*dq& ziJ$ux6A12OFfK>E{dKCIKH(t@pL<%H^&y_7%r3#YKwK5}wAma+6Z??*spPIu)+Xh2 zidPAei;YjIFm5uGX!((~E*xBnXk&<6fj|j->@%c8-gPaSJ&ue~o3qEFUAUXTdO7P7 zMBcbb^D&~Bogm{nQ2TD~-F{O^52{&y+qr3X2wFGcIL#A_z6A0=Knq=q4MoODECz#9 zp!H$y3tDkYMYR%bb zHJ0Cp0nZwjkm-|)YRFjYXdNS5e`Z3Y>^ZjMm=Kg1cLUdcA>R5nJQ7N*bQAWXWkJ^5 ziG6jNm3uhJ8|s~=x!W=85|z6+typJ?X~`Xa2W6O}+AEq)6sg4@Asfq_Fde5`oeajN zAB(}drzp86pE_K<(wErgx7cuKbRSyr15r6>cTiK?x(}eBRHK5@B}BX+MTsDy0hLe!0!l|ZNH~NRKx!z#0uhuFq(s_5B1%g@ zq=jNQAgBa5QVbAEz#~ZLA|-_Kg6G|G-pqafy}57C>{+wd`qsC8^R2J%M>ow3h4>}- z0RVsy+z4g?0C1IXUdcneoEcYD^l8p;Aox1m>JaCNI&=ri`96#?vJVCT1di^%Tzz9P z+W^2x4LIzYRe0{gn9mz&&%BwHr9JS0qyFwZZfU6pxOuK8om9=szZ%S)Y_O2#6MRej z8vPyh+feAnVX;e+n+C z5>$j+c!*oz2p#GKF#L(95gaE`HYX>AmEeru=>Z^~ajv|hS zrD)`9i17@(&)i@mMtouMCxsr8cll1&mSq$0dK*iRkq{8<0=IBe*dTM~z}l}flo{`x zY5KSU!7<^IK}vb%8a`w=XCVEwDz}*Dv`Nu$-S~v$5o3${cMx}{w8mr>9eC#@fz|Tv z{3r>O-yARSyuhXm$^fCG{VdwSDa1PH`v-Wj$z0HQ#LQZgu&I-;B)zkCwx zUA>PjgWq@iDKF_`VPN1nt$I<>46ugT`LNu|Ga601ySvV|g;l;e-PO?s2>RnZqBHff z4G5H_3|DP9Kx``(#%*WKc!U@~uCYEp8ZH8a)I5s;EGaT1@}R^)F=q zH(dUIKsJ4LK=R@`Sqw)oQ&J!(m}_$6bK%{C0Rp_zO^@Uw2WJvE!pwgP&UpDM_4S$4 za8HhuwwNwc7w*E93~72wATj;+M68`Sa7J*IwF?Y1gf&S3W7Yqt?v$U3!`7>T7RUR- zBAhw5px%(fmx9${TxZxZyj|^Kj_LTbw>8ngO>@dho0R*JZ@tv45tdG`3EaY-JeID_ zZI^*JzcU@lFlN+$7E)h*NNwUfNfbF=R8lnaf^*p%Jr}2>tIU}XdM+35p$_2-HO{o_xB*4|hXZfCm*-qIekuru zak1IMSXS1*EOH!U2H{oeGws2BgM$bDX;HWS31uIGeWHM3?>>}7{u1wgMuu&qlK|Y} zB?n96BEMS8(A;e!oHpm^XFAgP(Y3UiRB(v#Ex8)@;y!ny@1~cM(*u@5{J`)W$mDf?#(mibU8-e0rel#lBp-RW z#D@ohiWre70I}&c`P)WuPNb70ybq<|Ys4iLEEu)NUjCHw+o0{nKG#A8>U>L@RLF71 zSZLHA@|BSqQPYs0DAJz?Bwdh5f!gGiX-^*5?8_=`v^K&Skkae))d{zoHr)q{o@ofE zwwx?BoxA!K?0s)#Jlg5I!&__9=h;`p#gs9fvP&Txk+?$$@!8rn(`fj09$LX1KbzSrf*7j>2}?02bk?hwQiB~&nu!@;(<=+>1YxApBP^U!m`5_JR(3qp zmD!pSb6_b}_sY&)k`EYutP8>MO+8PrS#kH}r)<~0t1nBTy0Zr=JJ&}9{2LB#vCGhV zI}E;`$4U8hFD7C4GVwFX*P_QW&AJ!qIC?+=qz5y>hHif31h%F5EnDNh`u?Qh=)IFb zI?ZKw1-oesqxySwV(pFt&w|`NVYv|M4BN0>8n}XlZGZS>UD`)LjB;PZrk4=8(dhO8 zw{Ni@Kl__AuQ8yMR>}ldtUxXfZy4bAR>$=;N_qK0rJ$Ay#P*GE_1SZhS~B5^khgt{ zEh?QS)AOy$IB?8kjtcA4Gp!eDXxTB%U=16!NDE2kaV_EcbC9=O^Ftjm|I8rlWxrhf z(_;>u8;M4Hw{q9-#b_;G4PQb}s_k++N7vA5I8Nn_q=lMcdjmzB5)z{3m7}?y!*yl& z^{$oE=j4jvup2k>_-6`Sx&cia&RXAoMINfeZ z6`vfM!dC*uH#Ro|LVbErobw0%0Vd({K+jYA;;BU6C?Ikp;X2=q6*+=|dsnl>snnGFFk|O{vLYmsSkb z0k^goKl&#p6DFTpG6?CV0&xK?!){mM5*49d8&JS@j%o8t?2u5sB4nb!qa_JLvN$;P z4$u0E)ygTgy?bj+k9~L$_V}8sG|Cl0l=PnfwiKO*mJ~Y2N)zk3cfYH-u@@$DgBk6| z-1-R4v>Q0G2UT_u2o&+0Zglv}#_-+liY)mcSHtlVj%Yton=;$BVXwBAItTk-ZjceU z0sH3cdog;j?Z1I~9%CVKbC|iyx8fc>Cy6BM$}H9wMc&!*NNL?=+v?rl`(ZA8(6|q! zNl#D2M#s(KBhawiLsIs!KTH^j)Tq0H%zFJVg=aK!vz$w11in`USkvsHx4#VfWv$am zG>vpZT>v$n4VsdT3x=!~%6(npZF!2{t38%6bo+}2LGwd7v6{U7ow;%_Z$ zKq*x!bXgG;lZj`CK0oSEMo2~0#6U+QeL_wom6775!yf1-l`1Y6$~tw6JtY*2ccpHr zqD&AmXd{-ag(+OOW*^Xtc&oD3R-_SXwh!4bBcrvwtW+tcTD~Z&G>I}~1qis%rOe`7&OXLJg zDpp5)DuX;lZ+B(c&eX}E%Wuc5Br(Yq(d#9dmx4>jhaQU$zMjdi91CsUJ&1eOzJCZa z-(^oiCU*PD?^~?iGPH>Q?a$>U#T^0s6?lkS3e>f3Y`kf{<#~o!w6i5iXQTi zUTGLF-y~~hLdvmMN1zvKn-Oq3A5COtEWGKLY^~{1T}}>b3K@==smolb>YKu9lsOT4y3#Q;8`B7GuUkBSTT>A zhHwkLkjnrBz`V9x*E-A3KW9*d4n}#vl#{ULVHKG;f&r6>a^X{cPt^ccNm|>f^it`O zPKxlpp>Lr^6}*U=^4{{Uc>ih|ihgJM+145hYj<5EO3T+s#kpzo;u4$9o?Tj+AU`v~ zji~=UTu9@GGkADl?O+D5^wBXNOk-R>Bsii=Qzbrnj-#ygxjr$=D$o zJO11Pyh#Epe|~x?6tMd^+zo7aSy$|hn9xJUpmKmQ5;&$hS$Whd#y zbg;M21r9d4!q&SM;CTqh{}Hyppj{8R(m;;N!rDmyQ()~WAorQf=$;C-TxS{J(vs6c zrvdDTetR=8(68B_KEPSUZceN%?RdkslNT%>VL53|Y%-Qleku{0t)50#0I4Qpz2v7_ zGhg4TGlWsg=yyF~+aV4v`S>qEh5SPWT-9-Y7_q!a19|9vP%kGXLfkOJTXoB+7I z>gwfcaeS+Lq&@|i9cDHb^J#A4(^t(c4@MAUByy}aqR4MoSgR~XSA1xA9gcyou_V(AEjb)p6@cK_4dvsDeVNe)7xMK!CPh2I+NDZkXGag-=%soU z@~gXUL{=C2)joSopN|FX9sC8lf}~rm^EzX(Cd|p-Iqf=$S`j?!!m=%8uV^dJ2ePW* zn^PDn>xriRy0!O1!EZ+weI?;35?IBvEJBeTgq9XoyD5y$XJa?dE&Go3kB*+^KSuOJ zrpHB4E~*F13{pqbrY3}eE5fDDzxkFHzFm-?@)*)|=*w6?*(+Bgkv;fYr&=}VCUX)S z3sCK%`Y@-w=Gd|pVO0fXUA8>vntA7-92J1hQD6$!#KGi8*e;BhujH>=w)5$DR(j+P z+N$vDgm9BcxH2R*4KK+_dfs-_iX-1FtkjNpUr87UP(98`cdbsao#|h+*M8gMmg%9A zYM(j@TRNP&-szJS|3#v`R{))^=sPemaF~#_CDU>PKS_2G(jS=^Vo&{-Zk)Pk& z^k~_`G>ZI0m)|+lUh=(-<*H0WBECdZnnQA$j@6g==e(d?zP)}a3t8J8#Mo)x74jG` zGhFSM*P%~8nPAJ5#?Ft4L=_-I3l=PQKCdz-Sf>UF7{7h>n&8UkbuQvxsm3@N&}Arv z6uq^*>bE03Vd(Rm)@oJ9Dyjfng8JX$v-T;F=I0GcBPnL*I$sL(GDwCwutHcN&{I;f z6cTM;llh$M!mkx6fYBBfUV`XjbnIpX%<-n~w*?}0=%s3bH1MKf`wlSBW5*5%a^Jvi z#yG{ez^EhnCpIn%oDffUQF($zQ3ox$h({o)FfRQuZv@JYN(P5-VvZkZYAyptr{8(!<0~RLGuL zORUq!ap1>f;4ceV?gqQMA#|K4s$xtLi(_vn%w!N>GSs(`G8#W-E$~8Ym$#W zY;)pG;*{*00r4Dk;notK#&La1#GM;_bxlnAAr2wy2wM{we_A`ercVb=Q0U1^=8kJOBUy diff --git a/docs/sources/user_guide/regressor/LinearRegression_files/LinearRegression_22_1.png b/docs/sources/user_guide/regressor/LinearRegression_files/LinearRegression_22_1.png index f9f18b1b13d43c3d2f6d39c8a091a5906eca9f8f..0c3c1b2e2bb7764d0d418129614715c682d7b99e 100644 GIT binary patch literal 6443 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 literal 0 HcmV?d00001 diff --git a/docs/sources/user_guide/tf_classifier/TfMultiLayerPerceptron.ipynb b/docs/sources/user_guide/tf_classifier/TfMultiLayerPerceptron.ipynb index 55ac8f5c2..10b51cc5f 100644 --- a/docs/sources/user_guide/tf_classifier/TfMultiLayerPerceptron.ipynb +++ b/docs/sources/user_guide/tf_classifier/TfMultiLayerPerceptron.ipynb @@ -15,7 +15,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 1, "metadata": { "collapsed": false }, @@ -24,19 +24,17 @@ "name": "stdout", "output_type": "stream", "text": [ - "The watermark extension is already loaded. To reload it, use:\n", - " %reload_ext watermark\n", "Sebastian Raschka \n", - "last updated: 2016-04-10 \n", + "last updated: 2016-05-01 \n", "\n", "CPython 3.5.1\n", "IPython 4.0.3\n", "\n", "matplotlib 1.5.1\n", - "numpy 1.10.4\n", + "numpy 1.11.0\n", "scipy 0.17.0\n", - "mlxtend 0.4\n", - "tensorflow 0.7.1\n" + "mlxtend 0.4.1.dev0\n", + "tensorflow 0.8.0\n" ] } ], @@ -47,7 +45,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -144,7 +142,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -153,14 +151,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 20/20 | Cost 0.55 | TrainAcc 0.83" + "Iteration: 20/20 | Cost 0.55" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEPCAYAAABGP2P1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHdNJREFUeJzt3XuYVNWZ7/HvC4gXVFREQIiNoIhBEVAQFMdSR8TLAeOJ\nJmYkR50kJsZLoicqzjyxk8kTNT5J1NFkQiQYNTo54hiEJF5QywTFG6ACcoki4IWLIqKiIpf3/LF2\n21Vtd9OX2rX3rvp9nmc/XVV7166XsuXHWmvvtczdERERqdMh6QJERCRdFAwiIlJEwSAiIkUUDCIi\nUkTBICIiRRQMIiJSJNZgMLPJZrbGzF5qYv/uZvaAmb1gZvPN7Nw46xERke2Lu8UwBTipmf3fBRa6\n+xDgOODnZtYp5ppERKQZsQaDu88C1jd3CLBb9Hg3YJ27b4mzJhERaV7S/zq/BXjAzN4CdgW+knA9\nIiJVL+nB55OAee6+LzAUuNXMdk24JhGRqpZ0i+E84FoAd3/VzF4DBgLPNzzQzDSpk4hIG7i7teb4\ncrQYLNoaswL4ZwAz6wEMAJY1dSJ311ai7Zprrkm8hkra9H3qu0zr1haxthjM7G4gB3Qzs5XANUBn\nwN19EvAT4PaCy1mvcPd346xJRESaF2swuPvXtrN/Fc1fzioiImWW9OCzJCSXyyVdQkXR91k6+i6T\nZ23tgyo3M/Os1CoikhZmhqdw8FlERDJEwSAiIkUUDCIiUkTBICIiRRQMIiJSJFPBsHhx0hWIiFS+\nTAXDtGlJVyAiUvkyFQwPPJB0BSIilS9TwbBwIaxZk3QVIiKVLVPBMGYMzJiRdBUiIpUtU8EwfrzG\nGURE4papuZLefdepqYFVq6BLl6QrEhFJv4qfK2nPPeGII2DmzKQrERGpXJkKBlB3kohI3DLVleTu\nLF8OI0aE7qSOHZOuSkQk3Sq+Kwmgb1/o1Qtmz066EhGRypS5YAB1J4mIxCmzwaC7oEVE4pHJYBg2\nDDZu1KR6IiJxyGQwmMG4cepOEhGJQyaDATTOICISl1iDwcwmm9kaM3upmWNyZjbPzBaY2eMtPXcu\nBy+/rEn1RERKLe4WwxTgpKZ2mllX4FbgNHc/BDizpSfecUc46SSYPr39RYqISL1Yg8HdZwHrmznk\na8B97v5mdPw7rTn/uHG6OklEpNSSHmMYAOxlZo+b2XNmNqE1bz7lFMjnwxVKIiJSGp1S8PnDgOOB\nLsBsM5vt7q80dnBtbe1nj3O5HLlcjuHD4ZFH4PTTy1GuiEi65fN58vl8u84R+1xJZlYDTHf3wY3s\nuxLYyd1/FD2/Dfiru9/XyLHeWK033wzz5sGUKaWvXUQk69I6V5JFW2OmAaPNrKOZ7QIcCSxqzcnH\njQurum3d2s4qRUQEiLkryczuBnJANzNbCVwDdAbc3Se5+2Izewh4CdgKTHL3l1vzGX37wr77hkn1\nRo8ubf0iItUoc9NuN+aHP4SPP4YbbihzUSIiKZfWrqTY1d0FnZGMExFJtYoIhmHDQotBk+qJiLRf\nRQSDJtUTESmdiggG0KR6IiKlUhGDzwCbNkGPHqE7qWfPMhYmIpJiVTv4DPWT6s2YkXQlIiLZVjHB\nAOpOEhEphYrpSgJ47z3Ybz9YtQq6dClTYSIiKVbVXUkAe+wBI0bAww8nXYmISHZVVDCA1mgQEWmv\niupKAlixAo44Alavho4dy1CYiEiKVX1XEkBNDfTuDU89lXQlIiLZVHHBALo6SUSkPSo6GDLSSyYi\nkioVGQxDh8Inn2hSPRGRtqjIYNCkeiIibVeRwQAaZxARaauKu1y1zqefhkn1Fi3SpHoiUr10uWqB\nzp3DpHrTpyddiYhItlRsMIC6k0RE2qJiu5JAk+qJiKgrqQFNqici0noVHQyg7iQRkdaKNRjMbLKZ\nrTGzl7Zz3HAz22xmZ5S6hnHj4M9/hi1bSn1mEZHKFHeLYQpwUnMHmFkH4DrgoTgKqKmBPn00qZ6I\nSEvFGgzuPgtYv53DLgamAmvjqkNrNIiItFyiYwxmti9wurv/GmjVqHlraFI9EZGW65Tw598IXFnw\nvNlwqK2t/exxLpcjl8u16EOGDoVNm8Jd0F/8YuuLFBHJinw+Tz6fb9c5Yr+PwcxqgOnuPriRfcvq\nHgJ7AxuBb7n75zp+2nIfQ6FLLgmXr/74x20+hYhI5rTlPoZyBENfQjAcup3jpkTH/U8T+9sVDIsX\nw7HHwvLlsPPObT6NiEimpO4GNzO7G3gKGGBmK83sPDO7wMy+1cjhsSbUwIEwfDjcdVecnyIikn0V\nPSVGQ48/DhdeCAsXQoeKv7VPRCSFLYa0yeVgp53gwQeTrkREJL2qKhjM4PLL4ec/T7oSEZH0qqqu\nJAgL+PTrBzNmwJAhJShMRCTF1JXUAp07w8UXwy9+kXQlIiLpVHUtBoD166F/f5g/H3r3LskpRURS\nSS2GFtpzTzjnHLjllqQrERFJn6psMQAsWxYW8Vm+HHbdtWSnFRFJFbUYWqFfv3An9O23J12JiEi6\nVG2LAcIaDRMmwNKl0LFjSU8tIpIKajG00qhR0L271moQESlU1cGgG95ERD6vqoMB4EtfgjffhGee\nSboSEZF0qPpg6NQJLr1UN7yJiNSp6sHnOh98AH37wpw54aeISKXQ4HMb7bYbnH8+3Hxz0pWIiCRP\nLYbI66/DYYfBa69B166xfYyISFmpxdAOX/gCjB0Lt92WdCUiIslSi6HAnDnhKqVXX4Uddoj1o0RE\nykIthnY6/PAwVcbUqUlXIiKSHAVDA5ddFi5dzUhDSkSk5BQMDZx2GmzYAH//e9KViIgkQ8HQQIcO\n8P3v64Y3EaleGnxuxEcfhRvdnnwSDjywLB8pIhKL1A0+m9lkM1tjZi81sf9rZvZitM0ys0PjrKel\ndtkFvvUtuPHGpCsRESm/WFsMZjYa+BC4w90HN7J/JLDI3TeY2Vig1t1HNnGusrUYAFavhoMPhlde\ngW7dyvaxIiIllboWg7vPAtY3s/9pd98QPX0a6B1nPa3Rsyecfjr85jdJVyIiUl5pGnz+BvDXpIso\ndNllcMstsGlT0pWIiJRPp6QLADCz44DzgNHNHVdbW/vZ41wuRy6Xi7WuQw8N2z33wLnnxvpRIiIl\nkc/nyefz7TpH7FclmVkNML2xMYZo/2DgPmCsu7/azHnKOsZQ56GH4Ac/gBdfDCu+iYhkSerGGCIW\nbZ/fYbYfIRQmNBcKSRozBrZtg5kzk65ERKQ84r4q6W4gB3QD1gDXAJ0Bd/dJZvZb4AxgBSE8Nrv7\niCbOlUiLAeB3v4N774W/pmoERERk+9rSYtANbi2waVO44W3mTBg0KJESRETaJK1dSZm3445w4YXw\ny18mXYmISPzUYmihd94J02PMnw99+iRWhohIq6jFEKO994bvfQ/+9V81JbeIVLYWBYOZ3dmS1yrd\n1VfDe+/Br36VdCUiIvFpUVeSmc1192EFzzsC8939i3EW16CGRLuS6ixdCkcfHdZrGDgw6WpERJpX\n8q4kM5toZh8Ag83s/Wj7AFgLTGtHrZk1YAD8x3/AOefA5s1JVyMiUnotbTFc6+4Ty1BPczWkosUA\nYYzhtNNg2LAQEiIiaRXbfQxmdjTwgrtvNLNzgGHATe6+om2ltl6aggHCtNxDhsD998OoUUlXIyLS\nuDivSvo18JGZHQZcDrwK3NHK+ipKz55hEHrCBPjww6SrEREpnZYGw5bon+vjgVvc/VZgt/jKyoYz\nzoBjjgnTc4uIVIqWBsMHZjYRmAD82cw6ADvEV1Z23HQTPPIITJ+edCUiIqXR0mD4CrAJON/dVwN9\ngBtiqypDdt8d7rgjrBG9dm3S1YiItF+Lp8Qwsx7A8Ojps+5e1r8G0zb43NBVV8GiRfCnP2ndBhFJ\nj9gGn83sLOBZ4EzgLOAZM/ty60usXD/+MaxYEaboFhHJspZervoicGJdK8HMugMz3f2wmOsrrCHV\nLQaABQvguOPg6aehf/+kqxERifdy1Q4Nuo7WteK9VeOQQ8J8ShMmwJYtSVcjItI2Lf3L/UEze8jM\nzjWzc4E/A3+Jr6zsuvRS2HlnuP76pCsREWmbZruSzOwAoIe7P2lmZwCjo13vAX8o5zrNWehKqvP6\n63D44WEp0MMPT7oaEalmJZ8Sw8xmABPdfX6D1w8Ffuru/6tNlbZBloIB4O67wzxKc+eGFoSISBLi\nCIbn3H14E/vmu/uhrayxzbIWDABnnw3du8PNNyddiYhUqzgGn/doZp/+Hbwdt94aJtl7+OGkKxER\nabntBcPzZvbNhi+a2TeAOfGUVDn22gumTIHzz4d33026GhGRltleV1IP4H7gU+qD4AigM/ClaHqM\nsshiV1Kd730P3noL/vhH3RUtIuUV53oMxwGHRE8XuvtjLSxoMnAasMbdBzdxzM3AycBG4Fx3f6GJ\n4zIbDB9/HK5O+rd/g3/5l6SrEZFqElswtJWZjQY+BO5oLBjM7GTgInc/1cyOJCz+M7KJc2U2GCBc\nnXTSSTBnDuy3X9LViEi1iPPO5zZx91nA+mYOGU+04I+7PwN0jbqvKs6wYWHdhnPOCS0IEZG0Snpa\ni97A6wXP34xeq0hXXAF9+sDYsbBhQ9LViIg0rlPSBbRGbW3tZ49zuRy5XC6xWtqiY0e46y64+OIw\n2d6DD8I++yRdlYhUknw+Tz6fb9c5Yh1jADCzGmB6E2MM/wU87u5/jJ4vBo519zWNHJvpMYZC7lBb\nC/fcE+5x6Ns36YpEpFKlbowhYtHWmAeArwOY2UjgvcZCodKYwY9+BBddFNaMfvnlpCsSEakXa1eS\nmd0N5IBuZrYSuIZwD4S7+yR3/4uZnWJmrxAuVz0vznrS5pJLwk1wxx8P06bBkUcmXZGISBm6kkql\nkrqSGpoxA847L0y8d+KJSVcjIpUkrV1Jsh2nnQb33Rdufps6NelqRKTaZeqqpEr2T/8UBqJPOQXW\nr4dvfm6GKhGR8lAwpMiQIfDEE+EO6XXr4MorNbeSiJSfxhhS6K23YMwYOPlk+NnPFA4i0napmyup\nlKopGCBM033qqXDwwTBpEnRS205E2kCDzxVkr71g5kx4800480z45JOkKxKRaqFgSLEuXWD6dOjc\nOQxKv/9+0hWJSDVQMKRc587h/oYBA8KNcG+/nXRFIlLpFAwZ0LEj/PrXYVbWY46BlSuTrkhEKpmC\nISPM4Cc/gW9/G4YPh9tvD5PxiYiUmq5KyqC5c+Eb3wgD1L/5DfTvn3RFIpJWuiqpSgwbBs8+G7qW\njjwSrr8eNm9OuioRqRRqMWTcsmWhe2ntWrjtNjjiiKQrEpE0UYuhCvXrBw89BJdfHibju+wy2Lgx\n6apEJMsUDBXADCZMgAUL4J134JBDwrKhIiJtoa6kCvTww6F7adQouPFG6N496YpEJCnqShIgTMA3\nfz7su29oPfz+97q0VURaTi2GCjdnTljboVu3cGlrv35JVyQi5aQWg3zO4YeHS1vHjIERI+CGG2DL\nlqSrEpE0U4uhiixbBhdcEBYBuvHGsGqciFQ2rccg2+UOf/gD1NZCz55w9dVhQSAtBiRSmRQM0mJb\ntsDUqXDttSEUJk6EL385TNgnIpVDwSCt5g5/+Qv89Kfh7ukrrwz3ROy4Y9KViUgppHLw2czGmtli\nM1tqZlc2sn93M3vAzF4ws/lmdm7cNUk9s7CE6KxZMHlyaEX07x/GIHQHtUh1irXFYGYdgKXACcBb\nwHPAV919ccExE4Hd3X2ime0NLAF6uPuWBudSi6FM5syB666DJ56Aiy+Giy6CPfdMuioRaYs0thhG\nAP9w9xXuvhn4b2B8g2Mc2C16vBuwrmEoSHkdfjjcey/87W/hSqYDDoArroBVq5KuTETKIe5g6A28\nXvD8jei1QrcAXzSzt4AXgUtjrklaaOBAmDIF5s2DTz6BQYPgO98JYSEilatT0gUAJwHz3P14M+sP\nPGJmg939w4YH1tbWfvY4l8uRy+XKVmQ1228/uPlm+Pd/h5tuCivInXxyCImjjtKlriJpks/nyefz\n7TpH3GMMI4Fadx8bPb8KcHe/vuCYGcC17v5k9PxR4Ep3f77BuTTGkBIbNsCkSWGwets2OPfccCXT\nF76QdGUi0lAaxxieAw4wsxoz6wx8FXigwTErgH8GMLMewABAnRUp1rUr/OAHsGgR3HEHrFwJhx0W\npt245x74+OOkKxSR9oj9PgYzGwvcRAihye5+nZldQGg5TDKzXsDtQK/oLde6+z2NnEcthhT7+GP4\n05/g9tvhuefgzDNDS2LkSHU1iSRJN7hJKrzxBtx5Zxi47tChvqupd8PLDkQkdgoGSRV3mD07tCKm\nTg2zu553HowfDzvtlHR1ItVBwSCp9dFHcP/9ISTmzoWzzoKvfx2OPDK0KkQkHgoGyYSVK0NX0113\nhSucxo0LrYjjj9ccTSKlpmCQzFm6FKZNC9uCBXDiiSEkTj1V03CIlIKCQTJt7VqYMSNc3ZTPwxFH\nwOmnh6CoqUm6OpFsUjBIxdi4ER55JLQkZswIVzSNHx+2oUN1CaxISykYpCJt3QpPPVXf5bRpU/24\nxLHHQufOSVcokl4KBql47uGO67qQePllGD0aTjghDF4fdpiuchIppGCQqrNuXRiPeOwxePRReOcd\nyOXqg2LAAHU7SXVTMEjVe+MNePzxEBKPPhpaGHUhccIJ0KdP0hWKlJeCQaSAO7zySgiIxx4LgbHn\nnvVBcdxxsPfeSVcpEi8Fg0gztm2D+fPrWxOzZkG/fnDMMTBqVNhqatT1JJVFwSDSCps3h5lgn3wy\nzOn01FNh4LouJEaNCsucal4nyTIFg0g7uMPy5SEk6rZFi+CQQ0JIHHVU+KkFiSRLFAwiJfbRR/D8\n8/Utitmzw30Tha2KYcM0x5Okl4JBJGbusGxZcatiyRI4+OAQEEOHhp+DB8POOyddrYiCQSQRGzfC\nSy/BvHlhSvG5c2Hx4jCwPWxYfWAMGRKWRRUpJwWDSEp8+iksXFgfFPPmhfDo1au+VVEXGN27J12t\nVDIFg0iKbd0aup3qgqLu5267hYA45JD67aCDNG4hpaFgEMkYd3jttRAQCxeGNSkWLAiv7b8/DBpU\nHBj9+0OnTklXLVmiYBCpEJs2hdbFggXFgbFqVWhNNAyM/fbT5IHSOAWDSIX78MNwb0VhWCxYEJZI\nHTgwhEbhduCBsMsuSVctSVIwiFSp9evDlVBLlhRvy5bBPvt8PjAOOihMKKhWRuVLZTCY2VjgRqAD\nMNndr2/kmBzwS2AH4G13P66RYxQMIq20ZQusWPH5wFiyJLQyDjywOCwOOCCMY3TrpjmjKkXqgsHM\nOgBLgROAt4DngK+6++KCY7oCTwFj3P1NM9vb3d9p5FwKBpESev99WLq0OCxeeQVefTUMivfvH7a6\nsKjbeveGjh2Trl5aKo3BMBK4xt1Pjp5fBXhhq8HMvgP0cvcfbudcCgaRMnCHd98NAdHYtm4d9O1b\nHBZ12/77a9LBtGlLMMR94Vtv4PWC528AIxocMwDYwcweB3YFbnb3O2OuS0SaYBa6krp1gxEN/28l\nzB/12mv1QfGPf8CDD4bHK1aE9/XtG7aamvrHffuGq6c0VUj6peGK6E7AMOB4oAsw28xmu/srDQ+s\nra397HEulyOXy5WpRBGps8su4XLZQYM+v2/rVnjrrRAQy5eH7fnnYerU8Pj112GPPRoPjpqasHXp\nUsY/TAXK5/Pk8/l2naMcXUm17j42et5YV9KVwE7u/qPo+W3AX939vgbnUleSSMZt2warV9eHRmGA\nrFgRtl13DVObN7X17g077JDsnyNL0jjG0BFYQhh8XgU8C5zt7osKjhkI/CcwFtgReAb4iru/3OBc\nCgaRCrdtG7z9dmhZNLWtXh2WZG0uPHr21AB5ndQFA3x2uepN1F+uep2ZXUBoOUyKjvm/wHnAVuC3\n7v6fjZxHwSAibNkSwqG58Fi3Lty/se++oYXR1M+uXSv/stxUBkOpKBhEpKU2bw7h8eabYcyj8Gfh\n461bQ0jUBUVhaPTqFVoevXqF7q2sUjCIiLTCBx+EkGgsNFatCuGyalW4Q7xXr+KwaOxn9+7pu5tc\nwSAiUmLuIUAKg6LwceHPDRtCOPTsGbYePT6/7bNP+NmtW3lCRMEgIpKgTz+FtWvrw2PtWlizpnir\ne+3998MgemFYNAyQmpqwbGx7KBhERDLi00/DFVjNhUdNDfz2t+37HAWDiIgUaUswpGyYREREkqZg\nEBGRIgoGEREpomAQEZEiCgYRESmiYBARkSIKBhERKaJgEBGRIgoGEREpomAQEZEiCgYRESmiYBAR\nkSIKBhERKaJgEBGRIgoGEREpomAQEZEiCgYRESkSezCY2VgzW2xmS83symaOG25mm83sjLhrEhGR\npsUaDGbWAbgFOAkYBJxtZgObOO464KE465F6+Xw+6RIqir7P0tF3mby4WwwjgH+4+wp33wz8NzC+\nkeMuBqYCa2OuRyL6n6+09H2Wjr7L5MUdDL2B1wuevxG99hkz2xc43d1/DbRqwWoRESm9NAw+3wgU\njj0oHEREEmTuHt/JzUYCte4+Nnp+FeDufn3BMcvqHgJ7AxuBb7n7Aw3OFV+hIiIVzN1b9Q/uuIOh\nI7AEOAFYBTwLnO3ui5o4fgow3d3/J7aiRESkWZ3iPLm7bzWzi4CHCd1Wk919kZldEHb7pIZvibMe\nERHZvlhbDCIikj1pGHzerpbeJCctY2bLzexFM5tnZs8mXU+WmNlkM1tjZi8VvLanmT1sZkvM7CEz\n65pkjVnSxPd5jZm9YWZzo21skjVmhZn1MbPHzGyhmc03s0ui11v9+5n6YGjpTXLSKtuAnLsPdfcR\nSReTMVMIv4uFrgJmuvtBwGPAxLJXlV2NfZ8Av3D3YdH2YLmLyqgtwGXuPggYBXw3+ruy1b+fqQ8G\nWn6TnLSckY3/9qnj7rOA9Q1eHg/8Pnr8e+D0shaVYU18n6DL1lvN3Ve7+wvR4w+BRUAf2vD7mYW/\nHLZ7k5y0mgOPmNlzZvbNpIupAPu4+xoI/3MC+yRcTyW4yMxeMLPb1DXXembWFxgCPA30aO3vZxaC\nQUrvaHcfBpxCaG6OTrqgCqMrOtrnV0A/dx8CrAZ+kXA9mWJmuxKmGLo0ajk0/H3c7u9nFoLhTWC/\ngud9otekjdx9VfTzbeB+QnedtN0aM+sBYGY90Zxf7eLub3v95ZK/BYYnWU+WmFknQijc6e7Topdb\n/fuZhWB4DjjAzGrMrDPwVeCB7bxHmmBmu0T/osDMugBjgAXJVpU5RnEf+APAudHj/wNMa/gGaVbR\n9xn95VXnDPT72Rq/A15295sKXmv172cm7mOILle7ifqb5K5LuKTMMrP9Ca0EJ9zg+Ad9ny1nZncD\nOaAbsAa4BvgTcC/wBWAFcJa7v5dUjVnSxPd5HKF/fBuwHLigro9cmmZmRwN/A+YT/v924GrCjBP/\nj1b8fmYiGEREpHyy0JUkIiJlpGAQEZEiCgYRESmiYBARkSIKBhERKaJgEBGRIgoGqRpm9kH0s8bM\nzi7xuSc2eD6rlOcXKScFg1STupt29ge+1po3RsvUNufqog9y1/xTklkKBqlG1wKjo0VgLjWzDmb2\nMzN7JprR85sAZnasmf3NzKYBC6PX7o9mpZ1vZt+IXrsW2Dk6353Rax/UfZiZ3RAd/6KZnVVw7sfN\n7F4zW1T3vmjfdWa2IKrlZ2X7VkQisa75LJJSVwGXu/s4gCgI3nP3I6P5uJ40s4ejY4cCg9x9ZfT8\nPHd/z8x2Ap4zs/vcfaKZfTeasbaOR+f+38Bgdz/UzPaJ3vNEdMwQ4IuEGUSfNLOjgMXA6e4+MHr/\n7nF9CSJNUYtBJEwk+HUzmwc8A+wFHBjte7YgFAC+Z2YvEOa571NwXFOOBu4BcPe1QJ762UKfdfdV\n0UyiLwB9gQ3Ax9E6BF8CPm7nn02k1RQMImFmz4ujpU6Hunt/d58Z7dv42UFmxwLHA0dGawW8AOxU\ncI6WfladTQWPtwKd3H0rYRr0qcBpgJa1lLJTMEg1qftL+QNgt4LXHwIujOayx8wONLNdGnl/V2C9\nu2+K1tIdWbDv07r3N/isvwNficYxugPHEGa7bLzA8Ll7ROscXwYMbvkfT6Q0NMYg1aTuqqSXgG1R\n19Ht7n5TtBTiXDMzwkImja2L+yDwbTNbCCwBZhfsmwS8ZGZz3H1C3We5+/1mNhJ4kTCN9A/cfa2Z\nHdxEbbsD06IxDIDvt/2PK9I2mnZbRESKqCtJRESKKBhERKSIgkFERIooGEREpIiCQUREiigYRESk\niIJBRESKKBhERKTI/wcYFPlEWmwCMAAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -207,7 +205,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 4, "metadata": { "collapsed": false }, @@ -216,14 +214,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 550/550 | Cost 0.12 | TrainAcc 0.96" + "Iteration: 550/550 | Cost 0.12" ] }, { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -232,7 +230,7 @@ ], "source": [ "mlp.epochs = 550\n", - "mlp.fit(X, y, init_weights=False)\n", + "mlp.fit(X, y, init_params=False)\n", "plt.plot(range(len(mlp.cost_)), mlp.cost_)\n", "plt.xlabel('Iterations')\n", "plt.ylabel('Cost')\n", @@ -241,7 +239,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -250,7 +248,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -274,7 +272,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -300,7 +298,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -336,7 +334,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -345,14 +343,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 100/100 | Cost 0.13 | TrainAcc 0.95" + "Iteration: 100/100 | Cost 0.13" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYkAAAEKCAYAAADn+anLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGlRJREFUeJzt3XuUXGWZ7/HvkxsJtyC3aAgBkUsichEhIMqyFYfEkWUc\nGRH0MKLieOYoojAI6B9k1ujgjGtUzpIzc9CMMzAqR0ABHcUbtAIjBLlFICERJIQAARTCNReS5/yx\nq+xK09WpJFW7end9P2u9q2rv2rX7qU3Tv7zvu2vvyEwkSRrKmG4XIEkauQwJSVJThoQkqSlDQpLU\nlCEhSWrKkJAkNTWu2wW0KiI8V1eStkBmxpa+t1I9icy0ZXL++ed3vYaR0jwWHguPxfBta1UqJCRJ\n5TIkJElNGRIV1NfX1+0SRgyPxQCPxQCPRftEO8asyhARWZVaJWmkiAiyVyauJUnlMiQkSU0ZEpKk\npgwJSVJThoQkqSlDQpLUlCEhSWrKkJAkNWVISJKaMiQkSU0ZEpKkpgwJSVJTHQ2JiJgfESsjYuEw\n2/zviFgaEXdGxKGdrEeStHk63ZP4JjC72YsR8Q7gNZm5H/Ax4F87XI8kaTN0NCQy80bgqWE2mQtc\nUtv2FmByREzpZE2SpNZ1e05iD2B5w/KK2jpJ0ggwrtsFbI558+b96XlfX593n5KkQfr7++nv72/b\n/jp+Z7qI2Av4QWYePMRr/wpcn5n/r7a8GHhLZq4cYlvvTCdJm6kKd6aLWhvKNcBfAUTEUcDTQwWE\nJKk7OjrcFBHfBvqAXSLiIeB8YAKQmXlxZv4oIv48In4HPA98qJP1SJI2T8eHm9rF4SZJ2nxVGG6S\nJFWUISFJaqpSIeFokySVq1IhsWZNtyuQpN5SqZB44YVuVyBJvaVSIfHii92uQJJ6S6VCwp6EJJWr\nUiFhT0KSylWpkLAnIUnlMiQkSU1VKiQcbpKkclUqJOxJSFK5KhUS9iQkqVyVCgl7EpJULkNCktRU\npULC4SZJKlelQsKehCSVq1IhYU9CkspVqZCwJyFJ5TIkJElNVSokHG6SpHJVKiTsSUhSuSoVEvYk\nJKlclQoJexKSVC5DQpLUVKVCwuEmSSpXpULCnoQklatSIWFPQpLKVamQsCchSeWqVEisXQvr13e7\nCknqHZUKiUmTYPXqblchSb2jciHhkJMkladSIbHttoaEJJWpciHhGU6SVJ5KhYTDTZJUro6HRETM\niYjFEbEkIs4Z4vUdI+KaiLgzIn4bEac225c9CUkqV0dDIiLGAF8DZgMHAidHxIxBm30cuCczDwXe\nCvxzRIwban/2JCSpXJ3uScwClmbmssxcB1wGzB20TQI71J7vAPwhM18aamdOXEtSuTodEnsAyxuW\nH66ta/Q14LUR8QhwF3BGs5053CRJ5RoJE9ezgTsycyrweuCiiNh+qA0dbpKkcg059t9GK4DpDcvT\nausafQi4ACAz74+I3wMzgN8M3tndd89j5Up46CHo6+ujr6+vM1VLUkX19/fT39/ftv1FZrZtZy/b\necRY4D7gWOBRYAFwcmYuatjmIuDxzPy7iJhCEQ6HZOYfB+0rzzormTIFzj67YyVL0qgSEWRmbOn7\nO9qTyMz1EfEJ4KcUQ1vzM3NRRHyseDkvBj4P/HtELKy97TODA6LOiWtJKlenh5vIzGuBAwat+78N\nzx+lmJfYpEmTYNWq9tYnSWpuJExct8yehCSVq3Ih4SmwklSeSoWEp8BKUrkqFRION0lSuSoVEpMm\nOdwkSWWqVEjYk5CkclUuJOxJSFJ5KhUSTlxLUrkqFRION0lSuSoVEk5cS1K5KhUS9iQkqVyVCwl7\nEpJUnkqFxPjxkAnr1nW7EknqDZUKCXDISZLKVLmQcPJakspTuZCwJyFJ5alkSNiTkKRyVC4k/Na1\nJJWnciHhcJMkladyIeHEtSSVp3IhYU9CkspTyZCwJyFJ5ahcSDhxLUnlqVxIONwkSeWpXEg4cS1J\n5alcSNiTkKTyVDIk7ElIUjkqFxJOXEtSeSoXEg43SVJ5KhcSTlxLUnkqFxL2JCSpPJUMCXsSklSO\nlkIiIi5tZV0ZnLiWpPK02pM4sHEhIsYCb2h/OZvmcJMklWfYkIiI8yLiWeDgiHim1p4FHgeuLqXC\nQZy4lqTyDBsSmXlBZu4AfCkzd6y1HTJzl8w8r6QaN2JPQpLK0+pw0w8jYjuAiPgfEfHliNirlTdG\nxJyIWBwRSyLinCbb9EXEHRFxd0RcP9z+DAlJKk+rIfEvwAsRcQhwFnA/cMmm3hQRY4CvAbMp5jVO\njogZg7aZDFwEHJ+ZrwPeO9w+HW6SpPK0GhIvZWYCc4GvZeZFwA4tvG8WsDQzl2XmOuCy2j4avR+4\nMjNXAGTmk8PtsB4SmS1WLknaYq2GxLMRcR5wCvBftR7C+BbetwewvGH54dq6RvsDO0fE9RFxa0Sc\n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\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -360,9 +358,9 @@ }, { "data": { - "image/png": "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\nNdjZAAAAAElFTkSuQmCC\n", + "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -428,7 +426,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 9, "metadata": { "collapsed": false, "scrolled": true @@ -438,14 +436,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 30/30 | Cost 0.02 | TrainAcc 1.00" + "Iteration: 30/30 | Cost 40.04" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\nr2HZ6gAAAABJRU5ErkJggg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -478,7 +476,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -487,7 +485,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Training Accuracy: 100.00%\n" + "Training Accuracy: 99.76%\n" ] } ], @@ -499,7 +497,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -508,7 +506,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -526,7 +524,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -543,173 +541,6 @@ "print('Prediction: %d' % mlp.predict(X[4999, None]))" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example 4 -- Training and Validation Accuracies During Training" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Training accuracies are collected for each epoch by default. Optionally, we can pass validation dataset during model fitting to compute the validation accuracy values for each epoch. Here, pass 4000 samples from MNIST for training and 1000 samples from MNIST for validation." - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Epoch: 30/30 | Cost 0.00 | TrainAcc 1.00 | ValidAcc 0.86" - ] - } - ], - "source": [ - "from mlxtend.data import mnist_data\n", - "from mlxtend.preprocessing import shuffle_arrays_unison\n", - "from mlxtend.tf_classifier import TfMultiLayerPerceptron\n", - "import matplotlib.pyplot as plt\n", - "\n", - "X, y = mnist_data()\n", - "X, y = shuffle_arrays_unison((X, y), random_seed=1)\n", - "\n", - "mlp = TfMultiLayerPerceptron(eta=0.01, \n", - " epochs=30, \n", - " hidden_layers=[200, 200],\n", - " activations=['relu', 'relu'],\n", - " print_progress=1, \n", - " minibatches=5, \n", - " optimizer='adam',\n", - " random_seed=1)\n", - "\n", - "mlp.fit(X=X[:4000], \n", - " y=y[:4000],\n", - " X_valid=X[4000:],\n", - " y_valid=y[4000:])" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEPCAYAAABGP2P1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8FdX5+PHPEyAhhCWEfU1ABEXUVK1St0bwq+hXhB+K\nAirG2oJat7YuaKuiVi2t3VwqCEqkX5VWxaXWhYqmLnXBQhRZBIXkJhAWgUDCkoTk+f0xN+EmJHBz\ncyf3zvC8X6/7unPmTuaeJwPzZM6Zc0ZUFWOMMaZGQqwrYIwxJr5YYjDGGFOHJQZjjDF1WGIwxhhT\nhyUGY4wxdVhiMMYYU4eriUFEnhKRTSLy5UG2eURE1ohInohkulkfY4wxh+b2FcNc4NzGPhSR84Aj\nVPVIYCow0+X6GGOMOQRXE4OqfghsP8gmY4B5wW0/BTqJSA8362SMMebgYt3H0AcoDCmvD64zxhgT\nI7FODMYYY+JM6xh//3qgX0i5b3DdAUTEJnUyxpgIqKo0ZfuWSAwSfDXkNeCnwN9EZDhQoqqbGtuR\nnyf8mz59OtOnT491NVxj8bmnuhoqK2HHDtiwAYqLnfeGljdtgk6doEsXSEyENm32v1q3rluueS1f\nPp1TT51OcjK0a0fte+hy6HtyMrRte+ArMRGkSaenluH3f5sSwS/d1cQgIs8BWUAXEQkA9wCJgKrq\nk6r6hoicLyLfALuAq9ysTzzLz8+PdRVcZfE5VGHXLti2zXlt337gcui6XbugosJ5lZc3vFxZ6ZzA\nO3aE3r2dV69ezvvQoXD22fvX9ewJSUlNiy07O58nnmj678Qr/P5vMxKuJgZVnRTGNte7WQdj3KIK\nJSWwebPzl/hrr8HWrc7ru+/2L9d/JSZC586Qlrb/PXQ5I2N/uX17Z/ukJOe9oeU2beLzL3HjXbHu\nYzBB2dnZsa6Cq7wU386dsG4dbNy4/6Tf0PuWLU6zSbdukJiYzezZThNNzWvAAOjate66Ll2a/hd7\nrHnp2EXC7/FFQrzSbi8i6pW6mvhXWgrffANr1jiv0OWyMhg40Gl66d4devSo+16z3K2b03ZuTDwT\nkSZ3PltiiBO5ublkZWXFuhquacn49u1z/qqv3/FaWLj/5L9zJxxxBBx55IGvXr2a3jTj5+Pn59jA\n//FFkhisKcl4TmkprFoFK1bA2rUH3n2zdavThFPTAVvzPnw4XHGFc/Lv3RsSbBSPMQ2yKwYTt7Zt\ng5UrnQSwYsX+5a1bYfBg546bI46APn32n/x793aaelrbnzzGANaUZDysvBw++gjeegsWL3aSwO7d\ncPTRTgIYOnT/cno6tGoV6xob4w2RJAa7mI4Tubm5sa6CqxqKb+1a+Mtf4MILnb/y77zTGSR1xx3w\n+efOgK1PP4W5c+HWW+GCC5xO4XhMCn4+fn6ODfwfXyTsgtu0mF274N//dq4K3nrL6QAeNQomTXJO\n/l26xLqGxhiwpiTjsrVr4dVX4c034eOP4cQTnWQwahQcd5x1ABvjNutjMDGnCnl58Morzqu4GEaP\ndl4jRjjTNhhjWo71MXiYl9s59+2D996Dm25ypnMYP95pNnr8cScxPPUUpKbm+jopePn4HYqfYwP/\nxxcJ62MwEdm9GxYudK4KXn/dSQhjx8I//wnHHGNz9xjjZdaUZJpkzRp49FH461+d/oKxY2HMGOjX\n79A/a4xpeTby2bhC1Wkq+tOfnA7kn/wEli2Dvn1jXTNjjBusjyFOxGM759698PTTcPzxcMMNTgdy\nQQE8+GDTk0I8xhdNfo7Pz7GB/+OLhF0xmAMUF8MTT8CsWXDSSfD73zsPe7F+A2MOD9bHYGr997/w\n5z/DP/7hDDq78UYYMiTWtTLGNIeNYzBNtmULPPcc5OQ4k9Zdfz38+MfO08OMMd5n4xg8rCXbOSsr\nndHI/+//OVNQf/45PPyw89SyW291Jyn4vR3Xz/H5OTbwf3yRcL2PQURGAX/CSUJPqeqMep+nAk8D\nRwB7gB+p6gq363U4+uIL58rgueecaauzs+GZZ2w0sjGmLlebkkQkAVgNjAQ2AIuBCaq6KmSb3wKl\nqnq/iAwBHlfVsxvYlzUlRSC0qWjrVrjySuc1aFCsa2aMaQnx2JR0MrBGVQtUtRKYD4ypt81Q4F0A\nVf0ayBCRbi7Xy/fKyuC22+o2FeXnw/33W1Iwxhyc24mhD1AYUi4Krgv1BTAOQEROBvoDh93QqWi1\nc6rCyy87D7TZuBG+/toZpTxyZGxnMvV7O66f4/NzbOD/+CIRD+MYfgP8WUSWAMuApUBVQxtmZ2eT\nkZEBQGpqKpmZmbUP8a45uF4t5+XlNXt/xcXw7LNZrF0LP/95LpmZ0KOHf+KL57Lf47Oyd8q5ubnk\n5OQA1J4vm8rtPobhwHRVHRUsTwO0fgd0vZ9ZBxyrqmX11lsfQyPKy52moj/+EX7xC+eVmBjrWhlj\n4kE8zpW0GBgkIulAMTABmBi6gYh0AnaraqWI/AT4d/2kYBr37rtw3XXOXUaff+7McmqMMc3haquz\nqlYB1wMLgeXAfFVdKSJTRWRKcLOjga9EZCVwLnCTm3WKVzWXguHauBEuvxyuugpmzIDXXovvpNDU\n+LzGz/H5OTbwf3yRcL2PQVXfAobUWzcrZPmT+p+bxlVVwcyZMH06XH01rFgBKSmxrpUxxk9sSgyP\n2LLFeRLazJkwYAA89pjzQBxjjDmYeBzHYJrps89g8mSnD2H1anjpJefZCJYUjDFuscQQJ0LbOffs\ncUYqf//7MGECHHssfPON82yEE0+MWRWbxe/tuH6Oz8+xgf/ji0Q8jGMwQevWOU1FTz/tJIXp02HU\nKGjVKtY1M8YcTqyPIQ4sWwZ33uk8NvPKK+Haa23aCjeoKqUVpWzdvZWte7aydfdWvtv9Xe3y1j3O\n67vd37GzfCetE1qT2CqRpFZJJLZKdJZbJx2wLrFVIvuq91G+r5yKqgrKq5z3A5aDnyvh/zvumNSR\nXu170btDb3p36F273KuD896uTbsGf658XznFZcUUlxazoXQDxWXOe81yaXkpaclpdGnXhS7JwVe7\nLnRt17V2uea9beu20ToEJgbseQweVFIC3/se3HQTTJkC7Rr+f+47uyt3N3rS2l25O+z9VFVX1Z58\nGzwxh6zbU7mHxFaJtSe9ru26Nnpi7NS2U519H2r/bVq1CTuJJEh4LbiKsrN8p/N7Cf6uNpRtqPN7\nS2yVWJs0Wkmr2t9lWUUZPVJ6HJBQapJK+8T2bN+z/cAE2UDCbJXQirat29bG0VBcNesSWyVSWVVZ\n5/dU8ztqaF3b1m3pkNSBDokdaJ/Yvna5zrpgObVt6gGJq2NSR8TlRwuqKhVVFZRWlDbp32bNzx3s\n31Do76YpfzA0xdSTpsbdADdzEKrO4LTzz4fMzFzatcuKdZWareaEX+dkX1rMkk+WUJ1eXXtS27tv\nL7069Drgr+Gh3YbSIbFD2N+XIAkktU466Am5ppzcOpmk1kmuxJ2bm0vWaVmu7LsxqkrJ3pLaJLGv\nel/t77FLuy5hJ6BDfcdb77zFKaefcsgTW826NgltGj0G9ZPk3n17Ka0opbS8lNKKUsoqymqXa95L\n9pZQuLOQkr0lB1zh7d2394ArnC7JXUhpkxJ2wshfmk/Hozo63x383tDl0opSBKFDUgfatWmHEP45\nNjRhNva7SGqdRJuENlE5XtFiiSGG/u//nGckfP45fPpprGtzaDv27iC/JL/2Vf8v2NATfp1mj/a9\nOLHXiYw4bURtEujctrPrf+n5nYjQObkznZM7c0x3d25TExGS2ySTlpzmyv47JHWgW0rkkymX7ytn\n255tBySMJv1ln6qcMOCEOlcs9a9eElt5d46Z2cxu8s9YU1KMrF0Lp5wCixbBccfFujaOneU7Wbd9\nXZ2Tf/6O/cuVVZUM6DyAjNQM0jul07dj3wOaKOyEb0x8sT4Gj6ishDPPhEsvhZtvjm1dAjsCLFi5\ngJdWvsTS4qW1J/6MThnOe8grLTnNTvrGeIwlBo+45x6n6eiNN/Y/IyE3N7d2Cl23fbvtW15a+RIv\nrniRb7d/y5ghY7jo6Is4e+DZ7rbBt1B8seDn+PwcG/g/vnicXdXU8+GH8OSTsGRJyz44Z+WWlbXJ\nYGPZRsYeNZYHRjxAVkYWbVq1abmKGGPinl0xtKCaW1MffRQuuMC976moqmDt9rV8/d3XfL7hc15a\n+RKlFaWMO2ocFw29iNP6nUarBBs1Z8zhwJqS4pgqXHYZdO4Mjz8ejf0p60vXs3rralZvXc3X333N\n6m3Oe9HOIvp36s/gLoM5tvuxjD1qLN/v8/24uh3OGNMyrCkpjoXemtqQcNo5q6qreHzx48zNm8ua\nrWton9ieIV2HMDhtMEO6DuGsAWcxpMsQBnQeEHe31/m9HdfP8fk5NvB/fJGwxNACnGcwO7emJidH\nto8lxUuY+vpUUtqk8Oh5j3Js92Pp1LZTdCtqjDFYU5LrmntrallFGXe/dzfPLnuWGWfP4Mrjr7Rb\nRo0xYbPnMcShX/8aOnWCG29s+s++9vVrHPOXY9i2ZxtfXfsV2ZnZlhSMMa6zxOCimltTc3IOfWtq\n6JzwRTuLGPe3cdyy8BZyxuSQMzanWdMGxAO/z3nv5/j8HBv4P75IuJ4YRGSUiKwSkdUicnsDn3cU\nkddEJE9ElolIttt1agklJXDFFTB7NvTsGd7PVFVX8cinj5A5M5PjehzHl9d+yVkDznK3osYYU4+r\nfQwikgCsBkYCG4DFwARVXRWyzR1AR1W9Q0S6Al8DPVR1X719eaqP4eqroW3b8G9NXVK8hCn/mEL7\nxPbMvGAmR3U9yt0KGmMOC/F4u+rJwBpVLQAQkfnAGGBVyDYK1Myz3AHYWj8peM3y5fD667BmTXjb\n/+HjPzDjoxnWuWyMiQtuNyX1AQpDykXBdaEeA4aKyAbgC+Aml+vkurvvhttug44dD73tvC/m8cin\nj/DY0Y/5unPZ7+24fo7Pz7GB/+OLRDyMYzgXWKqqI0TkCOBfInKcqpbV3zA7O5uMjAwAUlNTyczM\nrB2YUnNwY11OScni009hypRccnMPvv3i9Yt5uPhhcq/M5e1n364z0CZe4olWOS8vL67qY/FZ2a/l\n3NxccnJyAGrPl03ldh/DcGC6qo4KlqcBqqozQrZ5HXhIVT8KlhcBt6vq5/X25Yk+hnPPhXHjYOrU\ng2+3tHgp5/7fuSy4dAGn9z+9ZSpnjDnsxOM4hsXAIBFJF5FEYALwWr1tCoCzAUSkBzAYWOtyvVyR\nmwvffAM/+tHBt1u3fR0XPH8BT/zvE5YUjDFxx9XEoKpVwPXAQmA5MF9VV4rIVBGZEtzs18CpIvIl\n8C/gNlXd5ma93KAKv/wl3HsvtDnILNZbd2/lvGfPY9pp07ho6EW162suBf3K4vMuP8cG/o8vEq73\nMajqW8CQeutmhSwX4/QzeNqbb8KOHTBxYuPb7Kncw+jnRzNmyBhuOOWGlqucMcY0gc2VFAXV1XDi\nic6T2caObXibquoqLn7hYlLapDDv/82zKbCNMS0iHscxHBZefNFpPhozpuHPVZUb37yR0vJS/nbx\n3ywpGGPimp2hmmnfPrjrLnjwQWhsCMJvPvwNHxZ+yEuXvNTocxL83s5p8XmXn2MD/8cXCbtiaKZ5\n86B3bxg5spHPv5jHrP/O4j9X/8een2CM8QTrY2iG8nIYPBiefx5OPfXAzxd+u5ArXr6C3CtzObrb\n0S1fQWPMYc/6GFrYrFlw3HENJ4WlxUu5fMHlLLh0gSUFY4ynWB9DhHbtgocech7EU9+eyj2Mf2E8\nj573aNgD2PzezmnxeZefYwP/xxcJSwwReuQRyMqC448/8LMHPniA7/X6HpcOu7TF62WMMc1lfQwR\n2L7d6Vv46CPnPdTyzcv5Yc4P+fLaL+ndoXdsKmiMMUHxOFeSLz38sDNmoX5SqNZqrvnnNdybda8l\nBWOMZ1liaKJNm2DmTOeZC/U9vfRpKqoquOaka5q8X7+3c1p83uXn2MD/8UXC7kpqogcfdJ7l3L9/\n3fWbyjZx56I7WXjFQloltIpN5YwxJgqsj6EJAgH43vdgxQro0aPuZ5cvuJxe7Xvxu3N+F5vKGWNM\nA2wcg8vuuw+uvfbApPCvb//Fh4EPWX7d8thUzBhjosj6GML03XfOZHk//3nd9Xsq93DtP6/lsfMf\nIyUxJeL9+72d0+LzLj/HBv6PLxKWGMI0bx5ceCGkpdVdXzNm4YLBF8SmYsYYE2XWxxAGVRg6FJ58\nEs44Y//6FVtWcObcM23MgjEmbtk4Bpd89JHzfnrI7BbVWs3U16famAVjjO9YYgjD7Nnw4x/Xfd7C\n3KVzIx6z0BC/t3NafN7l59jA//FFwvXEICKjRGSViKwWkdsb+PwWEVkqIktEZJmI7BORVLfrFa6S\nEnj1VZg8ef+6zbs2c8eiO5h1wSwbs2CM8R1X+xhEJAFYDYwENgCLgQmquqqR7S8AblbVsxv4LCZ9\nDI8/Du+/D3/72/51V7x8BT1TetqYBWNM3IvHcQwnA2tUtQBAROYDY4AGEwMwEXje5TqFTdXpcP79\n7/eve2ftO3xQ8IGNWTDG+JbbTUl9gMKQclFw3QFEJBkYBbzkcp3CtngxlJXBiBFOOVpjFhri93ZO\ni8+7/Bwb+D++SMTTyOfRwIeqWtLYBtnZ2WRkZACQmppKZmYmWVlZwP6DG83y734HP/5xFgkJTvmp\nJU+R2S+TCwZfEPXvy8vLi3r946ls8VnZyi1Tzs3NJScnB6D2fNlUbvcxDAemq+qoYHkaoKo6o4Ft\nFwB/V9X5jeyrRfsYSkudifJWrIBevWDH3h2k/ymdr677ir4d+7ZYPYwxpjnicRzDYmCQiKSLSCIw\nAXit/kYi0gn4IfCqy/UJ2/z5zhPaevVyys8ue5b/OeJ/LCkYY3zP1cSgqlXA9cBCYDkwX1VXishU\nEZkSsulY4G1V3eNmfZpi9mz4yU+cZVVl5uczmXriVNe+r+ZS0K8sPu/yc2zg//gi4Xofg6q+BQyp\nt25WvfIzwDNu1yVceXmwcSOce65T/qToE/bs28OIASNiWzFjjGkBNldSA376U+jeHe65xylnv5LN\nMd2O4dbTbm2R7zfGmGiJpI/BEkM9u3dDv37OVUO/frB9z3YG/HkAa25YQ7eUbq5/vzHGRFM8dj57\nzgsvwPDhTlIAmPfFPM4/8nzXk4Lf2zktPu/yc2zg//giccjEICI3iEjnlqhMPDig0/m/M6M2UZ4x\nxnjBIZuSROTXOLeZLgGexrl7qMXbn1qiKWnFCjj7bCgogDZt4P2C97nm9WtYft1yRJp0JWaMMXHB\nlaYkVf0VcCTwFJANrBGRB0XkiIhqGcfmzIHsbCcpAMz8fCZTTpxiScEYc1gJq48h+Kf6xuBrH9AZ\neFFEfuti3VpUeTn89a9w9dVOecuuLbyx5g0mHz/54D8YJX5v57T4vMvPsYH/44vEIccxiMhNwGTg\nO2AOcKuqVgan1F4D3OZuFVvGyy9DZiYcEbwOysnLYcxRY0hLTjv4DxpjjM+E08dwL/B0zdTZ9T47\nWlVXulW5et/lah/DiBFwzTVwySXOYzuHPDaEeWPn8YN+P3DtO40xxm1u3a76JrAt5Es6isgpAC2V\nFNz2zTfw1VcwZoxTfm/deyS3TmZ43+GxrZgxxsRAOInhCaAspFwWXOcbc+Y4j+5MSnLKNbeotmSn\ns9/bOS0+7/JzbOD/+CIRzlxJddpwVLVaROLpOQ7NUlkJOTlQ829jY9lG3ln7DnNGz4lltYwxJmbC\n6WNYAOSy/yrhOuAsVR3rbtUOqIcrfQwLFsCf/uQ81xngwQ8eZN32dcy+cHbUv8sYY1qaW30M1wCn\nAutxHs15CjDloD/hIbNnw5RgNFXVVcxeMpupJ7k3vbYxxsS7cAa4bVbVCaraXVV7qOokVd3cEpVz\nW0UFvPceXHSRU1747UK6JHfhpN4ntXhd/N7OafF5l59jA//HF4lwxjG0Ba4GjgHa1qxX1R+5WK8W\nsX499OgByclOedZ/Z7n6MB5jjPGCcPoYXgBWAZOA+4DLgJWqepP71atTj6j3Mfz73/CrX8EHH0DR\nziKOe+I4Aj8L0D6xfVS/xxhjYsWtPoZBqnoXsCv4pLX/xeln8LzCQujf31l+aslTTBg2wZKCMeaw\nF05iqAy+l4jIMKAT0N29KrWcQMBJDPuq9zFn6ZyYNiP5vZ3T4vMuP8cG/o8vEuEkhieDz2P4FfAa\nsAKYEe4XiMgoEVklIqtF5PZGtskSkaUi8pWIvBfuvpsrEHAeyPPGmjfo27Evx/c8vqW+2hhj4tZB\n+xiCE+VdrKp/j2jnzs+vBkYCG4DFwARVXRWyTSfgP8A5qrpeRLqq6ncN7CvqfQznnw/XXQdP7Pxf\nxg8dT3ZmdlT3b4wxsRb1PgZVraZ5s6eeDKxR1QJVrQTmA2PqbTMJeElV1we/84Ck4JZAAFp1yeeT\nok+45JhLWuprjTEmroXTlPSOiNwiIv1EJK3mFeb++wCFIeWi4LpQg4E0EXlPRBaLyBVh7rvZCgth\n0fY5XH7s5bRr066lvrZBfm/ntPi8y8+xgf/ji0Q4cx5dGnz/acg6BQZGsQ4nACOAFOBjEflYVb+p\nv2F2djYZGRkApKamkpmZSVZWFrD/4IZbfv31XCoqledWPs07k99p8s9Hu5yXlxfT77f4LD4r+6Oc\nm5tLTk4OQO35sqkOOY6hOURkODBdVUcFy9NwHgg3I2Sb24G2qnpvsDwHeFNVX6q3r6j2MSxbBhdP\n/o4tEwaz7fZth/4BY4zxoEj6GMIZ+dzgsy1VdV4Y+18MDBKRdKAYmABMrLfNq8CjItIKSMIZI/GH\nMPbdLIEAdDkin5TUDLe/yhhjPCWcPobvh7zOAKYDF4azc1WtAq4HFgLLgfmqulJEporIlOA2q4C3\ngS+BT4AnVXVFE+NoskAAUvrkkxEniaHmUtCvLD7v8nNs4P/4InHIKwZVvSG0LCKpOHcXhUVV3wKG\n1Fs3q175YeDhcPcZDYWF0Lpr/CQGY4yJF03uYxCRNsBXqjrkkBtHUbT7GC6/HDaecD0XnjaYG0+5\nMWr7NcaYeOJWH8M/cO5CAqfpaSgQ0YC3eBIIQOUp+WSknhPrqhhjTFwJp4/hYeD3wddDwJmqOs3V\nWrWAQAC2VsVPU5Lf2zktPu/yc2zg//giEc44hgBQrKp7AUQkWUQyVDXf1Zq5qKoKNhQribvzSe+U\nHuvqGGNMXAnneQyfA6eqakWwnAh8pKrfb4H6hdYjan0M69fDiadvpfyaQWy/fXtU9mmMMfHIlT4G\noHVNUgBQ1YpgcvCsQAC6DsqnTZw0IxljTDwJp49hi4jUjlsQkTFAi01054ZAADr0j5/+BfB/O6fF\n511+jg38H18kwrliuAZ4VkQeC5aLgAZHQ3tFIACJ3fPJ6JQR66oYY0zcCXscg4i0B1DVMldr1Pj3\nR62P4YYb4IveN3DRWYO4aXiLPrraGGNalCvPfBaRB0UkVVXLVLVMRDqLyK8jr2bsFRbC7qT4akoy\nxph4EU4fw3mqWlJTUNXtwPnuVcl9gQCUEF+Jwe/tnBafd/k5NvB/fJEIp4+hlYgkqWo5OOMYcGZB\n9ayCgFK+N5/0VBvDYIwx9YUzjuF2YDQwFxAgG3hNVX/reu3q1iMqfQy7d0Nan60kT7MxDMYY/3Nl\nHIOqzhCRL4CzceZMehvw7J/ahYXQfUg+aTbi2RhjGhROHwPAJpykMB7nEZwrXauRywIB6NS/IK76\nF8D/7ZwWn3f5OTbwf3yRaPSKQUQG4zxtbSLOgLa/4TQ9ndVCdXNFIADJveKr49kYY+JJo30MIlIN\nfABcrarfBNetVdWBLVi/0PpEpY/hnnvgLbmRiaMGcvPwm6NQM2OMiV/RHscwDuc5ze+JyGwRGYnT\n+expgQCUJ9sVgzHGNKbRxKCqr6jqBOAo4D3gZqC7iDwhIp59uk1hIexMiL/E4Pd2TovPu/wcG/g/\nvkgcsvNZVXep6nOqOhroCywFbg/3C0RklIisEpHVwVtf63/+QxEpEZElwdevmhRBExUElM0V8ZcY\njDEmXjT5mc9N2rlIArAaGAlsABYDE1R1Vcg2PwR+oaoXNryX2u2a3cegCslp22h7+0BKppUc+geM\nMcbjXJkrqZlOBtaoaoGqVgLzgTENbNcifRdbtkDbnna1YIwxB+N2YugDFIaUi4Lr6vuBiOSJyD9F\nZKhblQkEIG1gfCYGv7dzWnze5efYwP/xRSKcuZLc9l+gv6ruFpHzgFeAwQ1tmJ2dTUZGBgCpqalk\nZmaSlZUF7D+4Byt/8AG06+0khnC2b8lyXl5eXNXH4rP4rOzNcm5uLjk5OQC158umcruPYTgwXVVH\nBcvTAFXVGQf5mXXAiaq6rd76Zvcx/PnP8HTxTWSPyeBnP/hZs/ZljDFeEI99DIuBQSKSHnxO9ATg\ntdANRKRHyPLJOMlqGy4IBGBf+/hsSjLGmHjhamJQ1SrgemAhsByYr6orRWSqiEwJbnaxiHwlIkuB\nPwGXulWfQADKWsdnYqi5FPQri8+7/Bwb+D++SLjex6CqbwFD6q2bFbL8OPC42/UAZwzD1sz4TAzG\nGBMvXO1jiKZo9DH0zNjO7ikZ7LijBBHPz+5hjDGHFI99DHGjvBy2VuUzoHOGJQVjjDmIwyYxrF8P\nnQfkk9E5I9ZVaZDf2zktPu/yc2zg//gicdgkhkAAOvTLJ6NTRqyrYowxce2w6WOYNw8eWHIT11xq\nYxiMMYcP62M4iMJCqO5odyQZY8yhHDaJIRCAPUn5pKemx7oqDfJ7O6fF511+jg38H18kDqvEUKIF\ndsVgjDGHcNj0MRyVWULR+P6U3rnDblc1xhw2rI+hEaoQ2JlPeicbw2CMMYdyWCSGHTtAU/M5oktG\nrKvSKL+3c1p83uXn2MD/8UXisEgMgQCkptsdScYYE47Doo/h9dfh+tdv5sYr+/PzH/w8yjUzxpj4\nZX0MjQgEgFS7YjDGmHAcFomhsBDKk+M7Mfi9ndPi8y4/xwb+jy8Sh0ViCARgZ0J8JwZjjIkXh0Uf\nww/OKuHUfUo5AAATLElEQVSLkf3Y9cuddruqMeawYn0MjcgvKaBfBxvDYIwx4fB9Yqiqgi2V+Qzq\nmhHrqhyU39s5LT7v8nNs4P/4IuF6YhCRUSKySkRWi8jtB9nu+yJSKSLjovn9xcWQ0jufgXH6gB5j\njIk3rvYxiEgCsBoYCWwAFgMTVHVVA9v9C9gDPK2qCxrYV0R9DP/5D1z05M+4ZUpffnHqLyKIwhhj\nvCse+xhOBtaoaoGqVgLzgTENbHcD8CKwOdoVCAQgoYvdkWSMMeFyOzH0AQpDykXBdbVEpDcwVlWf\nAKLeOxwIQGVK/CcGv7dzWnze5efYwP/xRaJ1rCsA/AkI7XtoNDlkZ2eTkZEBQGpqKpmZmWRlZQH7\nD279ciCQRVn3fIq+LKJ0dekht49VOS8vL67qY/FZfFb2Zjk3N5ecnByA2vNlU7ndxzAcmK6qo4Ll\naYCq6oyQbdbWLAJdgV3AFFV9rd6+IupjOH9cCe99rx+7f2VjGIwxh59I+hjcvmJYDAwSkXSgGJgA\nTAzdQFUH1iyLyFzgH/WTQnOs3VpAnxQbw2CMMeFytY9BVauA64GFwHJgvqquFJGpIjKloR+Jdh3W\n787niLSMaO826mouBf3K4vMuP8cG/o8vEq73MajqW8CQeutmNbLtj6L53WVlsDepgEHd06O5W2OM\n8TVfz5W0ciWceu/P+eWNvbnl1FtcqpkxxsSveBzHEFOFhdCmW/zfqmqMMfHE14khEICqDt5IDH5v\n57T4vMvPsYH/44tEPIxjcE0gALsTvZEYjPGCjIwMCgoKYl0N04D09HTy8/Ojsi9f9zFMumoHCwb0\nYc9dpXa7qjFREGyvjnU1TAMaOzbWx1DPt1sL6NnWxjAYY0xT+DoxFJbmk+GR6bb93s5p8XmXn2Mz\nDfNtYqiuhs2V+RzVIyPWVTHGGE/xbR/Dpk2QMfXn3H+bjWEwJlqsjyF+WR9DGAIBSOqRT3onG/Vs\njAnPtddeywMPPBD1bb3Gt4mhsBBILfDMrap+b8e1+LzLS7ENGDCAd999N+Kff+KJJ/jlL38Z9W29\nxreJIRCA8rY2hsEY46iqqop1FTzDt4lhTWAnVQl76dqua6yrEpaaB274lcXnXV6JbfLkyQQCAS64\n4AI6duzI7373OxISEnj66adJT09n5MiRAFxyySX06tWLzp07k5WVxYoVK2r3cdVVV3H33XcD8O9/\n/5t+/frxhz/8gR49etCnT5/aB+A0ddtt27YxevRoOnXqxCmnnMJdd93FGWec4f4vJUK+TQyrNxXQ\nI9HGMBhzuJg3bx79+/fnn//8Jzt37uSSSy4B4P3332fVqlW8/fbbAJx//vl8++23bN68mRNOOIHL\nLrus0X1u3LiR0tJSNmzYwJw5c/jpT3/Kjh07mrztddddR4cOHdi8eTM5OTk888wzcX1u8m1iKNiR\nT7+OGbGuRti81I4bCYvPu5oam0h0XpEKvTNHRLj33ntJTk4mKSkJcB4R3K5dO9q0acPdd9/NF198\nQWlpaYP7SkxM5K677qJVq1acd955tG/fnq+//rpJ21ZXV7NgwQLuu+8+kpKSOProo7nyyisjD7AF\n+DYxbCzPZ3C3jFhXw5jDjmp0XtHSt2/f2uXq6mqmTZvGoEGDSE1NZcCAAYgI3333XYM/26VLFxIS\n9p8m27VrR1lZWZO23bJlC1VVVXXq0a9fv+aG5SpfJobyctjVJp+je2fEuiph80o7bqQsPu/yUmwN\nNc+Ernvuuef4xz/+wbvvvktJSQn5+fmoqqtjM7p160br1q0pKiqqXVdYWOja90WDLxNDURG07ZHP\nQI9Mh2GMiY6ePXuydu1agAZP+KWlpSQlJdG5c2d27drFHXfc4Xpbf0JCAuPGjWP69Ons2bOHVatW\nMW/ePFe/s7lcTwwiMkpEVonIahG5vYHPLxSRL0RkqYh8JiKnNfc7AwFISPPWrap+bqMGi8/LvBTb\ntGnTuP/++0lLS+Oll1464KQ/efJk+vfvT58+fRg2bBinnnpqk/bflCQSuu2jjz5KSUkJvXr14sor\nr2TSpEm1fR7xyNUpMUQkAVgNjAQ2AIuBCaq6KmSbdqq6O7h8LPB3VT26gX2FPSXGM8/AlG+7UHj7\nSrqndI9CJO7Lzc311CV7U1l83hUam02JER3Tpk1j06ZNzJ07N2r79NKUGCcDa1S1QFUrgfnAmNAN\napJCUHugurlf+k2glOqEPXRr1625u2oxfj2p1LD4vMvPsbWUr7/+mmXLlgHw2Wef8dRTTzFu3LgY\n16pxbj/BrQ8Q2stShJMs6hCRscBDQDfgf5v7pSuLC+ja28YwGGPiQ2lpKRMnTqS4uJgePXpw6623\nMnr06FhXq1Fx0fmsqq8Em4/GAr9u7v7WbsunT0pGs+vVkrzUjhsJi8+7/BxbSznppJNYs2YNZWVl\nfPvtt9x2222xrtJBuX3FsB7oH1LuG1zXIFX9UEQGikiaqm6r/3l2djYZGRkApKamkpmZWXuZW/OP\nNysriw278zl6c5s6baOhn8djOS8vL67qY/FZfA2VTfzLzc2tnY6j5nzZVG53PrcCvsbpfC4GPgMm\nqurKkG2OUNVvg8snAK+q6gGjP8LtfFaFxNG3cNfPunP3yPjOysZ4jXU+x69odj67esWgqlUicj2w\nEKfZ6ilVXSkiU52P9UngIhGZDFQAe4BLmvOdJSVAp3yO6nlAV4YxxpgwuN7HoKpvqeoQVT1SVX8T\nXDcrmBRQ1d+q6jBVPUFVT1PVj5vzfXv2QOcB3hrDAP6/VLf4vMvPsZmGxUXnczT17g3VHb2XGIwx\nJl74LjGUlpeyu3K3p8YwgP/vFbf4vMvPscH+ZynUGDZsGO+//35Y2zaVVx4H6vZdSS1u255tjBgw\nwsYwGGPCFnq++Oqrr8Le9mCeeeYZ5syZwwcffFC77oknnoisgi3Md1cM6anpvD7p9VhXo8n83o5r\n8XmXn2Nzk6p69g9U3yUGY8zh6be//S3jx4+vs+7mm2/m5ptvJicnh6FDh9KxY0cGDRrEk08+2eh+\nBgwYwLvvvgvA3r17yc7OJi0tjWHDhrF48eI6286YMYNBgwbRsWNHhg0bxiuvvALAqlWruPbaa/n4\n44/p0KEDaWlpQN3HgQLMnj2bI488kq5duzJ27FiKi4trP0tISGDWrFkMHjyYtLQ0rr/++ub9gpqi\nZmraeH85VTXGxFI8/z8sKCjQlJQULSsrU1XVqqoq7dWrl3766af6xhtv6Nq1a1VV9f3339d27drp\n0qVLVVU1NzdX+/XrV7ufjIwMXbRokaqq3n777XrmmWdqSUmJFhUV6bBhw+ps++KLL+rGjRtVVfXv\nf/+7pqSk1JZzcnL0jDPOqFPH7Oxsveuuu1RVddGiRdq1a1fNy8vTiooKveGGG/TMM8+s3VZEdPTo\n0bpz504NBALarVs3ffvttxuNv7FjE1zfpPOt7/oYjDGxJfdGp/lE72naQLr+/ftzwgkn8PLLL3P5\n5ZezaNEiUlJSOPnkumOazjjjDM455xw++OADMjMzD7rPF154gZkzZ9KpUyc6derEjTfeyP3331/7\n+UUXXVS7PH78eB588EE+++yzsOZBeu6557j66qs5/vjjAXjooYfo3LkzgUCA/v2dCSPuuOMOOnTo\nQIcOHTjrrLPIy8vjnHPOCft3EilLDHEidPoOP7L4vKupsTX1hB5NEydO5Pnnn+fyyy/n+eefZ9Kk\nSQC8+eab3HfffaxevZrq6mr27NnDcccdd8j9bdiwoc4jOdPT0+t8Pm/ePP74xz+Sn58PwK5duxp9\nTGhD+z7xxBNryykpKXTp0oX169fXJoYePXrUfn6wx4pGm/UxGGN8Y/z48eTm5rJ+/XpefvllLrvs\nMioqKrj44ou57bbb2LJlC9u3b+e8884La2qPXr161XkMZ0FBQe1yIBBgypQp/OUvf2H79u1s376d\nY445pna/h+p47t27d5397dq1i61bt9ZJRLFiiSFO+PWvzRoWn3d5KbauXbvywx/+kKuuuoqBAwcy\nePBgKioqqKiooGvXriQkJPDmm2+ycOHCsPZ3ySWX8NBDD1FSUkJRURGPPfZY7We7du0iISGBrl27\nUl1dzdy5c+vc6tqjRw+KioqorKxscN8TJ05k7ty5fPnll5SXl3PnnXcyfPjwZo2TiBZLDMYYX5k0\naRKLFi3isssuA6B9+/Y88sgjjB8/nrS0NObPn8+YMWMa/fnQv/Tvuece+vfvz4ABAxg1ahSTJ0+u\n/ezoo4/mF7/4BcOHD6dnz54sX76c008/vfbzESNGcMwxx9CzZ0+6dz/wSZIjR47k/vvvZ9y4cfTp\n04d169Yxf/78BuvRUNlNrs6uGk1NebSnF/m5jRosPi8Ljc1mV41fXnq0pzHGGI+xKwZjTNjsiiF+\n2RWDMcYY11hiiBN+n4/G4vMuP8dmGmaJwRhjTB3Wx2CMCZv1McQvzzzz2RjjL+np6Z6dStrv6k/X\n0RyuNyWJyCgRWSUiq0Xk9gY+nyQiXwRfH4rIsW7XKR75vR3X4vOu0Njy8/NjPtNytF/vvfdezOsQ\njVfNfE3R4GpiEJEE4DHgXOAYYKKIHFVvs7XAmap6PPBrYLabdYpXeXl5sa6Cqyw+7/JzbOD/+CLh\n9hXDycAaVS1Q1UpgPlBnLLqqfqKqO4LFT4A+LtcpLpWUlMS6Cq6y+LzLz7GB/+OLhNuJoQ9QGFIu\n4uAn/h8Db7paI2OMMQcVN53PInIWcBVw+qG29aNotg/GI4vPu/wcG/g/vki4eruqiAwHpqvqqGB5\nGs5j5mbU2+444CVglKp+28i+7B45Y4yJQLzdrroYGCQi6UAxMAGYGLqBiPTHSQpXNJYUoOmBGWOM\niYyriUFVq0TkemAhTn/GU6q6UkSmOh/rk8BdQBrwF3FukK5U1ZMb36sxxhg3eWbkszHGmJbhibmS\nDjVIzutEJD84wG+piHwW6/o0l4g8JSKbROTLkHWdRWShiHwtIm+LSKdY1jFSjcR2j4gUiciS4GtU\nLOvYHCLSV0TeFZHlIrJMRG4MrvfL8asf3w3B9Z4/hiKSJCKfBs8jy0TknuD6Jh+7uL9iCA6SWw2M\nBDbg9FtMUNVVMa1YFInIWuBEVd0e67pEg4icDpQB81T1uOC6GcBWVf1tMLl3VtVpsaxnJBqJ7R6g\nVFX/ENPKRYGI9AR6qmqeiLQH/osz9ugq/HH8GovvUnxwDEWknaruFpFWwEfAjcBFNPHYeeGK4ZCD\n5HxA8MaxCIuqfgjUT3JjgGeCy88AY1u0UlHSSGzgHEPPU9WNqpoXXC4DVgJ98c/xayi+mrFVnj+G\nqro7uJiE04esRHDsvHAyauogOS9S4F8islhEfhLryriku6puAuc/J3Dg09G97XoRyROROV5tZqlP\nRDKATJwZCXr47fiFxPdpcJXnj6GIJIjIUmAj8C9VXUwEx84LieFwcJqqngCcD/w02Fzhd/Hdhtk0\nfwEGqmomzn9ITzdHAASbWV4Ebgr+ZV3/eHn6+DUQny+OoapWq+r3cK7yThaRY4jg2HkhMawH+oeU\n+wbX+YaqFgfftwAv4zSf+c0mEekBte28m2Ncn6hR1S26v7NuNvD9WNanuUSkNc5J86+q+mpwtW+O\nX0Px+e0YqupOIBcYRQTHzguJoXaQnIgk4gySey3GdYoaEWkX/OsFEUkBzgG+im2tokKo22b7GpAd\nXL4SeLX+D3hIndiC/9lqjMP7x+9pYIWq/jlknZ+O3wHx+eEYikjXmiYwEUkG/genD6XJxy7u70oC\n53ZV4M/sHyT3mxhXKWpEZADOVYLidBY96/X4ROQ5IAvoAmwC7gFeAV4A+gEFwCWq6rlpLRuJ7Syc\ntupqIB+YWtOm6zUichrwPrAM59+kAncCnwF/x/vHr7H4JuHxYxh8ls0zOOfJBOBvqvqAiKTRxGPn\nicRgjDGm5XihKckYY0wLssRgjDGmDksMxhhj6rDEYIwxpg5LDMYYY+qwxGCMMaYOSwzGBIlIVXDK\n5aXB99uiuO90EVkWrf0Z4ya3H+1pjJfsCs5Z5RYbNGQ8wa4YjNmvwWmXRWSdiMwQkS9F5BMRGRhc\nny4ii4Izcv5LRPoG13cXkQXB9UtFZHhwV61F5EkR+UpE3hKRpBaKy5gmscRgzH7J9ZqSxod8tj34\nYJ7HcaZnAXgUmBuckfO5YBngESA3uP4EYHlw/ZHAo6o6DNiB8wAVY+KOTYlhTJCI7FTVjg2sXwec\npar5wZk5i1W1m4hswXkaWFVw/QZV7S4im4E+wQdL1ewjHVioqkOC5duA1qr6YIsEZ0wT2BWDMeHR\nRpabojxkuQrr4zNxyhKDMfsd7NGOlwbfJwAfB5c/AiYGly8HPgguvwNcB7VP1Kq5CvH8oyPN4cH+\nYjFmv7YisgTnBK7AW6p6Z/CzziLyBbCX/cngRmCuiNwCbAGuCq6/GXhSRK4G9gHX4jwVzNptjSdY\nH4MxhxDsYzhRVbfFui7GtARrSjLm0OyvJ3NYsSsGY4wxddgVgzHGmDosMRhjjKnDEoMxxpg6LDEY\nY4ypwxKDMcaYOiwxGGOMqeP/A89eEIxfpjkZAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(range(1, mlp.epochs + 1), mlp.train_acc_, label='training')\n", - "plt.plot(range(1, mlp.epochs + 1), mlp.valid_acc_, label='validation')\n", - "plt.xlabel('Epoch')\n", - "plt.ylabel('Accuracy')\n", - "plt.legend(loc='lower right')\n", - "plt.grid()\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example 5 -- Dropout" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "The 3 most common techniques for preventing overfitting are *Early Termination* and *Regularization*.\n", - "\n", - "In early termination, we stop training the network when we noticed an increasing gap between the training and validation performance. Another method is to apply regularization to reduce the number of parameters in our network and thereby reduce its complexity via this induced bias. Popular examples of regularization are L2 & L1 regularization, which are essentially \"penalties\" against large weights that are added to the cost function. For more details, please see the documentation page at [`general_concepts/regularization-linear`](../general_concepts/regularization-linear.md). (The multi-layer perceptron implementation supports L1 and L2 regularization via the `l1` and `l2` initialization parameters.)\n", - "\n", - "Another regularization technique, next to L1 and L2 regularization, is dropout. In dropout, we simply \"cancel\" half of the \"neural\" connections between layers during training -- randomly. As a consequence, our neural network can never rely on any given activation to be present. Therefore, the network will attempt to learn a redundant representation just to make sure that at least some useful information remains during in epoch. As weird as it sounds, in practice, dropout makes our network more robust and helps reducing the degree of overfitting. However, keep in mind that dropout is only applied during training; during testing, evaluation, and predictions on new data, we want something that's deterministic." - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Epoch: 75/75 | Cost 639.21 | TrainAcc 1.00 | ValidAcc 0.90" - ] - } - ], - "source": [ - "from mlxtend.data import mnist_data\n", - "from mlxtend.preprocessing import shuffle_arrays_unison\n", - "from mlxtend.tf_classifier import TfMultiLayerPerceptron\n", - "import matplotlib.pyplot as plt\n", - "\n", - "X, y = mnist_data()\n", - "X, y = shuffle_arrays_unison((X, y), random_seed=1)\n", - "\n", - "mlp = TfMultiLayerPerceptron(eta=0.01, \n", - " epochs=75, \n", - " hidden_layers=[200, 200],\n", - " activations=['relu', 'relu'],\n", - " print_progress=1, \n", - " minibatches=5, \n", - " optimizer='adam',\n", - " random_seed=1,\n", - " dropout=0.55)\n", - "\n", - "mlp.fit(X=X[:4000], \n", - " y=y[:4000],\n", - " X_valid=X[4000:],\n", - " y_valid=y[4000:])" - ] - }, - { - "cell_type": "code", - "execution_count": 33, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYYAAAEPCAYAAABGP2P1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xl8FfX1//HXCRAgkJWwSxJ2QUQERdSqUdTibrUo4Bbr\nt/hzt7UVrFVR27rULnZzF+Rbla9r1bogoBFcEEQCyA4hCRBWSeBmI9v5/TE3yU1MIMu9uTPhPB+P\n+8iduXPnvjOB+dz5nJn5iKpijDHGVIkIdwBjjDHuYg2DMcaYWqxhMMYYU4s1DMYYY2qxhsEYY0wt\n1jAYY4ypJaQNg4i8ICK7RGTlIZb5m4hsFJEMERkVyjzGGGMOL9RHDDOBHzf0ooicBwxU1cHAjcDT\nIc5jjDHmMELaMKjq50DeIRa5BJjtX/ZrIFZEeoYykzHGmEMLd42hL7A1YHq7f54xxpgwCXfDYIwx\nxmXah/nztwP9AqaP8s/7ARGxmzoZY0wzqKo0ZfnWaBjE/6jPu8AtwP+JyDggX1V3NbQiL9zwb8aM\nGcyYMSPcMQ7Lch6eKnz/PeTkgM9X+1FQUPO8sBCWLJnBCSfMqPW+HTsgN9f5WVoKHTtCp07QubPz\nvH1759GhA0REQHl57UdZWe3nZWXQqxf06QO9e0P37hAfX/Po0sVZV4cOznpFoKKi5v2vvTaDK6+c\nUf257dtDZWXN55SVOfmio6FrV+dn1aNrV4iMdLbLwYOQnw95ebB/f+2cFRUQE1OTKS7O2R7FxVBS\n4vxs165mvR061Gzv8nLn9YcemsFdd82otQ0CiTjrTUhwtltT/6YHD0JRkZOjavu3a+c8muKBB2bw\n4IMzGny9svKHf8+6u7DA7V9e7myTHj2aluNwRJrUJgAhbhhE5BUgFegmIjnAA0AkoKr6rKp+ICLn\ni8gmoBC4PpR5WkNWVla4IzRKW8954ABs2ACZmc5OrGpHXlDg/Gc8lL17nfeuX+8sm5Li7OwCd5JV\nz3v2dHbIGRlZjB5ds46EhJodeO/eTkNQWlqzgywpcXaiVTuFioqanVT79s5OKnAn376983nN+D9e\n7cMPs7jiiua/v0rHjs7v3bMJp4l06nT4Zap+xz17sujVq/n5DkXEydKYPIeTnZ11yNcjIpzGtKpB\n9ZKQNgyqOqURy9waygym7cnLg2XLnEdWlrOzrdrh5uXBxo1OwzB4MAwc6HxzrdqRd+9++G+Gw4fD\nz38OQ4Y4yzdmZ7xkCdx446GXCdYOyZhQC3eNoc1JS0sLd4RGcVvOigqnSyYz0/mmvmGDs4PPzEzj\nootqulKysmDPHhg1CsaMgWOPdbpmOnd2droxMU6D0Ldv07sZWsJt27M+XsgIltMNxAv99uAUn72S\n1ThKS2vv6LOyYPduZ8e+ezfs21fzbb+8HKKioH9/GDrU+bY+eDDExtbuTunXz3mtNXf6xniZiDS5\n+GwNQ5Clp6eTmpoa7hiH1dKcZWVOYTUnp+axfbszr6rgumtXzY586FCnr75nT6d7pkcP6NbNaQw6\ndXL6YevrsjlStmdr8EJGsJzB1pyGwbqSzCFVVDhdOitXwurVzmPNGudIoEcPSEpydv5VDUBqqlN0\nrXp4sfBmzJHOjhgMUNN/X9Xts2YNrFjh/OzVC0aOhBEj4JhjnOLs0KHO2SnGGHezriTTKHl5zlk0\nK1bUPDZtcr7hV/XvDx0Kxx3nFHdjYsKd2BjTXM1pGKyEF2Tp6enhjlCvigr4+GO48kqnwHvPPens\n3Annngv//rdzrn9mJnz4ITz5JNx8M5x6avgbBbduz7q8kNMLGcFyuoHVGNowVVi1Cl57DWbPdgq/\nP/sZPP20c5TggbqZMSYMrCupjamsdArFb74Jr7/unAo6cSJcc43TNWSMObLYWUlHoPJyWLwYPv8c\nvvjCeSQkwKWXOkcJJ57YstsoGGOOPFZjCLLW6HcsLoZ33oG0NOeModtvd64ZuO4653TSTZvgiSdg\n7NiGGwWv9I9azuDxQkawnG5gRwwuVVoK33wD6enOjj4vr+aRleXcDuInP4GHH3auITDGmGCxGoOL\n7N8PM2fCBx843UODBjkF4uHDne6hqlsZJyU508YYczh2HYNHZWc7p4i+9BJMmOCcUnraaU4jYIwx\nLWHXMbhAU/odd+yAq6+G0aOdm8ItXw4vvwwXXxz6RsEr/aOWM3i8kBEspxtYwxAGqk6X0XHHQXIy\nbNniFIuTksKdzBhjrCup1W3ZAlOnOrecfuEFZ1wBY4wJFetKcrGCAnjwQee6grPPhq+/tkbBGONO\n1jAEWd1+x/JyePZZ58Z069fD0qUwbZoz6Ew4eaV/1HIGjxcyguV0g5A3DCIyQUTWicgGEZlWz+tx\nIvKWiKwQkcUiMjzUmVqDzwcvvujUEV55Bd591/nZv3+4kxljzKGFtMYgIhHABmA8kAssBSap6rqA\nZR4HfKr6sIgMBf6pqmfXsy7X1xhUnVtSvPgivP02nHGGM0D8hAl2WwpjTHi48V5JY4GNqpoNICJz\ngEuAdQHLDAceAVDV9SKSIiLdVXVPiLMFTVGRc+vqv/3Nub31z34Gf/iDc7sK0zwVlRXMy5zH8O7D\nSYq107UOHDxAdGQ0EoRvGOWV5azZs4blO5azcd9GMvMy2Zy3mS15W0iOS+bs/mdzzsBzOKXfKQB8\nufVL5mfOZ37mfHJ9uYzqNYoxvcdwQp8TGJgwkG0HtpGZl0lmXiZZ+VnsLdpLXkkeecV57D+4n6TY\nJMb0HuM8+oyhT3SfWnn2l+yvfn9mXiZbD2xlX/G+WusI/FIoIvSJ7sOA+AEMiBvAgPgBjOgxgjF9\nxpAYlXjY37+sooy9RXuJ7hhNlw5dfrBNi8uKyS/Jp2P7jsR2jKVdRLsWb/MqJeUlrNq1im9yv+Hb\nHd8S1SGKMX2cbTm029CgflZLhPqI4XLgx6o61T99NTBWVW8PWOb3QCdVvUtExgKfAyep6vI663Ld\nEcPWrfCPfzhHCCefDHfcARER6Zx5Zmq4ox2WW8erLSkvYfaK2fzxyz8SHRnNpm83cemES7n71LsZ\n0WMEAKrKxn0bmZ85n1W7Vjk7EP9OpFIrOa7ncZzQ5wTG9BnDMd2PoaS8pPr1uj/zS/Lp1bUXY/qM\n4fhexxPdMbo6y4GDB8jMy2RXwa5aGSMkgthOscR3iie+czxxneL4fOHnQd2eRWVFLMpexLzMeczP\nnM/avWsZED+AqaOncu1x19Itqluj17WveB+fbPmEl999mR2JO1i1exVJsUmM7j2aod2GOjvY+AGk\nxKWwad8m5m2ex/wt8/lu93cAjOgxgrP7n83ZA84mKTaJjJ0ZfJP7Dct2LGNL/hb6xfSrtY7EqMTq\nbRPTMYYteVuql1+2YxnfF31fK1/XyK7V7x8QP4AD6w9wxhlnEN85nvhO8cR2iiVCanq9KyoryPXl\nVjckm/M2s3LXSpbtWEZcpzjG9B5DUmwSQs0Ov6C0gC35W9ict5lcXy5xneIoKC2grKKMuE5xxHSM\nobCskLziPBQlrlMcpRWl+A766BrZlfjO8RydeHR1o3lsj2P57LPPGDx6MAu2LGB+5nxW7FpBdGQ0\nCZ0TiO8cT3RkNL5SX/W/t++LvicrP4sh3YYwpvcYRvceTVFZUfV22Vmwk3t+dA+/Oe03LfzXU5sb\njxga41HgSRH5FlgFLAcq6lswLS2NlJQUAOLi4hg1alT1f8aqQlBrTG/aBHfckc7ChXDDDaksXgxb\nt6bXytqaeZoznZGR4Yo8J55yIlvyt/DOR++wcd9G5lbMZUzvMdzW/TaO7Xkshf0LWdV5Fac/cDpD\nE4cy/IThzN8yn6INRYzpM4YLz72QhM4JbF2xlei4aI4fdzzLdy7nvbnv8ad9f2JrwlaiOkTRaWsn\nojtGk3RcEvGd4yneWEx0ZDQjTxrJ5rzNPPfWc2TmZZIyKoWYjjGs/2Y9pRWlDB4zmJ5de5K/Lh+A\nhGEJlFeWs23FNnylPg72O4jvoI/4jHiOW3QcF5xzAaN7j2bJF0vI9eXSYWAHMvMy2b5qO9GR0Qw7\nYRjxnePJXJ7JjoIdFPUtIjMvk9yVuQDgr0FFZEdwTPdjmHj+RJ664CkKNxSyZs8alu5cyoOfPciJ\npSfSL6YfccPiyCvJY+OyjVRqJYPHDCa+Uzz56/IprShlY8xG1u9dz7CCYfQs6Mnjkx/n+F7Hs+yr\nZc7f44yav8cGNpCamsrpyaczPn08Bf0KOO3004jtFEt6ejqapfRP7U//+P7E74rnnKPOIfXqgL9n\nOaSOqJn24SM1NZXEqEQKNxYyLGYYz1/8/KH/fYxLJb3E+ax97GNk6sh6l1++eDld6MJtqbdVv16Z\nVEm/kf1YtmMZiz5bBMCg0YMA2LpyKz/u+mN+cs1PSIpN4stFXwJw8o9OJr8kn3kL5tGpQycuOOcC\nOnfoXP15p51+GgcOHuCDeR+wad8mNu3bxNPLnmbvmr102N2BipMqOKv/WfTb14+bE29m2InDyCvO\n46vPv6KwtJDUk1NJ6JxAVkYWMXExTJo6qWb9RbV//4LSAkaPGt3i/1/p6enMmjULoHp/2VShPmIY\nB8xQ1Qn+6emAqupjh3jPFuBYVS2oMz/sRwxr18Lvfw8ffQS33OLc1bRb47+4uV5RWREfbvyQ19e8\nzvKdy0mOTWZA/AAGxg+kX2w/OkR0qF428HC+e1T3RndxlFaUMj9zPq+veZ25m+aSV5JH/7j+DIgf\nwOCEwVx//PWM7DnyB+8rLivm3yv/TUl5CecMPIeh3YYGpVslUFlFGWv3rqWwtJCBCQMb/XuVVpSy\nevdq55tf7jKW71xOVIeo6m/A/eP606l9p1pHK0Ctb8l9o/s2uhvh+6LveXnVy+wq2FX9rTq+czzt\npF2tz4iQCM5MOZNxR42jY3sboDuYsvKzyCvOY2TPka7p/mmI6+6VJCLtgPU4xecdwBJgsqquDVgm\nFihS1TIR+Tlwqqqm1bOusDYM6enOgDe//KUz7GVsbNiiNMmBgwfIys+iQ0SH6p1Ix/YdOVh+kOz9\n2dWH4wuzF/LRpo84se+JTBw+kZOPOpntvu3Vr+fsz6FCaw7kKiorql8/WH6QAfEDanXDAHRs17Fm\nx9Upnj1Fe3h3/bsM6z6MK4ZfwcVDLyY5LrlWN4ExJrhc1zCAc7oq8CTOqbEvqOqjInIjzpHDs/6j\nipeASmA1cIOq7q9nPWFrGBYtgssuc4bIPPPMQy/bWn33ZRVlbD2wtXqnva94X01fZvH3bMnbQmZe\nJiXlJSTHJVNRWVH9bbJ9RHvKMstIPi65+hvrmN5juPToS+nepXuTs+SX5LMlbwtFZUW15heXF9fq\nz+8S2YVLj76Uo2KOavS63VoLqcsLOb2QESxnsLmyxqCqHwFD68x7JuD54rqvu8kXX8Dll8Orrx6+\nUQilrPys6jNDlmxfwnbfdnp37c2A+AEkxSbRrXM34jvH0ye6DwmdE0iJS2FA/AB6dOlRqztEVSkq\nK2Lx54sZf9b4oGSL6xTH8b2PD8q6jDHhZ/dKOoTFi507nf7v/8KPf9yqH02lVvJFzhe8vuZ1Ptj4\nAb5SH2cPOJtzBjinEabEpRDZLrJ1QxljPMeVXUnB0toNw+rVcNZZzl1Qzz+/dT4zrziPb3K/4b0N\n7/HGmjdIjEpk4vCJXHL0JRzb49igF1uNMW2f3UQvSHbvhosucm6F3dRGoTH3T8kvyefbHd/yxpo3\nePTzR7nyjSsZ9LdBJP01iQc/e5DuUd355LpPWHnTSu474z5G9hwZ9EbBK/d5sZzB44WMYDndwA3X\nMbhKSYkzlvKUKXDNNcFZ58Hyg8zLnMdrq1/jw00fUlxWzMCEgdVXbl44+EIeOOMBV135aIw5cllX\nUgBVpzEoLYU5c5xR1Vpi1a5V/PHLP/LfDf9lRI8RTBw+sfqsHOsWMsa0BleeleQlv/sdbNjgXLPQ\nkkZhf8l+ZqTP4OVVLzPt1Gk8evajP7g/jDHGuJXVGPzeew+eew7eeQeiopq3DlXl3hfuZfi/hlNQ\nWsCaW9Zw1yl3ubJR8Er/qOUMHi9kBMvpBnbEAOTmws9/Dm++Cb17N/39FZUVvLn2TR774jF86328\n+Ys3GXfUuOAHNcaYVnDE1xgqKuDcc+H00+GBB5r23pLyEl7KeIknvnqCHl16MO3UaVw45EK7xYMx\nxjWsxtAMf/yjU2y+997DL7vx+418lv0Zy3Kd2+Su3rOa1JRUZl4ykx8l/Sj0YY0xphUc0V9tlyyB\nP/8ZXn750GMwV2oljyx6hFNfPJWF2Qs5OvFo/vzjP7PrV7t4f8r7tRoFr/Q7Ws7g8kJOL2QEy+kG\nR+wRw4EDMHky/OtfkHSIAcJ2Fuzkmrev4WD5QZZNXUa/2H6tF9IYY8LgiK0x/Pa3kJMDs2c3vMzc\nTXO5/p3rmTpmKr89/be0jzhi21FjjEfZvZIaqbAQUlLgyy9h8OAfvr6zYCe/nvdrPsv6jNk/mU1q\nSmpQPtcYY1qb3SupkV580TkLqW6jUF5ZzpOLn2TEv0bQp2sf1tyypsmNglf6HS1ncHkhpxcyguV0\ngyOub6S8HP7yF6fgHCjXl8t5L59HYlQii65fxLDuw8IT0BhjwuyI60p6/XV48kn4/PPa8695+xq6\nR3XnT+f+ye5jZIxpM+w6hsNQda5b+M1vas9fvG0xn2z5hHW3rLNGwRhzxDuiagyLFkF+vjPWQpVK\nreSOj+7gkfGP/GAw++bwSr+j5QwuL+T0QkawnG4Q8oZBRCaIyDoR2SAi0+p5PUZE3hWRDBFZJSJp\nocryxBNw113QLmDIg3+v/DcAV4+8OlQfa4wxnhLSGoOIRAAbgPFALrAUmKSq6wKWuQeIUdV7RCQR\nWA/0VNXyOutqUY1h7VpITYWsLOjc2ZlXUFrA0H8M5Y2Jb3Byv5ObvW5jjHErN56uOhbYqKrZqloG\nzAEuqbOMAlV9ONHA93UbhWB49lm48caaRgHgkUWPcFb/s6xRMMaYAKFuGPoCWwOmt/nnBfoHMFxE\ncoEVwB2hCLJwIUyYUDOdmZfJM8ue4dHxjwb1c7zS72g5g8sLOb2QESynG7jhrKQfA8tV9SwRGQjM\nE5GRqlpQd8G0tDRSUlIAiIuLY9SoUaSmpgI1f6T6pgsKYM2adAoKAFIpqyjj4kcuZmLSRPrG9D3s\n+5syXSVY6wvVdEZGhqvy2PYM/XRGRoar8nh92q3bMz09nVmzZgFU7y+bKtQ1hnHADFWd4J+eDqiq\nPhawzH+BR1T1C//0AmCaqn5TZ13NrjEsWOCMtVB17cK0edNYtXsV/53yXxs7wRjTprmxxrAUGCQi\nySISCUwC3q2zTDZwNoCI9ASGAJnBDPHFF3Dqqc7z9ze8z6vfvcrsn8y2RsEYY+oR0j2jqlYAtwIf\nA6uBOaq6VkRuFJGp/sV+B5wiIiuBecDdqrovmDmqGoat+7dyw7s38Mrlr5AYlRjMj6hWtwvErSxn\ncHkhpxcyguV0g5DXGFT1I2BonXnPBDzfgVNnCImKCvj6a5j5UhkT35zEL8b9wkZbM8aYQ2jz90pa\nuRImToSfvfAY6dnpvD/lfetCMsYcMdxYYwi7qm6kuZvncsdJd1ijYIwxh9Hm95JffAEnn1LBN7nf\ncGKfE0P+eV7pd7ScweWFnF7ICJbTDY6IhqH3sevp0aUH3aK6hTuOMca4XpuuMeTmwrHHwuPzZrJg\nyzxeufyVEKUzxhh3shpDHV9+CaecAt/kLuGkvieFO44xxnhCm24YqgrPS3KXMLbv2Fb5TK/0O1rO\n4PJCTi9kBMvpBm2+YThhXDFr96xlVK9R4Y5jjDGe0GZrDEVF0L07vL/iK+765FaWTV0WwnTGGONO\nVmMIsGSJU3hesXcJY/u0TjeSMca0BW22YQhHfQG80+9oOYPLCzm9kBEspxu02Ybhq6+cM5KWbG/d\nhsEYY7yuzdYYjj4aXnx1HxM+SiFvWh7tItqFMJ0xxriT1Rj8VCEnB3a1X8qYPmOsUTDGmCZokw3D\n3r3QqRN8t6/1L2zzSr+j5QwuL+T0QkawnG7QJhuG7GxITm79wrMxxrQFbbLG8NZbMOsl5evTerFs\n6jKOijkqxOmMMcadrMbgl50NCf2zaSft6BvdN9xxjDHGU9pkw5CTAxW9nG4kkSY1lC3mlX5Hyxlc\nXsjphYxgOd0g5A2DiEwQkXUiskFEptXz+q9EZLmIfCsiq0SkXETiWvKZ2dmQ38XqC8YY0xwhrTGI\nSASwARgP5AJLgUmquq6B5S8E7lTVs+t5rdE1hhNOAL3uTB45/x7OHXhus/MbY4zXubHGMBbYqKrZ\nqloGzAEuOcTyk4FXW/qh2dmw4+BGhnYb2tJVGWPMESfUDUNfYGvA9Db/vB8Qkc7ABODNlnxgUREc\nKC5mX8nesJyN5JV+R8sZXF7I6YWMYDndoH24AwS4CPhcVfMbWiAtLY2UlBQA4uLiGDVqFKmpqUDN\nH6lXr1R6Hp0Je3qwaOGiH7we6ukqrfV5zZ3OyMhwVR7bnqGfzsjIcFUer0+7dXump6cza9YsgOr9\nZVOFusYwDpihqhP809MBVdXH6ln2LeA1VZ3TwLoaVWP4+GP41fPvkHTpc/x3yn9b9gsYY4zHubHG\nsBQYJCLJIhIJTALerbuQiMQCZwDvtPQDc3KgU+/NDEoY1NJVGWPMESmkDYOqVgC3Ah8Dq4E5qrpW\nRG4UkakBi14KzFXV4pZ+ZnY2aPwmBsYPbOmqmqVuF4hbWc7g8kJOL2QEy+kGIa8xqOpHwNA6856p\nM/0S8FIwPi8nB4qHb2ZQwkXBWJ0xxhxx2ty9klJTYcN5A0n/nw8Z0m1I6IMZY4yLubHG0Oqyt5ax\nt3QbKXEp4Y5ijDGe1KYahooK2F6YTZ/oPkS2iwxLBq/0O1rO4PJCTi9kBMvpBodtGETkNhGJb40w\nLbVzJ3Tpt4nB3eyMJGOMaa7D1hhE5Hc4p5l+C7yIc/ZQqxcmGlNj+PJLmPLXf3Letd/x1IVPtVIy\nY4xxr5DUGFT1t8Bg4AUgDdgoIn8QkfCcD3oIOTnQoecmBia4LpoxxnhGo2oM/q/qO/2PciAeeENE\nHg9htibLzobKuPBe3OaVfkfLGVxeyOmFjGA53eCw1zGIyB3AtcBe4Hng16pa5r+l9kbg7tBGbLyc\nHCjsFb6L24wxpi1oTI3hQeBFVc2u57Vhqro2VOHqfNZhawwXXFjJ/LFd2Dd9L10iu7RGLGOMcbVQ\nXcfwIbAv4ENiROQkgNZqFBpr857txETGW6NgjDEt0JiG4SmgIGC6wD/PdbYWhv9UVa/0O1rO4PJC\nTi9kBMvpBo1pGGr14ahqJe4axwGA/fuhPHozQ7tbfcEYY1qiMTWGt4B0ao4SbgbOVNVLQxvtBzkO\nWWNYuRLO+sN0fnFzNPeefm8rJjPGGPcKVY3h/wGnANtxhuY8CZh6yHeEQU4OtO9h4zAYY0xLNeYC\nt92qOklVe6hqT1Wdoqq7WyNcU2RnQ3lM+C9u80q/o+UMLi/k9EJGsJxu0JjrGDoBNwDHAJ2q5qvq\nz0KYq8myc5SCqM12DYMxxrRQY2oMrwPrgCnAQ8BVwFpVvSP08WrlOGSN4dKrdrPg6GH47vu+FVMZ\nY4y7harGMEhV7wMK/SOtXYBTZ3CVzXmb6NfV6gvGGNNSjWkYyvw/80VkBBAL9AhdpObZXrSZwd3C\n343klX5HyxlcXsjphYxgOd2gMQ3Ds/7xGH4LvAusAR5r7AeIyAQRWSciG0RkWgPLpIrIchH5TkQ+\nbey6Ax3osInhveyIwRhjWuqQNQb/jfJ+qqqvNWvlzvs3AOOBXGApMElV1wUsEwt8CZyrqttFJFFV\n99azrgZrDGVlEDnpambedw5po65rTlRjjGmTgl5j8F/l3JK7p44FNqpqtqqWAXOAS+osMwV4U1W3\n+z/zB43C4fh80K77JgbbNQzGGNNijelKmi8ivxKRfiKSUPVo5Pr7AlsDprf55wUaAiSIyKcislRE\nrmnkuqv5fKCxWxgQP6Cpbw06r/Q7Ws7g8kJOL2QEy+kGjbnn0ZX+n7cEzFMgWHvh9sBo4CygC/CV\niHylqpvqLpiWlkZKSgoAcXFxjBo1itTUVAoKoHLH96xasore43sDNX+01NTUVp2uEq7Pb+x0RkaG\nq/LY9gz9dEZGhqvyeH3ardszPT2dWbNmAVTvL5vqsNcxtISIjANmqOoE//R0nAHhHgtYZhrQSVUf\n9E8/D3yoqm/WWVeDNYaFXx4kdW40lQ+Whug3McYYb2pOjaExVz5fW998VZ3diPUvBQaJSDKwA5gE\nTK6zzDvA30WkHdAR5xqJPzdi3dV25/toVxHdlLcYY4xpQGNqDCcGPE4DZgAXN2blqloB3Ap8DKwG\n5qjqWhG5UUSm+pdZB8wFVgKLgWdVdU1Tfok9B3x0qHRHw1C3C8StLGdweSGnFzKC5XSDwx4xqOpt\ngdMiEodzdlGjqOpHwNA6856pM/0E8ERj11nX974CIuna3LcbY4wJ0OQag4h0AL5T1aGHXTiIDlVj\n+OVfvuSVvXex8/dftWYkY4xxvVDVGN7DOQsJnK6n4UCzLngLlbwiH53buaMryRhjvK4xNYYngD/5\nH48Ap6vq9JCmaqL9xQV0bueOriSv9DtazuDyQk4vZATL6QaNuY4hB9ihqiUAItJZRFJUNSukyZrg\nQImPrlF2xGCMMcHQmPEYvgFOUdVS/3Qk8IWqntgK+QJzNFhjOOn2v9M1eT0L7vpHa0YyxhjXC9V4\nDO2rGgUA//PIpoYLpYJSHzEd7YjBGGOCoTENwx4Rqb5uQUQuAZp8o7tQKiovIKaz1RiawnIGlxdy\neiEjWE43aEyN4f8BL4tIVT/NNqDeq6HDpbjSR3xUr3DHMMaYNqHR1zGISFcAVS0IaaKGP7/BGkP8\n9Wn84rIzuP+i61s5lTHGuFtIagwi8gcRiVPVAlUtEJF4Efld82MG30EtoFtXd3QlGWOM1zWmxnCe\nquZXTahqHnB+6CI1XVmEj8QYdxSfvdLvaDmDyws5vZARLKcbNKZhaCciHasmRKQzzl1QXUEVyiN8\n9IhzR8MV45AJAAAXx0lEQVRgjDFe15jrGKYBFwEzAQHSgHdV9fGQp6udo94aQ0kJdL7rWFbc/zIj\ne45szUjGGON6IblXkqo+JiIrgLNx7pk0F0huXsTg8/kgomMBXSOtxmCMMcHQmK4kgF04jcJEnCE4\n14YsURP5fEBHH9GR7uhK8kq/o+UMLi/k9EJGsJxu0OARg4gMwRltbTLOBW3/h9P1dGYrZWsUnw+0\ng49ou/LZGGOCosEag4hUAouAG1R1k39epqoOaMV8gXnqrTF8urCUsxZEUTmjDJEmdaMZY0ybF+zr\nGC7DGaf5UxF5TkTG4xSfXWXP/gLaV0Zbo2CMMUHSYMOgqv9R1UnA0cCnwJ1ADxF5SkTOba2Ah+Om\n8Z7BO/2OljO4vJDTCxnBcrrBYYvPqlqoqq+o6kXAUcByYFpjP0BEJojIOhHZ4D/1te7rZ4hIvoh8\n63/8tim/wPc+Hx1xT8NgjDFe1+Qxn5u0cpEIYAMwHsgFlgKTVHVdwDJnAHep6sX1r6V6uXprDHc+\nsZg5+Xew83dfBzW7Mca0BaEaj6ElxgIbVTVbVcuAOcAl9SzX7AJBfrGN92yMMcEU6oahL7A1YHqb\nf15dJ4tIhoi8LyLDm/IB+4t9RLV3T8PglX5HyxlcXsjphYxgOd2gMeMxhNoyIElVi0TkPOA/wJD6\nFkxLSyMlJQWAuLg4Ro0axYGSArpEd63+I6WmpgKEbbqKW/I0NJ2RkeGqPLY9Qz+dkZHhqjxen3br\n9kxPT2fWrFkA1fvLpgp1jWEcMENVJ/inpwOqqo8d4j1bgDGquq/O/HprDGNv/SfRA1az4Jf/Cm54\nY4xpA9xYY1gKDBKRZBGJBCYB7wYuICI9A56PxWms9tFIBWU23rMxxgRTSBsGVa0AbgU+BlYDc1R1\nrYjcKCJT/Yv9VES+E5HlwF+BK5vyGUXlPteM9wze6Xe0nMHlhZxeyAiW0w1CXmNQ1Y+AoXXmPRPw\n/J/AP5u7/uKKAuKjujc/oDHGmFpCWmMIpoZqDHHX/YxfTjyV+y+8IQypjDHG3dxYYwi5g/hIjLYa\ngzHGBIvnG4YyKSAxxmoMTWU5g8sLOb2QESynG3i6YVCFinY+esTaEYMxxgSLp2sMhYUQffdxfHvf\nS4zqNSpMyYwxxr2OuBqDzwfS0WfjPRtjTBB5vmEgssA14z2Dd/odLWdweSGnFzKC5XQDzzcMGmnj\nPRtjTDB5usaw4NNyzv6sI5UPlNvQnsYYU48jrsawZ38B7Su6WqNgjDFB5OmGYe8BHx3UXd1IXul3\ntJzB5YWcXsgIltMNvN0w+HxE2njPxhgTVJ6uMdz++Ne85ruVnQ8vDVMqY4xxtyOuxpBfVGDjPRtj\nTJB5umFw23jP4J1+R8sZXF7I6YWMYDndwNMNw4ESH107uKthMMYYr/N0jeGEm54idsgKFvzi6TCl\nMsYYdzviagyFZT5iOtkRgzHGBJOnG4aiCh9xnd3VMHil39FyBpcXcnohI1hONwh5wyAiE0RknYhs\nEJFph1juRBEpE5HLGrvu4gofcVF2Z1VjjAmmkNYYRCQC2ACMB3KBpcAkVV1Xz3LzgGLgRVV9q551\n/aDGEHvN//CrySdx3/k/D9FvYIwx3ubGGsNYYKOqZqtqGTAHuKSe5W4D3gB2N2XlpTbeszHGBF2o\nG4a+wNaA6W3+edVEpA9wqao+BTSpVSuL8JEY466GwSv9jpYzuLyQ0wsZwXK6QftwBwD+CgTWHhps\nHNLS0khJSQEgJiaOit3bSIxxagxVf6TU1NSwTldxS56GpjMyMlyVx7Zn6KczMjJclcfr027dnunp\n6cyaNQugen/ZVKGuMYwDZqjqBP/0dEBV9bGAZTKrngKJQCEwVVXfrbOuWjWGAwcgfvrxLL3vBUb3\nHh2y38EYY7ysOTWGUB8xLAUGiUgysAOYBEwOXEBVB1Q9F5GZwHt1G4X6+HwgnXyuGtbTGGPagpDW\nGFS1ArgV+BhYDcxR1bUicqOITK3vLY1dtzPes4+uke46XbVuF4hbWc7g8kJOL2QEy+kGIa8xqOpH\nwNA6855pYNmfNXa9Ph9ohwIb79kYY4LMs/dKmreggnMXRVLxQBkR4ukLuI0xJmTceB1DyOzZX0C7\nyihrFIwxJsg8u1fde6CASJeN9wze6Xe0nMHlhZxeyAiW0w3ccB1Ds3xv4z0b0+pSUlLIzs4OdwxT\nj+TkZLKysoKyLs/WGG57dCmvF93Ezoe+CWMqY44s/v7qcMcw9Wjob3NE1Rjyinx0aueuU1WNMaYt\n8GzDcKC4gC7t3NeV5JV+R8sZXF7I6YWMxh282zCU+OhqVz0bY0zQebbGMObGp4kb9i0L7nw2jKmM\nObJYjcG9rMYAFJYV2HjPxpiguummm/j9738f9GW9xrMNQ1G5+8Z7Bu/041rO4PJCTi9kbKn+/fvz\nySefNPv9Tz31FPfee2/Ql/UazzYMxZU+4qPc1zAYY9ypoqIi3BE8w7MNQ4n6iO/qvtNVqwbOcDvL\nGVxeyOmFjC1x7bXXkpOTw4UXXkhMTAx//OMfiYiI4MUXXyQ5OZnx48cDcMUVV9C7d2/i4+NJTU1l\nzZo11eu4/vrruf/++wH47LPP6NevH3/+85/p2bMnffv2rR4Ap6nL7tu3j4suuojY2FhOOukk7rvv\nPk477bTQb5Rm8mzDUEqBjfdsjKk2e/ZskpKSeP/99zlw4ABXXHEFAAsXLmTdunXMnTsXgPPPP5/N\nmzeze/duRo8ezVVXXdXgOnfu3InP5yM3N5fnn3+eW265hf379zd52Ztvvpno6Gh2797NrFmzeOml\nlxBpUj24VXm2YSiP8NHdZeM9g3f6cS1ncHkhZ2tlFAnOo7kCz8wRER588EE6d+5Mx44dAWeI4Kio\nKDp06MD999/PihUr8Pl89a4rMjKS++67j3bt2nHeeefRtWtX1q9f36RlKysreeutt3jooYfo2LEj\nw4YN47rrrmv+L9gKPNkwlJVBZQcfCS7sSjLmSKcanEewHHXUUdXPKysrmT59OoMGDSIuLo7+/fsj\nIuzdu7fe93br1o2IiJrdZFRUFAUFBU1ads+ePVRUVNTK0a9fv5b+WiHlyYahoAAiOrnzdFWv9ONa\nzuDyQk4vZGyp+rpnAue98sorvPfee3zyySfk5+eTlZWFqob02ozu3bvTvn17tm3bVj1v69atIfu8\nYPBkw+DzQYSN92yMqaNXr15kZmYC1LvD9/l8dOzYkfj4eAoLC7nnnntC3tcfERHBZZddxowZMygu\nLmbdunXMnj07pJ/ZUiFvGERkgoisE5ENIjKtntcvFpEVIrJcRJaIyKmHW2e/fpDYx+fKYT290NcM\nljPYvJDTCxlbavr06Tz88MMkJCTw5ptv/mCnf+2115KUlETfvn0ZMWIEp5xySpPW35RGJHDZv//9\n7+Tn59O7d2+uu+46pkyZUl3zcKWqVjUUD5yGZxOQDHQAMoCj6ywTFfD8WGBtA+vSQF1+30X3l+xX\nt/n000/DHaFRLGdweSFnMDLW/X9ommfatGmalpYW1HU29Lfxz2/Svjuk90oSkXHAA6p6nn96uj/k\nYw0sfzLwvKoeU89rWpW1Uitp/1B7yu8vt6E9jWlFdq+k5lm/fj2lpaUce+yxLFmyhAsuuIAXX3yR\niy66KGifEcx7JYV6BLe+QGCVZRswtu5CInIp8AjQHbjgcCstLC0kqoON92yM8Qafz8fkyZPZsWMH\nPXv25Ne//nVQG4Vgc8WeVVX/o6rDgEuB3x1ueV+pj66R7jxV1Sv9uJYzuLyQ0wsZ26oTTjiBjRs3\nUlBQwObNm7n77rvDHemQQn3EsB1ICpg+yj+vXqr6uYgMEJEEVd1X9/W0tDRSUlI4WH6Qc0rPIT09\nvfoUvKp/9OGeruKWPA1NZ2RkuCqPbc/QT2dkZATt72HcKz09vfp2HCkpKc1aR6hrDO2A9cB4YAew\nBJisqmsDlhmoqpv9z0cD76jqD67+qDsegzGm9VmNwb08U2NQ1QoRuRX4GKfb6gVVXSsiNzov67PA\n5SJyLVAKFANXhDKTMcaYQwt5jUFVP1LVoao6WFUf9c97xt8ooKqPq+oIVR2tqqeq6lehzhRKXjnk\ntpzB5YWcXsho3MEVxWdjjDHuYQ1DkHnlfjSWM7i8kNMLGcOhaiyFKiNGjGDhwoWNWrapvDIcaKjP\nSjLGGNcLvH3Fd9991+hlD+Wll17i+eefZ9GiRdXznnrqqeYFbGV2xBBkXunHtZzB5YWcXsjYlqiq\nqwfjORRrGIwxbcLjjz/OxIkTa8278847ufPOO5k1axbDhw8nJiaGQYMG8eyzzza4nv79+/PJJ58A\nUFJSQlpaGgkJCYwYMYKlS5fWWvaxxx5j0KBBxMTEMGLECP7zn/8AsG7dOm666Sa++uoroqOjSUhI\nAGoPBwrw3HPPMXjwYBITE7n00kvZsWNH9WsRERE888wzDBkyhISEBG699daWbaCmaOrNlcL1wG7e\nZUzYufn/YXZ2tnbp0kULCgpUVbWiokJ79+6tX3/9tX7wwQeamZmpqqoLFy7UqKgoXb58uaqqpqen\na79+/arXk5KSogsWLFBV52Z3p59+uubn5+u2bdt0xIgRtZZ94403dOfOnaqq+tprr2mXLl2qp2fN\nmqWnnXZarYxpaWl63333qarqggULNDExUTMyMrS0tFRvu+02Pf3006uXFRG96KKL9MCBA5qTk6Pd\nu3fXuXPnNvj7N/S3oRk30bMagzEmqOTB4HSf6ANNu5AuKSmJ0aNH8/bbb3P11VezYMECunTpwtix\ntW/Pdtppp3HuueeyaNEiRo0adch1vv766zz99NPExsYSGxvL7bffzsMPP1z9+uWXX179fOLEifzh\nD39gyZIljboP0iuvvMINN9zAcccdB8AjjzxCfHw8OTk5JCU5N4y45557iI6OJjo6mjPPPJOMjAzO\nPffcRm+T5rKGIcjSA27T4WaWM7i8kLO1MjZ1hx5MkydP5tVXX+Xqq6/m1VdfZcqUKQB8+OGHPPTQ\nQ2zYsIHKykqKi4sZOXLkYdeXm5tba0jO5OTkWq/Pnj2bv/zlL2RlZQFQWFjY4DCh9a17zJgx1dNd\nunShW7dubN++vbph6NmzZ/XrhxpWNNisxmCMaTMmTpxIeno627dv5+233+aqq66itLSUn/70p9x9\n993s2bOHvLw8zjvvvEbd2qN37961huHMzs6ufp6Tk8PUqVP517/+RV5eHnl5eRxzzDHV6z1c4blP\nnz611ldYWMj3339fqyEKF2sYgszt3xqrWM7g8kJOL2RsqcTERM444wyuv/56BgwYwJAhQygtLaW0\ntJTExEQiIiL48MMP+fjjjxu1viuuuIJHHnmE/Px8tm3bxj/+8Y/q1woLC4mIiCAxMZHKykpmzpxZ\n61TXnj17sm3bNsrKyupd9+TJk5k5cyYrV67k4MGD/OY3v2HcuHEtuk4iWKxhMMa0KVOmTGHBggVc\nddVVAHTt2pW//e1vTJw4kYSEBObMmcMll1zS4PsDv+k/8MADJCUl0b9/fyZMmMC1115b/dqwYcO4\n6667GDduHL169WL16tX86Ec/qn79rLPO4phjjqFXr1706NHjB58zfvx4Hn74YS677DL69u3Lli1b\nmDNnTr056psOpZDeXTWYvHJ3VS/0NYPlDDYv5AxGRru7qnsF8+6qdsRgjDGmFjtiMMY0mh0xuJcd\nMRhjjAkZaxiCzCv3o7GcweWFnF7IaNzBGgZjjDG1WI3BGNNoVmNwL8+M+WyMaVuSk5M9eyvptq7u\n7TpaIuRdSSIyQUTWicgGEZlWz+tTRGSF//G5iBwb6kyh5JV+XMsZXF7IGYyMWVlZIb+T8qeffhr2\nuzl7MWfV/ZqCIaQNg4hEAP8AfgwcA0wWkaPrLJYJnK6qxwG/A54LZaZQy8jICHeERrGcweWFnF7I\nCJbTDUJ9xDAW2Kiq2apaBswBal2LrqqLVXW/f3Ix0DfEmUIqPz8/3BEaxXIGlxdyeiEjWE43CHXD\n0BfYGjC9jUPv+P8H+DCkiYwxxhySa4rPInImcD3wo8Mt62bB7OcLJcsZXF7I6YWMYDndIKSnq4rI\nOGCGqk7wT0/HGWbusTrLjQTeBCao6uYG1mXnyBljTDO47XTVpcAgEUkGdgCTgMmBC4hIEk6jcE1D\njQI0/RczxhjTPCFtGFS1QkRuBT7GqWe8oKprReRG52V9FrgPSAD+Jc4J0mWqOrbhtRpjjAklz1z5\nbIwxpnV44l5Jh7tILlxE5AUR2SUiKwPmxYvIxyKyXkTmikhsmDMeJSKfiMhqEVklIre7NGdHEfla\nRJb7cz7gxpxVRCRCRL4VkXf9067LKSJZ/gtHl4vIEhfnjBWR10Vkrf/f6UluyykiQ/zb8Vv/z/0i\ncrsLc/5CRL4TkZUi8rKIRDYno+sbhkZeJBcuM3FyBZoOzFfVocAnwD2tnqq2cuCXqnoMcDJwi3/7\nuSqnqh4EzlTV44FRwHkiMhaX5QxwB7AmYNqNOSuBVFU9PqB71o05nwQ+UNVhwHHAOlyWU1U3+Lfj\naGAMUAi8jYtyikgf4DZgtKqOxCkVTG5WxnBfxn24BzAO+DBgejowLdy5AvIkAysDptcBPf3PewHr\nwp2xTt7/AGe7OScQBXwDnOjGnMBRwDwgFXjXrX93YAvQrc48V+UEYoDN9cx3Vc462c4FFrktJ9AH\nyAbi/Y3Cu839v+76IwaafpFcuPVQ1V0AqroT+OEo4GEiIik438YX4/xDcVVOf/fMcmAnME9Vl+LC\nnMBfgF8DgQU6N+ZUYJ6ILBWR//HPc1vO/sBeEZnp76Z5VkSicF/OQFcCr/ifuyanquYCfwJygO3A\nflWd35yMXmgYvM4V1X0R6Qq8AdyhqgX8MFfYc6pqpTpdSUcBY0XkGFyWU0QuAHapagZwqFOow749\ngVPV6fo4H6cL8TRctj1xvtmOBv7pz1qI0yvgtpwAiEgH4GLgdf8s1+QUkTicWw4l4xw9dBGRq+rJ\ndNiMXmgYtgNJAdNH+ee51S4R6QkgIr2A3WHOg4i0x2kU/ldV3/HPdl3OKqp6AEgHJuC+nKcCF4tI\nJvAqcJaI/C+w02U5UdUd/p97cLoQx+K+7bkN2Kqq3/in38RpKNyWs8p5wDJV3eufdlPOs4FMVd2n\nqhU4NZBTmpPRCw1D9UVyIhKJc5Hcu2HOFEio/c3xXSDN//w64J26bwiDF4E1qvpkwDxX5RSRxKqz\nJUSkM3AOsBaX5VTV36hqkqoOwPm3+ImqXgO8h4tyikiU/ygREemC0y++Cvdtz13AVhEZ4p81HliN\ny3IGmIzzhaCKm3LmAONEpJOICM62XENzMoa7kNPIosoEYD2wEZge7jwBuV4BcoGD/j/K9TiFn/n+\nvB8DcWHOeCpQAWQAy4Fv/dszwWU5j/VnywBWAvf657sqZ53MZ1BTfHZVTpy++6q/+aqq/zduy+nP\ndBzOF8AM4C0g1qU5o4A9QHTAPFflBB7A+UK1EngJ6NCcjHaBmzHGmFq80JVkjDGmFVnDYIwxphZr\nGIwxxtRiDYMxxpharGEwxhhTizUMxhhjarGGwRg/EakIuK3ytyJydxDXnSwiq4K1PmNCKdRDexrj\nJYXq3K8nVOyiIeMJdsRgTI16b4onIltE5DH/4CeLRWSAf36yiCwQkQwRmSciR/nn9xCRt/zzl4vI\nOP+q2vvvHvqdiHwkIh1b6fcypkmsYTCmRuc6XUkTA17LU2fwk3/iDCwD8HdgpqqOwrk9yt/98/8G\npPvnj8a59w/AYODvqjoC2A9cHuLfx5hmsVtiGOMnIgdUNaae+VtwRpfL8t+pdoeqdheRPUAvVa3w\nz89V1R4ishvoq6plAetIBj5WZxQt/PWL9qr6h1b55YxpAjtiMKZxtIHnTXEw4HkFVuMzLmUNgzE1\nDjXwzpX+n5OAr/zPv8C5DTPA1cAi//P5wM1QPSpd1VHIodZvjGvYNxZjanQSkW9xduAKfKSqv/G/\nFi8iK4ASahqD24GZIvIrnNsxX++ffyfwrIjcAJQDN+EMV2r9tsYTrMZgzGH4awxjVHVfuLMY0xqs\nK8mYw7NvT+aIYkcMxhhjarEjBmOMMbVYw2CMMaYWaxiMMcbUYg2DMcaYWqxhMMYYU4s1DMYYY2r5\n/ziZhwAlv7YOAAAAAElFTkSuQmCC\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(range(1, mlp.epochs + 1), mlp.train_acc_, label='training')\n", - "plt.plot(range(1, mlp.epochs + 1), mlp.valid_acc_, label='validation')\n", - "plt.xlabel('Epoch')\n", - "plt.ylabel('Accuracy')\n", - "plt.legend(loc='lower right')\n", - "plt.grid()\n", - "plt.show()" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -719,7 +550,7 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -730,7 +561,7 @@ "text": [ "## TfMultiLayerPerceptron\n", "\n", - "*TfMultiLayerPerceptron(eta=0.5, epochs=50, hidden_layers=[50, 10], activations=['logistic', 'logistic'], optimizer='gradientdescent', momentum=0.0, l1=0.0, l2=0.0, dropout=1.0, decay=[0.0, 1], minibatches=1, random_seed=None, print_progress=0, dtype=None)*\n", + "*TfMultiLayerPerceptron(eta=0.5, epochs=50, hidden_layers=[50, 10], n_classes=None, activations=['logistic', 'logistic'], optimizer='gradientdescent', momentum=0.0, l1=0.0, l2=0.0, dropout=1.0, decay=[0.0, 1.0], minibatches=1, random_seed=None, print_progress=0, dtype=None)*\n", "\n", "Multi-layer perceptron classifier.\n", "\n", @@ -743,12 +574,20 @@ "- `epochs` : int (default: 50)\n", "\n", " Passes over the training dataset.\n", + " Prior to each epoch, the dataset is shuffled\n", + " if `minibatches > 1` to prevent cycles in stochastic gradient descent.\n", "\n", "- `hidden_layers` : list (default: [50, 10])\n", "\n", " Number of units per hidden layer. By default 50 units in the\n", " first hidden layer, and 10 hidden units in the second hidden layer.\n", "\n", + "- `n_classes` : int (default: None)\n", + "\n", + " A positive integer to declare the number of class labels\n", + " if not all class labels are present in a partial training set.\n", + " Gets the number of class labels automatically if None.\n", + "\n", "- `activations` : list (default: ['logistic', 'logistic'])\n", "\n", " Activation functions for each layer.\n", @@ -809,11 +648,11 @@ "\n", "**Attributes**\n", "\n", - "- `weights_` : 2d-array, shape=[n_features, n_classes]\n", + "- `w_` : 2d-array, shape=[n_features, n_classes]\n", "\n", " Weights after fitting.\n", "\n", - "- `biases_` : 1D-array, shape=[n_classes]\n", + "- `b_` : 1D-array, shape=[n_classes]\n", "\n", " Bias units after fitting.\n", "\n", @@ -825,9 +664,9 @@ "\n", "
\n", "\n", - "*fit(X, y, init_weights=True, override_minibatches=None, n_classes=None, X_valid=None, y_valid=None)*\n", + "*fit(X, y, init_params=True)*\n", "\n", - "Learn weight coefficients from training data.\n", + "Learn model from training data.\n", "\n", "**Parameters**\n", "\n", @@ -840,29 +679,11 @@ "\n", " Target values.\n", "\n", - "- `init_weights` : bool (default: True)\n", - "\n", - " (Re)initializes weights to small random floats if True.\n", - "\n", - "- `override_minibatches` : int or None (default: None)\n", - "\n", - " Uses a different number of minibatches for this session.\n", - "\n", - "- `n_classes` : int (default: None)\n", - "\n", - " A positive integer to declare the number of class labels\n", - " if not all class labels are present in a partial training set.\n", - " Gets the number of class labels automatically if None.\n", - " Ignored if init_weights=False.\n", + "- `init_params` : bool (default: True)\n", "\n", - "- `X_valid` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n", - "\n", - " Optional validation set to store the validation accuracy values\n", - " for each epoch via self.valid_acc_\n", - "\n", - "- `y_valid` : array-like, shape = [n_samples]\n", - "\n", - " Target values for X_valid\n", + " Re-initializes model parametersprior to fitting.\n", + " Set False to continue training with weights from\n", + " a previous model fitting.\n", "\n", "**Returns**\n", "\n", @@ -938,15 +759,6 @@ "with open('../../api_modules/mlxtend.tf_classifier/TfMultiLayerPerceptron.md', 'r') as f:\n", " print(f.read())" ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": { - "collapsed": true - }, - "outputs": [], - "source": [] } ], "metadata": { diff --git a/docs/sources/user_guide/tf_classifier/TfMultiLayerPerceptron_files/TfMultiLayerPerceptron_15_0.png b/docs/sources/user_guide/tf_classifier/TfMultiLayerPerceptron_files/TfMultiLayerPerceptron_15_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d4055e81151582fa642c60e847051e2e19562f82 GIT binary patch literal 7729 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 S;Q>!MA%OlxOv!o2+y4RDEq4z9 literal 10991 zcmbt)2T)T_*EbzO5CIVp5JfstBOo=X^rnacN*4^h8A|9?x*&)^=t@<(0U{6xN)rh| zdJmll0YVWX1d=cQpJ(1O@67wnH(w@qcJJP^d(ZBkJ?D4NIf)NVbXl3NGE-4evFht- zJ))wb_NH9S=NKq0^Ymk9l!6X?Pyg{b$}jYsQv&6l$w%)gn2PE=$KQ*3WIp_qit0L* zzSiBxko@iWpnR_J0>a)p`ai2d_Mq(C z=>yl=wr?nt^Iz1F@-VCDTY!Y%!Rj8A4)(KgK><|V0|eYBYmB2X1A%!$z)J{DS=b>c z0QBaC3ietcx*%I?-cw*K!9UF(-JaoA019Y=wmXB`2CILdNKT-zQ~5eDdLHTqg&KUo z&1 zT2O$BkLa#2)>_$zWw-6LSwj4>b0Mucbv9heLy;y_57Vy%=0%`y;30flu z+Xfw_Kv`es1g1jUy+NvjTj6A*J&6bm7wE{X`!f&#lOjFcQw1raQ5`g=ys}-uQ7Bes zHXzOkL=QSr2Uy|ih~-e$w2?8+NTf2BM7@|lyOtki2f0Y&lvHGz&kL0OOB?|V_^xziPbKU8Lbv@@=tfkBUF-H6mf%q3HNb|QFvn<%v_ z3~*=NAB_T1u`*30JCQU#(iGCB8avGE1=7L_z=S*4=HnOPtNBC+oQyCzEMgE9?gpBT zvKsVggto5=+^1Ahq3@a$&>k7k_H88c0hRjA^#U(Yo}ew80*rh(aNLRNxF&};CmS8J zlOfN%Kz+vt*XVU<4$gweqQku^Scw8KoQCaW7V~Uq7}VT}3dkWC;+GSGiU6>{GZjVX zG%Ndov@DD{LUl4{TAB1)9uV>qD6M#mbh`CCqQeaY+)Ha`Lv2|{VE8+oBcb78NWD!P z7EWwFsppunnh~8Me`aLQi+TD)Zuk7+iwMk(POn88gv@tus>9AFq*KXAi&NwfHHPlw zq%MtyffxZ~ITbSxiOh=(jFcncm^8^^p6Xmv=jRwguZnHRB5ST8U_AzlE(p!ND?eFM zQY`}{W!c53ZD}T!!iKN-sMi0qYd&X5JGVs+W2k4mBd^o`1cGD^UZP)b4leN+641#X)!4r}41e6G~fe35$XSgM5KIdWynYNK(X>sS}yR*$?H2|GOl zT(o349kc7WGPNiGeAS6u43lfxfsID7ogrBv=fCvW9r@Tx`2=)_Pci1>WJ0)i2^WaV zDR(@*tE#$w15Q2hYxsD!y>M0@jI$%JPb1Ppc-NJTe`)`LOmMQd=nj#)bOlE~yDfVj zZ>dHH;s0aMO{ylO(b9G#5pc!xavAt588s0q2PO+;5a(z3JJ_pHcp5X5htTd*`&VGE zLU3)5GU2?vVam&^Q5~Ik008Wq1lGFxg=*{7FFnfe%bm*bIb}F(&gv8{4ORWm^7@m-_{Gi!ljpsj4JSAjh! zkcd>=L~Vtz4|oNj2lvyGgRygr=$7o$GZ^h39@}C%Z!(uMHhd}HJpir#il8kp=(Knd zJ6AyZ%)5(Dl1a2&SHRAlClP;N+3mmZq8nG9R5oH)C$Jl2-wxg}#Rf4#nDOoO_+)1U z^w1x@O_{<$h21N{(`V-}b=R?TZUEIwc-U`G>|8i@E?^Pc2n<)GXvTf`2D^PF(l)zd zv7p1Dvv-0Ujf<|Njw2o@`dgApTweX5_7w2}*7u;oJwavq%}cTf7$)|VZJQpAOKzw7 z!tp0fEIGh~C~|@HP&d3KlyA-7of!XeH+(7qp2jiWCTGw-toE89`70O^nfd8_KA1Ki zT;zien^(42@TESez3}NUA{@wDmQtX39&<#qnBO+7Jh|X)XWIRF`zRjD?*;;&)qb$) zd4_v!9q?HG@I+t=yBjVK%+=xL48MB^zggUYHk>#EXC4!GTRo(WK6Iqc z`f=MX3gGi`jMkTj%Ox(5KJfCC%o%s8kds{^!L>+m?VPfbRPTP`%)9FIQDr1zJ(K0! zd)61|794dx*jp9bLB&F|PW?cqQGLc2!8FCjk|I`D1g>3?i7SSSU%G^NYxW$ZE=b~{ z0Y}N?O^XgzGh*U*{jqcLov_XZP(TNiD|h;k?+($W4>2$xlJ}Gy^As13U;{v$8~19# z;TONmqk8|mFqVapOgHZ=pgNpDXQz{I_ri0@>IP6G0giJykj^v2ZYEDG!sw=)ZD|_6 zqso`h8Vh+#Fp`5?SCAO8!TSz8O@%5}rEm={v9(KjSNbsEGlmtm(}G@+_$L7*6=90I`v{gT?%Y?_nW{q#nLMuY6mOBm>0I_qUyI zgy0(*i_Z^gLyv><{qOZ7!o&MTfO3D>eLjMB)HE zRg-1W?WfjB$;k)vd{=pSgB(cb5ly>N<@o^NlFwsUDM1_a!(2BL^_4Lb_Ak^FI_0(B zW|g*P1&}4WO9<`K0k==yAF9(IAtICqUk@g78)<&E(rUd0C@C%mziNq&j@CR` zP@ObSOwfBo>7sQ{kMdZE>Yc!omuO$CkJiG?J4ZhqkB_&3LvCSz@iFz6^$+f1;^Oa@ zOPF^~dTi#%kaa;lX}*l|~?sej;2`n)t)IbeaXje^SUl_q+Q_NEFL_GBbgHn3UCx`gHFH9?c zzQQ9qYYW;SpdCQ9bw@^3EmFeW^KlV8L65P4 zIGl>bXKKQ=!^BcV4jVYTZfGB~r{Uw5>MkUfng zcbfzq)v#v?3bH>NYPA`7dRx(aG3Q4u9ncZqng=`Nu*MH@EO}KkSa4X z)AZOu*fI4QC%C=0SBEm`(YZMzFc=VmJ9;!y61%*-T-|8)_cVOl?TR}%%}c95VBoc< zmxnaYJZ5ow@u}DY?(jk=7{oA*Q2f`?Aj1h@AOTygaTt_bS{Yy=#fw?c+^(IGHhth+ zW4AmCh3heAAsS;Dcful<@AlmGa$lX{ty?RFnJ{~*7c_W3tGf5Uhy9g zGthna2;Pv&xDy)b+m}}2jqG?|RRNoj={JQZ>SY8x#uq~#%9WKEP>bewM*U@0~8h$|wJ(*Yow5=kJ|1bILg7+r}(>^0JwSeiJ9c%A1PmKR?bt8A#pa z|JzytTp=Fe2AY&?2dV|o(Hfn$e`W^l&LdcB4o^3a>>SQm-~+z%#*=FvR#v!(MKq(B zN@)URMC*{1rcL<`r%MRo$13*)2boi%3+Wp}=Q75Ft&?LI$Yeg%jq0~o0#CmnLiG(^ zQpj%a7wEaykU4>Wv`jd%O1$|CCSx5I!o#>4RpkzY3|&@L(qrJo0R%z z$Cj0PEp&ug`}Jz40R7Y)fAsl$tK@|Io=gKZnfT}FxvZ+BPsqvT8lBx0GUF81aU3^o zYDn^zoRkZmbBRm6nmgQ#wVG-!d*2atqbuHrDC33AVd~r6Ma3TvrwI6-_V)ouW-G8q z718imgIW&P29A=wO*R$iRVlfvRjIo8u*{Y;RGE_=6YDsu5%Rf8_5vhGhj`sirK@>s z7M@l#cf>j2Vc8|B6B?Zt0RfbS89GWY)I}fzl!{OG5AD{o1IZZ{>87|VKEJ5eHRQ8z?x;s&9D`xr+ZyYbJJ~Q971c}5HR+!e&DX-L zo;`c^W#7=^(Rf|bK42i|_;vPiAM!M&qA(=s!?)FY>nBaP>2`Oez6Z)0?%NcdrN_7- z#1dm9-z(uh|HI$3LM9?iS@^!eFZJFKJukdmyZAM0RO>t3qgvI4i5lx{f@hHTaY*$- zbK%X75W1KlJ`_73wYaq-7fw1ce}tQyoCN>Xe9Qf!FPFtdK{W*wnddKkE6XC^f2FE= zctuCIK*Qk&-PKRLQ}Bt9k%5jTqRZUK_g}sxW|TMRr12IIJY8Mgz9z9q%6dmfaq&n= zCD!4*U0s*HjY^kReo5#n47*je{g@)z6vlN%jpfT9k$;-rFEIhW{FeTA)xqBRhI@<8 zuflK3pCxU)$H`M)QE{t;ODUnsTzuG#t#Wh1UwFaSauWMwE1fR#?ks4MhkiRxX4qsZ zWXiezD2>J0QUqvhVq*W)YRGw;Nu`EjvOef3$>kbk$Q7J88Y5482b75)VE6rB>DRWu?bE_;?{Dy=(VK@{M?T?MkU#R@0MP~dC%XQ(~>*Eb|)1w zrpKnjL&!t5_7DO(Toq;;qo-Gvam84nKgUQAV1Cw6&c?5Bd+aXng{{7u-az@f5<@oS z-xqfx#EvVL5kz#`t>ak^=JV&39mbeEN9&Lq!5xP&-Y-fLDQkUKPoe)yNpO5zp)R}3 z-Yk?b`RBoF=dKP`;ud*0OK1QW9gC`DbL^0QWk^e%`e5;4I!Yah_a(Fa8y4j zAZr#^E}!&d#*89QRQt-`nKV|G6M4IEad3EbAsl2*!%o|C0G5x^92+5#!Bo)6rDF9k2Un#)N(%2 zsqqCxqhwvLEBp?>j&GXhuT$(VwK>LQdGrVDYH(H3UVE~e^_VW`P|JCoXXgRGhy&uK zNZxaLyk@PUFS;EBDv1^|Y)yMy_v!oL#f|HJaYVCteHDwZtHdABP}6UZ_C*SAtT~MS z)AhI`J2*!SVuhC*z=wQ{*GDsKJVuy*{XCh~)L!_HRn7fF`ZD5Q7QC=I zQPg=He#aBhZP^#(NvPPNA3|42CVlH~F6NADomq|au=Cu%Bg=K=oCmd+KU$ryB_$f}^vTVU%fh(rlg&Op zh8MW_{+Mk|==#LYr?tH7aG1?=kCg)67W^KO>Ny%`5G9lgA(mBnhe$gS-QF6;i0KLy zLi&-`ba<`A23btJ$~lL2#=t3Y2l4mm|6(A}IQK5W_{zG~k|%sV>ur+a&O%OJQt80v zY@Li0@fl>T&|<2^MRb;2U$9|egdH0yoM|@Nu6;If>d4xD^817C(6#My3(v|A^_8+8 zH-^^_e@(~SxF5IsjbG+rdu48c%+_iv&tDb&t2yZWj&)}i(!&9ptlF|uj+^PQTps5% zRKd}SPlrvkZp+M{aj23z-u~@FF`46B3e-H~;4!um<4Gw8;m6DBE`j}qhB?P8&@H#A z`^XIWS~B|3b%9oO0`X+PyrIcWQk$6UGBe%%=|$Cy@OpGGm2ZbGOL^;%AKT8H*>2X) z#G~T*3DbZxq{^ESjV>{a)etSAJdn-f`X+)p{(}9^O)$>^Opft&)-5R+)-CGp<7;v` zJKrtlV^rZ3ByRJKVnlzkJ^R5dF0GN0_4%HdXibQHpFyWoL|70i*7Z$^_JR8IdexNB zZRSgeGQ%r(oUSWW1)AE8b5_4O`BXSoJ^gM%z1~rHQN##(5#Vrj)nzzTl&Y=k`(&-= zyoimF1%Krmy)F_%buC+7_^EVH%*4+xHBq)wVd5L6853e?mxI)NAE&wDjEyl)Jk?d z)5CQPZ_MSXekYnCk-x*d+D@){<*CP%q^YVD%x9$6`V}3@4s4zqa1w(!XX~{1s}nH0 zR5C;E_M7zTUzRE+SKE{`L>r>vCy2I$P|+44%e)D%<(i(nE4NRb5iNi2E7r_s;zjgD zOEmD(g7W=i!Rs|nk058^6Gc&yVz+KF)-Lux9opDxI}h>cDVjEYJEKxj5bBkuB?vbSNK^W4O`4kiog?_I)CJnmn63~i>4VHP6Q;6aqVf~ zAFs3JSKqEoS)JUVW$dhX_?Z0!))5B`^{3`0o$yJkl0K)*a2dPrH?_31cs_G*aIo4} z;C=}`MfW;89w#lP5w53gJT}VH3FpkpMjjP-@goAqI(LnW2CU9Tb#%xZ<2I+*h{7Mb z0*8*>3G;Iim04Guo3o_Yy@6T@Mr%l@gC~L4NW+gRPh}&LQ=s zfoGvcso|dp^ru5EHuDc{El18Ng!}?q@`NaDzxVOxtSHjR92uFrt;=Ed?NMu^KQ7Dk zY0G6u#`=1YChfa-?v`*bo)X;$Mjxwlb0xB*thDalRUi_Ol!BIv3vX&>))Pr>gB=Ey zm7TRLClhwR+W^EgN)vi1ICrlnL`-VC2w$!rn|~NIRP+G8bFgFL=I;J$Hc)e7Qop>K z@>!1w1#2`lDQrzOK%;2mN8xxX6E)wf+S-XjHi83xPv24+e=!iuz(%4ABVJgn z@9J$b6zZMHvfj$RPH?oDM>ore(C?fkj$>=?s&G^e=2;vR;Pd;|2diMMCZAt$adDZB zz_^EQoiGj6eo1q_d={Hg*q*^W$3Gw;CT1TpsEaz;R!~FiGJwvGt~O7Gj!FCU{d@GA z5a-34x~XQ1JEat}`S4)kyctjmV; zC9c;W%8DG$o>hMQ$c(7AoXto+<5&&P^m(|O)#-=exCsSx`c3GURa4W(eFmQ?ZdL_9 zhY*f2E#V>G=p0pE^!%ISlGvD9#q=*3#*t-UVVyS?-rW+oIj~HR8}akTPM|nXV_cjk z>uUxw$dLn)>=*#gcOJHlpJv@od1{!Mufv z=H@u{kY-bJ#ma5w^rXPcyLl~kj&RSCIo9Re4cMLVks#N1^xZb16N);seKm&`Pr^F4 zrr|z^v^iqig5po_u?BA*04&@yQbbSqi77*cuz6qGK;#(eK|zp7X8gCpGjQCwt6Ej5Qy8 zt!@q~(0k0cHrT-RRZ4{4>a+A38qm0k0$0XI-^Kq9)ZIMDilKw*c{EW}$eeHAi%>EV ze4$l*ESeq$RX$*-MUpD=!RT?O3dZ;TQ>W#|l29O7$tW*?HJ)FwcE0}DQonXIN3dk*#)HQ9#wkXqpoq)9`x(mfHfJ6w1F=N`XipMHt@cWol*C zXCjn+fZMv2)pI=~WipL}R`vFZA%x4+X`chV+0S1_rK+my-4$g~ka+Y`{LP{#2n(Gi zf|_SgUKc(XZKw$1D_AjSjaKTXyJ=D0_KFw(#F15weqX0AkR7Yk>n}^;%mSHHq3F;w z5>ZNn9+UvgnbAPjZZe`Mz-;s_l_y~o(;mVbLfD}TPXj-oeZ4i`_Exm$)OT!yi%Uk{ zb!1xebk$jYMwEqYbT{fnrff=+Np*KIM`Fgu6e42KgW0DFyaOZQ@Kk8!z`)g)n+H3E z&p2bOnmz0>2*xjq(e6BIe|-LG6e%ewHS+1Lt5-K?vt-0KzCxWzjOV#Ez8`H1H25sx zl@Cx6Yj5uB_+WzUN=i$Gy!HW4w>jg0i&B(I zgcN7^1!`++=ZEfdLltl$S9#M)K7C4(30<1?JQxC!txP9X$*10O6shg}I5x@MXytXZ zHS6l7Azso4<+^l9)@`gojkt9)^mMP`@#E8X;%3q=c|b~|>148k`Y^)sFu7FHc```G zt|Mn{fE(UkDC;1>DN;q{rb0!<{OWHmfYIQS!wg+U4luIf!?N8pBFO(6(Y^bb=tNg6 zcw9OiEts(2oaaj3!m^VZ14N8+ew1ZnCXOCNwGq#~d~AyZP{>(ee$^0<@o`sK~a{(<08!HEk3l2e=G(r?**2GrLRvqI5nH8x zvhiZVd#4(hHwF3q>K4_VO}@dFUCnUI+3&As*qDY-qwK7McVBL%rhC=m=<#%C4Ws1~ z;#Bc-ry=G#MRJEM?eGy#Kg=S3)%lxfDA+1Hu2rhFNC^`;Ud6WKn6?!??0dsTj}$|2 z-bsBn+~{CfBHF0wY>|=wT{_1y%7)tJo&^4D-tmFz0}AYTS2-`UX_)=y;qGNuuI-WD z)a=`v7DY~09|qFHM!kxv7w2sXg1T6@rrX=L{htOYpN}{hRco%K#1q?pJ<`$F|6rI_ zvIh>cKOPmM)F)(Xebdmjg5BIRB2J0#8!;|gHP$UF!%l1-On15HS z9Rs{n53=E_>$vxTZbSe<$!p;-&ID|^%9*rc7hv*7jCR=y>*jF;I_6P57mACJrRTI0 zxyNw8Et3@1jB(rK`Dl@gmx&c3x|?OV0ENYksPAwxW9BuV1_ia%W_(VNzSRGr|E*(T z4IBz!G#4Gl^EiaB`PvrarbLS*`!O1VPr7~z7l=Rn_Bqc?9#Hz(cRepDwCFfcbhMnl zsQxxAIdV4AF_N|``vRbEotUeK6WG^xc3>$zN=>^5ZOWfcx{~qrMP)0qj!;KRt)d)ECTCj2 zo_SXk5F(ueqPY6ipthd-EW1XU|IA>+?XB1K9WLRXp6xaR!PbY5#$6_At4if!B=!8c zQuIQZG0GQZjQDjSOItjC@{@$IC|=AGL^KN5giyg!sBoSTyQ0^ z8{*$>uzyJP>E@rvgzL#$iIUat;RH&=yP2;xNbe6-m07C8Fht6 zHo}KIV@2lsfX>oN4yfQY^~gJ{$40q5RaS5(u8ru=dsNFi5=Htj2nCT>3(m)%{70}U zcFZ#)E>vW2dA!EzbCREcfn`#HA4rZPYg3Vup>^YL9OvSrf9C)HQ~ew(0*(0P!iL@_~mk)z8DUX{^0K-|!2W`MgQY-NAG&<{Et1Ul+~)+oaA4(1E5=S+J5W}kz|-vh0p?LjwD9`B*; z?v(7VE#6};KU=9lROR07)tk z4VGplY6BGD7jDIs5Wm;_vC4(U%Lo0M(S(5n*uuXB*Iv8RrL4r1b1rlOC4z0`XT~ty z!IGBq-S_M|E~I>S4vAjOw_3}$x}QR%i|=-_e+~930oSraXuez@^8Aql-chi3?wDo2 zgtcx0dqK&8{JYm=)sQtm^1)t3WM{VG1U0of&9ABo7Suy)ZR|7<>VF{FFPgjWB>}Lm zJ@n)3Rk$z|0HXm^QGJTyE&zM4x3X%t)Yb#!Vcbz))8FoP=zIScQ7nuXDZd5vMh#Irub1AX)@wAj=>*w3 zb>rAcw>O+n)#qeM}K!TA3BIsi@zHLeqNDpb4B@HpZ63_654$ zoM|zDB(*d(DF>@a-*XO6MG zDl2!oI#fx_40J>fn58qKrldo@$MprG6=)|{Y*>Fw@5X|6+9|1tV9?Q>T_yW!XqXGg z4o#5`2T%nSnIV6}?iqXxc!L@CzEcoj6*n0{jt1`xwRpwG_5BULqW@FT{9n%t3Hb4- Xq^_}5hXTi%Q!36?=c&#iE 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�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 K>D1hHjr%W$lcJ>n literal 6834 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 CWe-{a diff --git a/docs/sources/user_guide/tf_classifier/TfMultiLayerPerceptron_files/TfMultiLayerPerceptron_29_0.png b/docs/sources/user_guide/tf_classifier/TfMultiLayerPerceptron_files/TfMultiLayerPerceptron_29_0.png index cbdabf3f6a3bdee2bd6e8eee3f71ba6fcec65807..cc363d927ab242cc87df5cb761e00155f28d7713 100644 GIT binary patch literal 8053 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 diff --git a/docs/sources/user_guide/tf_classifier/TfSoftmaxRegression.ipynb b/docs/sources/user_guide/tf_classifier/TfSoftmaxRegression.ipynb index ebb3221e2..4f157e581 100644 --- a/docs/sources/user_guide/tf_classifier/TfSoftmaxRegression.ipynb +++ b/docs/sources/user_guide/tf_classifier/TfSoftmaxRegression.ipynb @@ -25,15 +25,15 @@ "output_type": "stream", "text": [ "Sebastian Raschka \n", - "last updated: 2016-03-27 \n", + "last updated: 2016-05-01 \n", "\n", "CPython 3.5.1\n", "IPython 4.0.3\n", "\n", "matplotlib 1.5.1\n", - "numpy 1.10.4\n", + "numpy 1.11.0\n", "scipy 0.17.0\n", - "mlxtend 0.3.1.dev0\n" + "mlxtend 0.4.1.dev0\n" ] } ], @@ -44,7 +44,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 2, "metadata": { "collapsed": false }, @@ -118,7 +118,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -127,14 +127,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 20/20 | Cost 0.37 | TrainAcc 0.93" + "Iteration: 20/20 | Cost 0.37" ] }, { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -178,7 +178,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 5, "metadata": { "collapsed": false }, @@ -187,14 +187,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 500/500 | Cost 0.13 | TrainAcc 0.97" + "Iteration: 500/500 | Cost 0.13" ] }, { "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -203,7 +203,7 @@ ], "source": [ "lr.epochs = 500\n", - "lr.fit(X, y, init_weights=False)\n", + "lr.fit(X, y, init_params=False)\n", "plt.plot(range(len(lr.cost_)), lr.cost_)\n", "plt.xlabel('Iterations')\n", "plt.ylabel('Cost')\n", @@ -212,7 +212,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 6, "metadata": { "collapsed": false }, @@ -221,7 +221,7 @@ "data": { "image/png": "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\nAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -245,7 +245,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 7, "metadata": { "collapsed": false }, @@ -271,7 +271,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 8, "metadata": { "collapsed": false }, @@ -281,9 +281,9 @@ "output_type": "stream", "text": [ "Predicted class probabilities:\n", - " [[ 9.92753923e-01 7.24608125e-03 6.90939350e-09]\n", - " [ 5.35254460e-03 9.61461246e-01 3.31862010e-02]\n", - " [ 1.28487800e-05 2.01715842e-01 7.98271239e-01]]\n" + " [[ 9.92753923e-01 7.24608498e-03 6.90939350e-09]\n", + " [ 5.35254739e-03 9.61461246e-01 3.31862085e-02]\n", + " [ 1.28487918e-05 2.01715842e-01 7.98271239e-01]]\n" ] } ], @@ -307,7 +307,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 9, "metadata": { "collapsed": false }, @@ -316,14 +316,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 10/10 | Cost 0.15 | TrainAcc 0.96" + "Iteration: 10/10 | Cost 0.15" ] }, { "data": { - "image/png": "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\n", + "image/png": "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\nfXvrtm1L/sI77DAYMGDfx6GHJv+4O3NA790723uHb98OTz+9b+IofGze3HES6cxdDuvNli17E0Db\nRLBpU/IbFUsEI0YkZ84dyU2S6A5OErY/Xnop6dy+/vqkg/vTn04OsFu2dO1gLyVlmMKDfLEDf9v1\n/fs31kGx0ZNIBDz33KsTQOvzjh3FzwRGjYIhQ/b/LMxJwqyT1qyBGTNgzpxkbEX//qUP8O0d9Pv0\nyfqb1IeuJpFDD00SdetZVLHnamxrb5+tW1+dCFatSv7ib5sAWp9f+9rqngk6SZh10V/+kpRrfI/t\nfCuWRJ56Kvnv13o4KPbc1W37075v31cngpEjk4SWFScJMzMrKTdzN5mZWe1ykjAzs5KcJMzMrCQn\nCTMzK8lJwszMSnKSMDOzkpwkzMysJCcJMzMryUnCzMxKcpIwM7OSnCTMzKwkJwkzMyvJScLMzEpy\nkjAzs5KcJMzMrCQnCTMzK8lJwszMSnKSMDOzkpwkzMysJCcJMzMryUnCzMxKcpIwM7OSnCTMzKwk\nJwkzMyvJScLMzEqqepKQNEXSckkrJc0osn20pPsl7ZD0yc60NTOz6qpqkpDUA/gGcDZwDHC+pKPb\n7PZn4DLg2i60za2WlpasQ3gVx1SePMYE+YzLMZUnjzGVq9pnEuOBxyNiTUTsBGYB5xbuEBGbImIh\n8Epn2+ZZHv+ncEzlyWNMkM+4HFN58hhTuaqdJAYDawuW16Xrqt3WzMwqwB3XZmZWkiKiem8uTQRm\nRsSUdPlKICLiS0X2vRrYGhFf7ULb6n0JM7M6FRHqaJ+mKsewABglaTiwAZgOnN/O/oUBl922nC9q\nZmadV9UkERG7JF0KzCUpbX0nIpZJuiTZHDdIGgg8DPQHdku6HBgbES8Wa1vNeM3MbF9VLTeZmVlt\nq+mO6zwOtpP0HUnPSnok61haSRoi6V5JSyX9UdLHchDTgZIekrQojenqrGNqJamHpD9Iui3rWAAk\nrZa0JP2t5mcdD4CkQyT9TNKy9P+rCTmI6Q3pb/SH9HlLTv5f/4SkRyU9IulHknrlIKbL0393HR4P\navZMIh1stxI4HXiGpA9jekQszziuycCLwA8jYlyWsbSSNAgYFBGLJR0ELATOzcFv1TcitknqCfwe\n+FhEZH4QlPQJ4ATg4Ig4JwfxPAmcEBGbs46llaTvA/dFxPckNQF9I+IvGYe1R3p8WAdMiIi1He1f\nxTheB8wDjo6Iv0r6KXBHRPwww5iOAX4CnEQyPu0u4CMR8WSx/Wv5TCKXg+0iYh6Qm3/MABGxMSIW\np69fBJaRgzEnEbEtfXkgSf9Y5n+xSBoCvBW4MetYCogc/VuVdDDwloj4HkBEvJKnBJE6A1iVZYIo\n0BPo15pMSf6ozdIY4KGIeDkidgG/BaaW2jk3/+N1gQfbdYGkEcBxwEPZRrKnrLMI2AjcExELso4J\n+H/Ap8hBwioQwD2SFki6OOtggKOATZK+l5Z2bpDUJ+ug2ngvyV/LmYqIZ4D/BJ4G1gMvRMT/ZhsV\njwJvkXSYpL4kfxQNLbVzLScJ66S01HQLcHl6RpGpiNgdEW8GhgATJI3NMh5JbwOeTc+6xL6XZGdp\nUkQcT/KP+aNpSTNLTcDxwDfTuLYBV2Yb0l6SDgDOAX6Wg1gOJalwDAdeBxwk6X1ZxpSWmb8E3APc\nCSwCdpXav5aTxHpgWMHykHSdFZGe6t4C3BQRt2YdT6G0VPEbYErGoUwCzkn7AH4CnCYps9pxq4jY\nkD7/CZhNUmrN0jpgbUQ8nC7fQpI08uJvgYXp75W1M4AnI+L5tLTzC+CUjGMiIr4XESdGRDPwAkn/\nblG1nCT2DLZLrxaYDuTiahTy9Vdoq+8Cj0XEdVkHAiDpcEmHpK/7AGcCmXakR8RnImJYRPwNyf9P\n90bE32UZk6S+6RkgkvoBZ5GUCzITEc8CayW9IV11OvBYhiG1dT45KDWlngYmSuotSSS/VebjvSQd\nkT4PA94J/LjUvtUecV01pQbqZRwWkn4MNAOvkfQ0cHVrB1+GMU0C3g/8Me0DCOAzEXF3hmEdCfwg\nvQqlB/DTiLgzw3jyaiAwO516pgn4UUTMzTgmgI8BP0pLO08CF2YcD5AkVZK/3j+cdSwAETFf0i0k\nJZ2d6fMN2UYFwM8lDSCJ6R/bu/CgZi+BNTOz6qvlcpOZmVWZk4SZmZXkJGFmZiU5SZiZWUlOEmZm\nVpKThJmZleQkYQ1P0tb0ebik9u6c2JX3vqrN8rxKvr9ZtTlJmO2dzO8ooFPz6qTTnLfnM/t8UETW\n8y6ZdYqThNle1wCT05lNL09nqf1yenOkxa0zsEo6VdJvJd0KLE3XzU5naf2jpA+l664B+qTvd1O6\nbmvrh0m6Nt1/iaRpBe/9m4Ib+txUsP8X05vXLJb05W77Vayh1ey0HGZVcCVwReuNhtKk8EJETEjn\nB/u9pNYpMd4MHBMRT6fLF0bEC5J6Awsk/TwirpL00XSm1FaRvve7gHERcayk16Zt7kv3OQ4YSzKF\n+u8lnUIyr9V5EXF02v7gav0IZoV8JmFW2lnA36XzXT0EDABen26bX5AgAD4uaTHwIMmMxK+nfZNI\nJ6GLiOeAFpI7hbW+94ZI5sxZDIwAtgDbJd0o6Z3A9v38bmZlcZIwK03AZRHx5vQxsuCGMS/t2Uk6\nFfi/JLfKPI7kwN674D3K/axWLxe83gU0pdNMjyeZlvvtQJaTM1oDcZIw23uA3gr0L1j/K+Af03tx\nIOn16SyjbR0CbI6IlyUdDUws2PbX1vZtPut3wHvTfo8jgLcAJe/vnX7uoenMvZ8EcnH/dKt/7pMw\n23t10yPA7rS89P2IuC693esf0nsBPAecV6T93cBHJC0FVgAPFGy7AXhE0sKIuKD1syJitqSJwBJg\nN/CpiHhO0pgSsR0M3Jr2eQB8outf16x8nirczMxKcrnJzMxKcpIwM7OSnCTMzKwkJwkzMyvJScLM\nzEpykjAzs5KcJMzMrCQnCTMzK+n/A4XkuEpnWc3eAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -331,9 +331,9 @@ }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW8AAAEKCAYAAADdBdT9AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xt8VdWZ//HPE5IgEMK93EEB0XKZARXUn5aiVktt0dqx\n09Kx9TajrXVaq6P2rh1bR+3YqVOkgy1alBGnTltpRqpYEam2gkqwKMpFrkK4hkAIQm7r98feCSfx\n3M8+52SffN+vFy9y9m2tvc/Jc1bWs9be5pxDRETCpSjfFRARkdQpeIuIhJCCt4hICCl4i4iEkIK3\niEgIKXiLiISQgneOmNllZrbNzA6Z2d/muz6FxMy+ZWYP5bse2WJmI82s2cyK/NeLzeyL+a6X5JeC\ndwrM7Fwze9nMasxsn5n9ycxOT3L3HwM3OOfKnXNvmNlmMzs/m/VNlpltMbMj/hfLTjN7xMy657te\nyXLO/Ztz7rp8lG1mJWb2fTN7x8xqzWy7mT1tZhcGXFTrhAzn3MXOuccyPaCZXWlmf0qwzTIze9/M\nDvqf+1fN7HYzK820/Gwws4+a2fZ81yMXFLyTZGY9gQrgAaAPMBT4AXAsyUOMBNZmp3YZc8AnnXPl\nwCRgMvCtbBTU0nosIL8BZgJX4H0uTsL7jFwcbWMz65K7qiVkRHwpxODwGh29gMHALcDngcVZrlu6\nkjmnwuCc078k/gGnA9Vx1hvwXWALsAv4FdATKAVqgSb//w3Ao/7rOuAQ8C94wb0ZuArYBuwHrgfO\nAN4AqoGfRZQ3Cnge2AfsARYA5RHr9gOT/NdD/G2mxaj7ZuD8iNf3AhURr0uBfwe2AlXAHKBrxPrb\ngJ3Ae8C1/nmM8tc94m//tH/+58c7HtAP70vygH8OL0aUc7tfxiHgbeA8f/kdwGMR210CvOlfs6XA\nqe3O9Rb/mh4AFgKlaX4mPua/h4MTbLfZv0ZvAO/jNZpuBzb65/Im8OmI7Yv867PX3+YG//NS5K9/\nAbgmYvtr8BoG+4E/ACMi1jX7n6P1/vWY7S8/1a9Lg/++RP1sty/LXzbcP++LIz773/Truhd4Aujt\nr+sKPIb3OT0ArAAG+Ov6AA8DO/y6/zaijE8Blf4+LwET47yHT/ifqe7AEaDRP6dDwKB8x46sxaR8\nVyAs//AC8V68oDyj5cMZsf4a/xdkpP8h+g3waMT6ZuCkiNebW4KP/7oleM/xP4gf83+5fosX0IYA\nu4GP+NuPBi4Aiv31y4CfRBzvWj8odAOeBe6Nc26twRsYBvy13bH+A3gK6AX0ABYBP/LXzcAL3KcC\nJ/i/qE20Dd4HgLP8110THO9u/xoUAV2Ac/zlY/G+1Ab6r0e0XE+84P1oxHaH8b4kugC34n1hFkec\n6yvAQKA3XtC7Ls3PxL8BS5PYbjOwyn8PW76k/i7iXD7r17nl9Zf9eg3x67iUGMEbuBTvczfWv2bf\nBl5u97n7Pd7ndzjel/hF/rorgeUJ6v6B4O0vfxH4N//nrwN/xmuZlwA/Bx73113nv79d8YL8ZKDM\nX/c03pdnuf9etXy2J+N91s/w9/mifw1LEr2HwEeBbfmOF7n4l/cKhOkfcApeS2EbUO9/KFtaEX8E\nvhyx7Vh/m5ZfuNbWqP+6fWt3pP8LOihi2T7gsxGv/xf4Woy6XQq83m7ZU3iBeHXLBz/GvpvxWimH\n/Ho+h9+K99cfpu0Xz9nAJv/nefiB1389mg8G71+1Ky/e8X4A/A4Y3W6f0Xh/0VyAH4gj1kUG7+8C\nT0SsM7zW+rSIc50Vsf5eYE6an4dftAQp/3UfvC+qGuD9dtf3ygTHqgRm+j8/T8QXCnAhsYP3YuDq\niG2L8FrFwyM+d2dHrP8f4Db/50yC90Jgrv/zWto2RAbjf/aBq2nXcva3GYTXQi6Pcuw5wA/aLXuH\n48E95ntIJwrehdb/mFXOuXXOuWuccyOACXgto5/6q4fgdQO02IrXKh6YYjF7In5+H68FEvm6DMDM\nPmRmC83sPTOrwes26d/uWL8ExuN1tzQkKPdS5/V5fxSvFd3fL2cA3l8Sr5tZtZlV4/1p3s/fbwgQ\nmSDajhcwabeMJI/3Y+BdYImZbTSz2wGcc+8CNwF3ArvN7HEzGxTlPNq8D877jd6Ol6NoEXlNj+Bf\n0/bM7E0/CXnIzM6Jssl+vEDVUtYB51wfvC629gm999od+0tmVmlmB8zsAN771PL+tb+mkZ+r9kYC\nD0Rcy/14fb4pn2+KhuJ1w7TU4XcRdViL1x0zEO8vsWeBJ/zP6j1+v/9wvK6aQzHO6ZaW4/nXZxje\ndcnmOYWKgneanHPr8bpQJviLduJ96FqMxPsA7yY6l2EV7sZrVY13zvXGS5i1Bk0z64H3xTIPuNPM\neic4ngE45/4EzAfu95fvw/vlGO+c6+v/6+28BBZ4fdbDIo4zgg+eW+TruMdzzh12zv2Lc240Xt/1\nzWZ2nr/uCefcRzh+ne+Nch7t3wfwAsV7UbaNyzk3wTnX03kjhF6OssnzwBQzGxJlXfsvsNZrYGYj\ngIfwEoF9/ID/VsQ+VX6dW7Q/n0jbgesjrmUf51yZc+6VBKfXpk6pMLPheF9Qy/1F24BPtKtDD+dc\nlXOu0Tl3l3NuPPD/8JK7X/Lr3dfMymOc04+inNP/ZOucwkjBO0lmdoqZ3WxmQ/3Xw4FZwF/8TRYC\n3zCzE82sDPgR3p/vzTEOuQsvsdimmBSq1BOv+6HWr9Ot7db/J7DSeUPoFgNzUzj2T4ELzWyi33L9\nBfBTv9WMmQ01s4v8bX8NXG1mp/rDC78b78CJjmdmnzSz0f7mtXh/Wjeb2VgzO88folaP91dItGv7\na+CT/rbFZvYvwFGOv0+Bcc49h9et8JSZTfWHDRbjdQPFCyI9/LrvM7MiM7ua442AlnP4mn9d+uAl\nN2P5L+DbZjYOwMx6mdnlSZ7CbmCYmZUks7GZdTOzj+J1x73inPuDv2oucLf/pYSZDTCzS/yfp5vZ\nBH+U0WG8Bk2Tc24X3l9cc8yst/9efcQ/3i+AL5vZVP8YPczsYr9Bksw59YvxpVBQFLyTVwucCaww\ns1q8BM1f8UaKgNcX/hhea+RdvNbl1yL2b//LfA/wPf/PwptjbBPv9Q/wWj81eKMzftOywv/FuQhv\nlALAzcBkM5sV49zalOOc24fX+v6+v6hlJMErfhfNErw+fZxzz+B9UbyAlzhrCZLxhlC2jLT4wPGA\nk4E/+tf4ZeBB59yLeAmve/CSxjuBAUQZzuj/RXQFMNvf9pN4fcmN0c41AJcB/4fXbXUA2IT3pX5R\nxDbtr+/beH/ZvIL3JT4er1+4xS/wuhreAF4j4r1tfzzn3FN41+UJ/1r+FS+JHLXsdq+X4rX4d5nZ\nHmKbbWYH/br+BHgS+ETE+gfw8j9L/O3+DEz11w3Cy9Uc9Mt6Ae9agZeIbMTrz96Nl/jEOfc68E9+\nudV4n6sr45zT8RXOrcNrSG3yf7eida0VBPM7+UUCYWanAmvwRlXE+qtDRDKklrdkzMw+bWal/p/4\n9wK/V+AWyS4FbwnC9XijZDbg9WneEH9zEcmUuk1EREJILW8RkRAqzmFZauKLiKQu6hBitbxFREJI\nwVtEJIQUvEVEQkjBW0QkhBS8RURCSMFbRCSEFLxFREJIwVtEJIRyNklnec3yxBuJiEgb03pPi7o8\nlzMsRURyqrGxkeefeJ7D+w53jDneBmX9y7jg8xdQXJxZ+FXwFpGC9drS1xjSZwgf/9LHKSlJ6oFB\nWdXQ0MCzFc/y2tLXOOuiszI6lvq8RaRg7dqwi3PPO7dDBG6AkpISzvnoOezasCvjYyl4i0jBajzW\nSHmvjvU4y159etHU0JTxcRS8RaRgmRlFRR0rzBUVFQXS/96xzkpERJKi4C0iEkIK3iIiAdj53k4u\nOu0iRvcczYQPTeCnd/00q+UpeIuIBOC6y6+jtLSUyvcqufs/7+bBf3+Qvyz7S9bKU/AWEclQzYEa\n1r65lh8+8EPKe5VzyecvYfzfjOfh2Q9nrUxN0hERaedjJ06hqe5Im2VdenTnj1tejbp95SuVmBmT\nzpzUumzs+LFUrqjMWh0VvEVE2mmqO8LGHt3bLBvTLphHOlhzkNLS0jbLepX34uj7R7NSP1C3iYhI\nxnr17kV9fX2bZQdrDnJCtxOyVqaCt4hIhiafNRnnHKtXrG5dtm7tOk4cfWLWylTwFhFpp0uP7oyp\nO9LmX5d23SiRevfpzbiJ4/jeN75HzYEanlr4FGvXrOWaG6/JWh3V5y0i0k6sxGQ8Dz35EFddchWn\njzidE7qdwD/f9s+cPf3sLNTOo+AtIhKAIcOGsGTVkpyVp24TEZEQUvAWEQkhBW8RkRBS8BYRCSEF\nbxGREFLwFhEJoYyDt5kNM7OlZvaWma0xs68FUTEREYktiHHejcDNzrnVZlYGvG5mS5xz7wRwbBER\niSLjlrdzbpdzbrX/82HgbWBopscVEZHYAu3zNrMTgUnAiiCPKyLS0X3/699nyolTGFU2is989DNZ\nLy+w6fF+l8n/Al/3W+BtVL5UyeqXjt9xa9K5k5h87uSgihcRyauhI4Zy3U3XsfQPSzl29FjWywsk\neJtZMV7gfsw5tyjaNpPPnaxgLSKhcezYMX7wjbv47r9/m+7dY99RsMX1t1wPwOt/eZ09u/Zku3qB\ndZs8DKx1zj0Q0PFERPJq/s8f5bdPrOCh+3+Z76pEFcRQwXOAfwDON7NKM1tlZjMyr5qISH4cO3aM\nh2c/TXHx7fz3L5/jyJHYj0DLlyBGm7zsnOvinJvknJvsnDvNOfdMEJUTEcmH+T9/lLrDp9Kt+9Uc\nPTqlQ7a+NcNSRCRCS6vbNV9AQ0Mljuks+OWSDtf61sMYREQi7Nuzj959utOt26+AXwFQWlrOzm07\nGXPqmJj7NTQ0cOzoMZqammhqaqLucB2lXUspKSnJSj0VvEVEIgwdPpRnXn085f1uuuomnv7d062v\nx39oPJ/6zKeYvWB2kNVrpeAtIhKAB//7QR7kwZyVpz5vkRTV1tSy5Z0t1NbUFkQ5HbV8iU8tb5EU\nrHh+BXPvn0vJgBIa9jZw/S3Xc+YFZ4a2nI5aviSm4C2SpNqaWubeP5eR3xlJ2cgyDm89zNwfzWXc\n6ePo2btn6MrpqOVLctRtIpKk/bv2UzKghLKRZQCUjSyjuH8x+3ftD2U5HbV8SY6Ct0iS+g3qR8Pe\nBg5v9e67dnjrYRr3NdJvUL9QltNRy5fkqNtEQqe2ppb9u/bTb1C/nP4Z37N3T66/5Xrm/GAO9ADq\n4Ibbbwi8Di3l/Pyun2O9DVfj+MqtX8nZubaUP/dHcynuX0zjvkauv+V6dZl0MAreEiodIZFmRUbR\nCUU0v9+c1XJcs4N6//8cO/OCMxl3+ri8fElKchS8JTTynUhrKf+k752Uk4TlqDtG5TVh2LN3TwXt\nDkx93hIa+U6kdZaEpYSDgreERr4TaZ0lYSmpO3LkCJefdznjPzSeMb3GcMbIM3j0vx7NapnqNpHQ\nyHUirX1iNJnyg0imJkqMxiqjamsVm9ZuYtS4UQweOTijc8+3sJ1L/bF6Bg0dxF3/eRcfnvhhHpn9\nCP96279y+tmnM/5vx2elTAVvCZVcJdJiJUbjlR90MjVaYjRWGY/e/ygL5y+kdFAp9bvqmXXlLL50\ny5cyugb50hHO5ciRI/z4zh+zYcsGThp2Erf/4HbKepbF3L53n95tbkB19Y1X87N7f8af/vgnBW+R\nFtlOpCVKjEYrP8hkaqzE6IgxI6KW0fdDfVk4fyGj7x9N9zHdObLxCAtvWciFl18YilZrpKqtVXk/\nl+bmZq763FVU9a6i1/m9eHHli/z17/7Kb/7wG4q7JBcyN2/czMGag5x+1ulZq6f6vEXaSSdhGGSS\nMdaxNq3dFHX5mlfWUDqolO5jvIfkdh/TnZKBJWxauynlsvNt09pNeT+Xt9e8zea9mxn9rdEMPH8g\no28bza5ju3jt5deS2v/YsWNcdclVTDl7ClPOmZK1eip4i7STTsIwyCRjrGONGjcq6vKJZ02kflc9\nRzZ6T3o5svEIDbsbGDVuVMpl59uocaPyfi7Njc1YsWFF5i0wsGKjuTnxuP7m5mY+M+0zFJcU89jT\nj2W1nuo2EWknncRouknGVMofPHJw1OUnTzyZWVfOYuEtCykZWELD7gZmXTkrdF0mAINHDvbO5eaF\nFA8spnF3I7Ouyu25fHjShxlQOoAtD26hz0f6ULOihvL6ciafNTnhvpefdzm1tbU889ozWXuCTgsF\nb5Eo0k2MppJkTKf8WMu/dMuXuPDyC0M1QiOWUyadQr8B/Wju0kzRgCJOmXRKTssv7lLM/Cfmc8c3\n72DLL7cwdtBY7vyfO+l2Qre4+33uY59j53s7eea1Z+jevXv265n1EkRCKpXEaKpJxmQSmbHKj7V8\n8MjBoQ7acPw6nnzXyXmdXdr/Q/158OHkn4rz1htvseLPK+jSpQtnjDyjdfmNt97ITd+7KRtVVPAW\nCUKqScb9u/Zr6nkU8RK/Hfl6jf/b8Ww5siWnZSphKRKAVJOMmi0ZnWaXJk8tb5EAxLqNa6wkYzKt\nyFhJzlSXp1NGrqQzi1U8Ct4iAYp2G9d0kp+xkpypLk+njFxJZxarHKfgLRKARLdxTSf52T7JGSv5\nmU5StKPcXjeVWazSlvq8RQKQzxmW8ZKiuahvOnJWvkFjU2Owx8xQY1MjWObHUfAWCUA+Z1imkxTN\nd2IwV+WfUH4Cq1es7jABvLGpkdUrVnNC+QkZH8ucy80jlpbXLM/9s5xEcqilDzcy0ZZuH3KsY6W6\nPFf1TUcuyq+tqWX5b5dz9NBR6AgRyLwvlGmfmZZ0t9C03tOittMDCd5mNg/4FLDbOfc30bZR8JZY\nghw9kW9B3mu7M442yaRe+T6XbMl28D4XOAw8quAtqQhy9ERH1RHuTx0mYRw5k02xgncgo02ccy+Z\n2cggjiWdR6qjKnI9RToIHeH+1GGSziiYfI+cyRclLCVv0plSHjYd4f7UYZLve6mHiYK35E1nmFLe\nEe5PHSb5vpd6mORskk7lS5Wsfml16+tJ505i8rmJ748rhSvV+1a3/Amc74fTxkuMtV/Xen/qArjX\ndiJBPnw5nXupd7Yp9YENFTSzE4EK59zEaOuVsJRYUhlxkO/kX7zEWLx1+f7CybagE4YabXJctkeb\nPA5MB/oBu4E7nHOPRG6j4C2ZqtpaxTUzr2mT/Hv3lnd5uOLhnATE2ppavv6Fr7dJjG390VYeePwB\ngJjrCimQRBPvuhT6uedCtkebfCGI44jEEy/5l4vgnSgxFsb7UAchrPfgDruc9XnPXvxmzHV1Zdvo\n1xeGDEn+eCO6jmBCjwkB1EzCIjL519LyzmXyLzIx1tLCjEyMxVtXyBJdF8mOnE2Pr6iIPTl15UrY\nPWh5SsfbMXwx/fomv/0/Trg4peNLx9TS5x2Z/Ivs866tqWXr+q2MHDsy41mJ0dateH4FD97zIK7c\nYYeMr37zq236vOfc2/YBxC3rwtiHm8o1y/dU+0KW1W6TTE2dCjAtpX1Wrkx++3UfnsO91YtTqxRw\n+zQF/I4m3oN2Vzy/gtn3zKam/hC9S8u58Zs3pn0P7Fjr1q1ex56qPRQfLabxQCPrVq9rE6SCegBx\nvmcMpnrNdA/u3OsQwTsdXsBPcltuSPn4j9XO4d7lyQf8fn3hrJNGpFSGun3SE+1Buy2z7Pp8uR9l\nPYZQUneMufendw9sIOq6vh/qy8L5CxnzH2M+MFuyrFdZYA8gzveMwXRnvuoe3LkV2uCdbV/smVrA\nf2zbHJZtS377urJtvNJ3W9L9/Orjj2//rv3QG5rLu1BSNJzm8s3Qi7TvgR1t3ZpX1sRMmA49aWhg\nDyDOdwJQD1MOBwXvgKQa7AEq3lhO9RvJbbtm+GJe6ZvCtwPeXwKdJeD3G9SP6vU1dKkaTLdhXThW\ndQLVG2razNaMTKbFWh4v+TjxrInU/yx6wrSsV1la5cQ6l3wmAGOVn865SPYoeOfRzBHJ99sn28f/\n/vsHOHy4ivdHb+bp6j/xNKkF/E+eHs6AX3+0Hjvcg+33vEXJgA007K2nW3NPSruWpjWLM9q6kyee\nHHe2ZDrlRBM5Y7CobxHN1c05nTGY7sxXya0OMdpEgvF65TPM/91trcmkKy+7j9Mnz0h6/8dq51BX\nlnqwT0W2vhiam5vZ8s4WDtUc4uD+g/Tq14vy3uWceOqJFBUVBTbaBOLPlgzy/tTvrHqHO6+9jzvn\n3capp52azmXJSCHdZz3MsjrDMhkK3tl1+PABvn3fRznx2yfSY3g5ddsPseXuLdx924uUlfXJSpmP\n1c5JafuWL4aJKcTvi/t23hE/9988lxcX1TP90q7c/JPr8l0dyZMOPVRQMlddXUXJgBJ6DC8HoMfw\nckr6F1NdXZW14J1WP/+25VRvT27bHcMXs7NvakM8hwwpjIC/feN2Xlu2nQFDH+fVZV9g+8btDB8z\nPN/Vkg5EwbtA9O07mIa9DdRtP9Ta8m7Y10jfvh3rJkip9PPDNFY+m/zWuwctZ031YtaQfMDvqH38\nv56zGLiSLl16AVfy5Jw/qPUtbSh4F4iysj5cedl9zL/7Nkr6F9Owr5ErL7sva63uXEllPL830Sv2\nl0NV1bsMHjy69XXFtuU8zeK0krp1B+ro0adHwm3T+WLYv2s/r72wmqIuR3m/7o8UFdXz6gvvtPYz\n54r6tjs29XkXmMOHD1BdXUXfvoNDH7iDtGrVs/zwh1fw3e8u4LTTPp72cSq2LWf70ed5+T/+m3O+\n8Q/0HDww5rbp9PEDzOg9gy3vbKGpqal1WZcuXVqTr7mQ7xmecpwSltKpffWr5/Lee70ZNuwgDz74\np4yONWfOrfz5zzs455xhfOUr98XdtmJb6vfsAVK6b0/Q/fy6xWvHooSldFqrVj3Lzp0HKS5exM6d\n01m16tm0W987dqxn9eq/0q/fr6ms/Ht27FjP0KFjY26fWh8/wDRWrkxtj1VTvhloP3++Z3hKchS8\npeDNm3cXcCNFRf1obr6RefN+mHbwXrToF0QmEn//+18mbH2nKrV+fpjKPUlvW7FtOcsOv8kyYt+i\nub7uCHu2HOaEN/fTbXgP6nYeoGZPDau6rmJt9dqEZRTCaJ8wUPCWgrZp02p27twIPElT0yKgnp07\nN7Bp02pGjZqU0rGqq6tYvfoFiop2cfTo8xQV1VNZ+XZrjiEMvL8EEvw10BMm/d0E5t97G3X9j3Cg\n6hBnTL+FI38+kyMJjr9juDfaJ5VuH9Atm9OhPm8JXG1tNT17pvbbm84+yRyrsbGRV1+toLa2mv37\nd9Cv31B69uzLlCkzKS5O3HaJPFZzczPbt6+ltraa3bs3M3DgSfTs2Zfhw8e1SSTGOpdcXJcgr2O6\nye90un1SMXFC52rdq89bcmLHjvXcffcVfPvbC+L2BWe6T7LHKi4upvSEbjz1+x9zqGgv5c0DuPbv\nf5pU4G5/rKKiIvZVv8e8X9/U5lgjR06IuU8m55jqPkFeR/CGn6YzYimb3T4rV8IqUuvjBy/gj+ia\n3K0cOuK4/2gUvCVQixb9goMHx6TUF5zOPske6/DhA8z/3W30/edyysv7Unyokfn/dRunnHxmwsCU\nzrFinUsurkuQ17Gjmjo1tWAPXsBfd3gOm5Lc/umyxSkP78zHXwIK3hKYVEdipLtPKsdqamrEejua\nexvFRSNp7r0J692c8LYB6Rwr1rnk4roEeR0LjRfwk7+VQyq3cACo6fMm95blvp9fwVsCk85IjCBH\nb0Q71he/+C0ObN5LcdUpdB/q3ef7wOatCROM6Rwr1rnk4rrkYhRMZ5Gr4Z3JPqlr2iXR66PgLXEl\nmwBLZyRGkKM3Yh3r4x//Albbk+33vkXpgA3U762nW30f6uuPAl5Sbt26FZxyyvGuj3SOFWufTZtW\nJzzH9tc48lhHjiyhqKgp7j7JXscgk5nSVjb7+WPRaBOJKZUEWMtIjKamxtZlXboUf2AkRqb7pFr+\n0KGnsmPHO9TWVnPo0F7Kywe0jhCpfGMJDy28gYO2l15uANfNmsPpk2ekdSwg7j6xzjHaNW4pv6rq\nXebN+w7XXvsjBg8eHXOfZK5j0MlMyZ2ZM9H0eElNKtPAw6bl/uelVzVT1K+M5v111P/Ksnr/82ji\nXeNY69J5Xwr5vSx0sYJ3bu5yI6FzPAH2cyor32DHjvX5rlKgqquraO5ZT1H/ErATKepfTFPZMaqr\nq3JWh3jXONa6dN6XQn8vOysFb4kqWgKskPTtO5i9G6qo39UDo5j6XT3Yt3FXTmdKxrvGsdal874U\n+nvZWSlhKR+QrWng7e+nHWnjxtcZM+b0pJdnas+erRzbU8T2e96kZMA6GvY20FRdxJ49W9t0m6Qz\nWzKZxGC8pCSQdvIzXjlhndIv0anPWz4gyERii3j3016yZB6zZ9/MjTf+hIsuujbh8iC0TJvfvn0t\nFRUPMXPmdQwfPq7NtPl0ZksmmxiMl5SE9JKf8coJ8r2U3FLCUvIq3v20Z806mbq6sfTosZ6FCzck\nXB6koBOGqSYGlUiURJSwlLw5fj/t+ezcWcOqVccfTLlkyTzq6oqBR6mrK2bJknlxlwcp6IRhqolB\nJRIlE4EEbzObYWbvmNl6M7s9iGNK4Yi8nzZ499Nu8cgj9wBfw6wf8DX/dezlQQo6YZhqYlCJRMlE\nxglLMysCZgMXADuBV81skXPunUyPLeEXeT/txsYnAVrvp33w4F7q6g4Av8a53wEN1NUd4Mkn74m6\nvLLyOSZPvhCIn/xMRtuE4WKKiiyjhGGsfWIlBpVIlExl3OdtZmcBdzjnPuG//ibgnHP3Rm6nPu/O\nqSUxuHv3FhYtmsull17PwIEnMmXKTJqbm3nmmTnU1x9r3b60tCvnn/+PLF36S/bte4+lS3/N+ef/\nPf37D2PGjBsoLS0N5GHCbROG3+Paa+/KKGEYa59YiUElEiVZsfq8gxgqOBSIvAfXe0CKM/2lUBUX\nF3P22ZcxZ86tNDScRlVVFZ/+9Dda119yyU1R97vkkpuYM+dW4FyOHStqs928eXfR1HRmRo8zKyoq\nYuTICTz8vMImAAAKwElEQVT99Hzef38ClZUvc9ZZl7auj7xHd6RYyxOti1W+SLpyNs57zZplrFmz\nrPX1xInTmThxeq6KlzwK8pao+XyYsEhHEsTfZzuAyEdUDPOXtTFx4nS+8IU7W/8pcHceQc4KjJf8\nzEW9RDqKIFrerwJjzGwkUAV8HpgVwHElh7J1u9Bkbm/avvxYybzKyuf0MGERXyCTdMxsBvAAXkt+\nnnPuA+O6lLDsuLJ5u9BEtzeNVn6sZN7gwWN5/fWnaWiob11eUlKa9MOEo9VLCUPp6LKZsMQ59wxw\nShDHktzL5rMP2yYG/+YDicFo5cdL5p199mWB1kskrNTE6ORyMcsvyFmJIuJR8O7kcpG0C3JWooh4\ndEvYAhQr+dh+VmIuknbpzGSM93zHROcYj57hKIVEdxUsMLGSj9FmJeYiaZfOTMZ4z3eMd47x6BmO\nEla6q2AnEZn8ixQ5K7FFS9Ju1KhJrf9GjpwQ6GiLljJWrXqpdSZjSxmJyo91LrGWx5POPiIdmYJ3\nAYmV/It3S9Z81iudffQMRxGPgncBycWsxCDrlc4+eoajiEcJywKRi1mJQdYrnecu6hmOIscpYVkg\ncjErMch6pfPcRT3DUTqj/D/D8nMLYhd0xRU5qYOISNhkdXp8UhUYuy7q8oplZXDfvVHXATD9PJiq\n24OLiETKWcubiorUC1q50gvuidymx2aKSGHKe7dJWsE7GQsWULHztMTbTT8v9jq17EWkgyrc4J2M\nBQvirq7YeRoMGRr/GOqXF5E86NzBO5GVK+OuTth1M2SogruIZIWCd7aoX15EskjBO5+C6JcH9c2L\ndEIK3h2d+uVFJAoF70IQp29e/fIihUnBu5OruG9t4o00IUqkw1HwlvhWroT16xP3zcfruhk7VsFf\nJGAK3pK5TIdUgkbdiKRIwVvyL5lRNwruIm0oeEuHl3S/fDzqtpECo+DdiZ1/880cOniw9XV5r14s\n/clP8lijNPn98rG0tuo1pFIKSN5vCSv5c+jgQV7r1av19RkRgTxUpk6N27KeCX6/fPTbD0MStyAG\njbqRUFDwlsKSIOjOTBSTFyygYhmw7IXY26hfXjoABW+RSFdc4bXgY6i4b23ilvuQod6wyVjUqpcA\nKHh3AuW9erXpKimP6EKR1My8bVzijRYsgBhd8xU7T/Na9eqXlwwpYdnJFUwyM0yCGC+vfvlOIysJ\nSzO7HLgT+DAwxTm3KpPjSe4VTDIzTDLtl1+5koplL6hfvpPLtNtkDXAZMDeAuohIMqZOjR/gFyyg\nQv3yBS+j4O2cWwdgZlGb9SKSBwmSrkDcfnmAimW6BXFHp4RlJ6dkZieVIPDODGK8vG5DnFUJE5Zm\n9hwwMHIR4IDvOOcq/G1eAG6J2+ethKVI55HM4wHVL5+UtBOWzrkLg6jAsjVrWLZmTevr6RMnMn3i\nxCAOLQnEG1Ey9LOfhYaG4xuXlLDjySfTKqffpZdSEtEYaDBj/6JFgddZQiCJfnkWfE63IM5AkN0m\ncfu9FazzJ+6IkoYGdpSUtL4cGhnIU1TiHLsi0h+DMhiGqlEwBc7vTonbNx+v62b9eq9fPt6IGyjo\n1n2mQwU/DfwM6A/8n5mtds59IpCaiUjnFq9VPXVqwqRs0rNhQ9ovn+lok6eApwKqi4hIYJKZDZsw\nwHfgWxBrtEknEHdESUlJ266SiC6UVDWYtekqachgBKlGwUguxA3wK1fC+vtjrk7qVgdZ7JdX8M6B\neMm3VBNzHTmRl25yUqRDCuQWxDuy1i+v4J0D8ZJvqSbm0knk5SphGSQlLCUUgrgFcaJ++ZnRg7uC\nt4hIviQzGzaGokArIiIiOaGWdw7ES76lmphLJ5GXq4RlkJSwFIlPwTtAsWYYxksovvHuu2332bcP\niD3zMdb2EDuZWblxI10jyjy2d2/rz0fr69ser74+bvnpzNZMZxZnrGvWkRO2Irmk4B2gdGYYxtwn\nRiIxXhmxknxdgV0RZQ7KoPy0kp8BJkWVyBTxqM9bRCSEFLxFREJI3SYBSmeGYcx9YiQS45URK8l3\njLZdJccyKD+t5GeASVElMkU8egBxGvKZNItXtm7JKlKAZs4M/gHEnVU+k2bxytYtWUU6D/V5i4iE\nkIK3iEgIqdskDflMmsUrW7dkFek8lLAUEenIYiQs1W0iIhJCCt4iIiGk4C0iEkIK3iIiIaTgLSIS\nQgreIiIhpOAtIhJCCt4iIiGk4C0iEkIK3iIiIaTgLSISQgreIiIhpOAtIhJCCt4iIiGUUfA2s/vM\n7G0zW21mvzGz8qAqJiIisWXa8l4CjHfOTQI2AN/KvEoiIpJIRsHbOfdH51yz//IVYFjmVRIRkUSC\n7PO+BvhDgMcTEZEYEj7D0syeAwZGLgIc8B3nXIW/zXeABufc47GOs2zNGpatWdP6evrEiUyfODHd\neouIdGoZP8PSzK4C/gk43zl3LOaGeoaliEjqYjzDMqOnx5vZDOBWYFrcwC0iIoHKtM/7Z0AZ8JyZ\nrTKzOQHUSUREEsio5e2cOzmoioiISPI0w1JEJIQUvEVEQkjBW0QkhBS8RURCSMFbRCSEFLxFREJI\nwVtEJIQUvEVEQkjBW0QkhBS8RURCSMFbRCSEFLxFREJIwVtEJIQyfhhDCvQwBhGR1EV9GINa3iIi\nIaTgLSISQgreIiIhpOAtIhJCCt4iIiGk4J3AsmXL8l2FQBXa+YDOKQwK7Xwg/+ek4J1Avt+goBXa\n+YDOKQwK7Xwg/+ek4C0iEkIK3iIiIZTLGZahZGbTnXPL8l2PoBTa+YDOKQwK7Xwg/+ek4C0iEkLq\nNhERCSEFbxGREFLwTsDM7jOzt81stZn9xszK812nTJnZ5Wb2ppk1mdlp+a5Pusxshpm9Y2brzez2\nfNcnCGY2z8x2m9lf812XIJjZMDNbamZvmdkaM/tavuuUKTPramYrzKzSP6c78lEPBe/ElgDjnXOT\ngA3At/JcnyCsAS4DXsx3RdJlZkXAbODjwHhglpmdmt9aBeIRvHMqFI3Azc658cDZwFfD/j45544B\n5znnJgOTgE+Y2dRc10PBOwHn3B+dc83+y1eAYfmsTxCcc+uccxuIcZ/gkJgKbHDObXXONQBPAJfm\nuU4Zc869BBzIdz2C4pzb5Zxb7f98GHgbGJrfWmXOOXfE/7ErUEwenleg4J2aa4A/5LsSAngBYHvE\n6/cogKBQyMzsRLyW6or81iRzZlZkZpXALuA559yrua5Dca4L7IjM7DlgYOQivG/S7zjnKvxtvgM0\nOOcez0MVU5bMOYnkipmVAf8LfN1vgYea/9f4ZD8H9pSZjXPOrc1lHRS8AefchfHWm9lVwMXA+Tmp\nUAASnVMB2AGMiHg9zF8mHYyZFeMF7secc4vyXZ8gOecOmdkLwAwgp8Fb3SYJmNkM4FbgEj9RUWjC\n2u/9KjDGzEaaWSnweeD3ea5TUIzwvi/RPAysdc49kO+KBMHM+ptZL//nbsCFwDu5roeCd2I/A8qA\n58xslZnNyXeFMmVmnzaz7cBZwP+ZWej68Z1zTcCNeKOB3gKecM69nd9aZc7MHgf+DIw1s21mdnW+\n65QJMzsH+AfgfH9o3Sq/QRRmg4EXzGw1Xv/9s865xbmuhKbHi4iEkFreIiIhpOAtIhJCCt4iIiGk\n4C0iEkIK3iIiIaTgLSISQgreIiIhpOAtIhJC/x8bDtbiMo4xFAAAAABJRU5ErkJggg==\n", + "image/png": "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\ngg==\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -388,7 +388,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 10, "metadata": { "collapsed": false }, @@ -397,14 +397,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 100/100 | Cost 4.76 | TrainAcc 0.98" + "Iteration: 100/100 | Cost 6.26" ] }, { "data": { - "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZMAAAEPCAYAAACHuClZAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3Xm8VXW9//HXGxE1B0QSSEBBRUVzwjQnHp2fmkMmDplD\n5qzd0qum6Q3o3uA2qOTNqaKbQ4ZKcR1uaWVqCKfUVFREEBRIZJDkcFVEnJDh8/vju05sDuccDqyz\n1z7s834+Hvvh3muv4bsWx/Xe3+/6ru9SRGBmZpZHh0oXwMzMNnwOEzMzy81hYmZmuTlMzMwsN4eJ\nmZnl5jAxM7Pcyhomkm6XVCdpcsm0H0l6WdIkSfdL2qrkuyGSZmbfH1kyfYCkyZJmSLqxnGU2M7N1\nV+6ayR3AUQ2mPQrsERH7ADOBIQCSdgdOAfoDxwAjJSlb5ufA+RGxC7CLpIbrNDOzCiprmETEE8Ci\nBtPGRsTK7OPTQK/s/SBgTEQsj4jZpKA5QFIPYMuIeDab707ghHKW28zM1k2lr5mcBzyUve8JzCv5\nbn42rSfwesn017NpZmbWRlQsTCR9B1gWEb+pVBnMzKx1dKzERiWdA3wBOKxk8nygd8nnXtm0pqY3\ntW4PNmZmth4iQmufq3FF1EyUvdIH6WjgKmBQRCwtme9B4DRJnST1BXYGJkTEAmCxpAOyC/JnAQ80\nt8GI8CuCYcOGVbwMbeXlY+Fj4WPR/CuvstZMJP0aqAG6SpoLDAOGAp2AP2edtZ6OiIsiYpqke4Bp\nwDLgoli1hxcDvwI2BR6KiIfLWW4zM1s3ZQ2TiPhKI5PvaGb+a4BrGpn+PLBnKxbNzMxaUaV7c1kZ\n1dTUVLoIbYaPxSo+Fqv4WLQetUZbWVsiKaptn8zMyk0S0cYvwJuZWZVzmJiZWW4OEzMzy81hYmZm\nuTlMzMwsN4eJmZnl5jAxM7PcHCZmZpabw8TMzHJzmJiZWW4OEzMzy81hYmZmuTlMzMwsN4eJmZnl\n5jAxM7PcHCZmZpabw8TMzHJzmJiZWW4OEzMzy81hYmZmuTlMzMwsN4eJmZnl5jAxM7PcHCZmZpab\nw8TMzHJzmJiZWW5lDRNJt0uqkzS5ZFoXSY9Kmi7pEUmdS74bImmmpJclHVkyfYCkyZJmSLqxnGU2\nM7N1V+6ayR3AUQ2mDQbGRsSuwDhgCICk3YFTgP7AMcBIScqW+TlwfkTsAuwiqeE6zcysgsoaJhHx\nBLCoweTjgVHZ+1HACdn7QcCYiFgeEbOBmcABknoAW0bEs9l8d5YsY2ZmbUAlrpl0i4g6gIhYAHTL\npvcE5pXMNz+b1hN4vWT669k0MzNrI9rCBfiodAHMzCyfjhXYZp2k7hFRlzVhLcymzwd6l8zXK5vW\n1PQmDR8+/J/va2pqqKmpyV9qM7MqUltbS21tbautTxHlrRhI6gP8PiL2zD6PAN6OiBGSvg10iYjB\n2QX40cBnSc1Yfwb6RURIehq4FHgW+CNwc0Q83MT2otz7ZGZWbSQREVr7nI0ra81E0q+BGqCrpLnA\nMOBa4F5J5wFzSD24iIhpku4BpgHLgItKUuFi4FfApsBDTQWJmZlVRtlrJkVzzcTMbN3lrZm0hQvw\nZma2gXOYmJlZbg4TMzPLzWFiZma5OUzMzCw3h4mZmeXmMDEzs9wcJmZmlpvDxMzMcnOYmJlZbg4T\nMzPLzWFiZma5OUzMzCw3h4mZmeXmMDEzs9wcJmZmlpvDxMzMcnOYmJlZbg4TMzPLzWFiZma5OUzM\nzCw3h4mZmeVWlWESUekSmJm1L1UZJsuWVboEZmbtS1WGyccfV7oEZmbti8PEzMxyq8owWbq00iUw\nM2tfqjJMXDMxMyuWw8TMzHKrWJhIulzSS5ImSxotqZOkLpIelTRd0iOSOpfMP0TSTEkvSzqyuXW7\nmcvMrFgVCRNJ2wGXAAMiYi+gI3A6MBgYGxG7AuOAIdn8uwOnAP2BY4CRktTU+l0zMTMrViWbuTYC\nNpfUEdgMmA8cD4zKvh8FnJC9HwSMiYjlETEbmAkc0NSKHSZmZsWqSJhExD+AHwNzSSGyOCLGAt0j\noi6bZwHQLVukJzCvZBXzs2mNcjOXmVmxOlZio5K2JtVCdgAWA/dKOgNoOBDKeg2Mctttwxk/Pr2v\nqamhpqZmvctqZlaNamtrqa2tbbX1KSowkJWkk4GjIuLC7POZwIHAYUBNRNRJ6gGMj4j+kgYDEREj\nsvkfBoZFxDONrDv+8Ifg2GML2x0zsw2eJCKiyWvRa1OpayZzgQMlbZpdSD8cmAY8CJyTzXM28ED2\n/kHgtKzHV19gZ2BCUyt3M5eZWbEq0swVERMk3Qe8ACzL/nsLsCVwj6TzgDmkHlxExDRJ95ACZxlw\nUTRTpfIFeDOzYlWkmaucJMWoUcFZZ1W6JGZmG44NtZmrrFwzMTMrVlWGia+ZmJkVqyrDxDUTM7Ni\nOUzMzCy3qgwTN3OZmRWrKsPENRMzs2I5TMzMLLeqDBM3c5mZFasqw8Q1EzOzYjlMzMwst6oMEzdz\nmZkVqyrDxDUTM7NiOUzMzCy3qgwTN3OZmRWrKsPENRMzs2I5TMzMLLeqDBM3c5mZFasqw8Q1EzOz\nYjlMzMwst6oMEzdzmZkVqyrDxDUTM7NiOUzMzCy3qgwTN3OZmRWrKsPENRMzs2K1KEwk3dWSaW2F\nw8TMrFgtrZnsUfpB0kbAfq1fnNaxciWsWFHpUpiZtR/NhomkIZKWAHtJejd7LQEWAg8UUsL10KmT\naydmZkVSRKx9JumaiBhSQHlykxRbbRXMnQudO1e6NGZmGwZJRITWd/mWNnP9QdLm2Qa/Kul6STus\n70az9XSWdK+klyVNlfRZSV0kPSppuqRHJHUumX+IpJnZ/Ec2t27XTMzMitXSMPk58IGkvYFvAa8C\nd+bc9k3AQxHRH9gbeAUYDIyNiF2BccAQAEm7A6cA/YFjgJGSmkzQTp3cPdjMrEgtDZPlkdrDjgd+\nGhE/A7Zc341K2goYGBF3AETE8ohYnK1/VDbbKOCE7P0gYEw232xgJnBAU+vfZBPXTMzMitTSMFki\naQhwJvBHSR2AjXNsty/wpqQ7JE2UdIukTwDdI6IOICIWAN2y+XsC80qWn59Na5SbuczMitWxhfOd\nCnwFOC8iFkjaHrgu53YHABdHxHOSbiA1cTXsDbD23gGNWLRoODfeCD16QE1NDTU1NTmKamZWfWpr\na6mtrW219bWoNxeApO7A/tnHCRGxcL03mtb1VETsmH0+lBQmOwE1EVEnqQcwPiL6SxoMRESMyOZ/\nGBgWEc80su74zGeCkSNh//0bfmtmZo0ppDeXpFOACcCXSRfCn5F08vpuNGvKmidpl2zS4cBU4EHg\nnGza2ay6l+VB4DRJnST1BXbOytMoN3OZmRWrpc1c3wH2r6+NSNoWGAvcl2PblwKjJW0MzALOBTYC\n7pF0HjCHFFxExDRJ9wDTgGXARdFMlcq9uczMitXSMOnQoFnrLXIOEhkRL7Kq2azUEU3Mfw1wTUvW\n7ZqJmVmxWhomD0t6BPhN9vlU4KHyFCk/dw02MytWs2EiaWdSd92rJJ0EHJp99RQwutyFW19u5jIz\nK9baaiY3kt2FHhH/C/wvgKQ9s++OK2vp1pObuczMirW26x7dI2JKw4nZtD5lKVErcDOXmVmx1hYm\n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\np3ttJk1afVsDBqRrOZ/7XPocseb/MM8+C2eckda3bBn87ncp8NZFBPzLv6R9+cMf4IgjWrbc2LHp\nutV118E3v7lu22xNEyemQD/33MqVwdbPihVrXqdcF5ddBjffnH4Ifv7zrVeulvI1kw38mkklvftu\nuv7SvXvEt78dMXNmy5edNy/i9NMjeveO+PnPI265JeL734848MCIESPWnP9734v45jcj6urS+099\nKqJv34gLL4wYMyYt261bxD33pGstI0emz3/6U/pcVxfxl79EPPZYxLJlTZfrxhsj9twz4qGH0jWi\nxx5b+75MmZKOw623pmtJr73W8uPQmpYujdh994gtt4yora1MGYr29tsRw4ZFLF9e6ZLk8847Eb16\nrf+/21tvRXTpEjF8eMRxx7Vu2VqKnNdMKn7yb+2Xw2TdzJ+fTmLr669/jfjylyPOOy9i6NCIn/wk\nYsmSNeebPDliiy0itt464oIL0ucpU9LJ/7jjIgYNipg7d/VlHn88Yrvt0jLbbBNx8MER++2XgujK\nK9Py9Rf5I1KA9OixqsPC+PEpUGpr08lq9uyIceMiJk6MWLEizfOPf0TssEPE3Xenz1dfHXHUUauv\nN6+nn4447bSIM89MAd6Uq6+O+MIX0n707h3x5putV4Y8/v73iFdfXbdl6urSj4q1hcTpp0dsvnnE\nNdesf/nagqFDUyeaffZZv2C8+uqIs8+OeP/99INmXY93a3CYOEw2CCtXRtx7b8T//d+6Lbd48ZrL\nTJ2aalK9e6dfg2edlUJs220jnnhi9XnHjo3o3Dlik03SvAMHRuyySwqZU0+N2HvvVCuq9/HHEXvt\ntSpcIlLPuR/8IE17/vnGw7Lhvs6eHTFqVMRBB0X06RNx/fUR558f8elPR8yateYyr766eq3o8ssj\nTjihdUNtfbz4Ygrorl1TODRXK6y3dGnEoYemGu+llza9D2PGROy6a8Qrr6R/u4kTW7fsRZk/P/3Y\nmTs37fett67b8h99lH4gTZ6cPl95ZcS3vtX65VybdhUmwNHAK8AM4NtNzJP/qNoGYeXKiOnTUzPb\naaelJrLGLFqUumCXmjMn4vbbUwg1PNlNmJBOhHffncKnd+90cj/11BQ0m22WgumIIyIuvjjiu99N\n//N/4xsRJ58c0bNnaqI78cSI++5bdQJeuTLi5pvTuseOXX0/jj464tprV0376KOIffeN+NnPmj8G\n77wTMXp0ai4cMSLVwt57r+n5Fy1KgTVtWgrG5mo/kyalsv7P/6QAPOKIiAED0nJNWbkyheaJJ6am\nmz32iPjxj9ecb/78dIyeeSZ9vvvuiP79Iz74oPn9bYu+9rWIf/u39P6551L4Ll7c8uV/+ctUG643\na1YK7+b+HeutXJm63b/yyrqVuTF5w2SDuQAvqQMpRA4H/gE8C5wWEa80mC82lH0qt9raWmpqaipd\njDZhXY/F0KFQW5suip50UhptoN6KFamn2/Tp8MoraeyxzTdPry5d0ogGO+3UdI+cxx5LXbQ33jj1\nzNt22zTkzMSJq29nxgw49NDUw61bt/TaeuvUy22LLVKniKeeSp0ajjgidRt/5pnUNXyXXeCQQ9Kr\na9dVA26++ip84hO1dOlSw6abwmuvpZ55xx6b1tO1axrled68NFrDT36SupVD6tzwq1+lY7PjjnD+\n+XDKKav3urvpptQF/Mkn0/S5c1MZrr9+9fUceyzsv38abqh+2umnp16D5XqEQ0TaryefhL/9LXUi\nWbiwli22qAHgqKPS0ERbbtnydb7yShobb8aM9G8PqfNEt24te1heRDr+N920emeR449Px+hrX2t6\n2Y8+gosvTj0yFy2Cr341daapL8e6aje9uSQdCAyLiGOyz4NJSTqiwXwOk8zw4cMZPnx4pYvRJrS1\nYxGRTkTjxqUT2xVXwH77NT7f+++nATzr6mDx4jSawnvvpa7an//8mie/pUvTkD31J82FC1NoHXVU\nCrof/GDVsfjoI/jLX1KYPf10Gutt8eI0htutt8LJJ69ZpmXL0oPibr89Ldu3L/TsCZ/8ZOqJ9NRT\nqSdgvUmTUjl7907drpctS13En3569fBctCg9K2i33dKxGDAg9S5cvDi93n8/BfZWW6XA23bb9KiH\nLbdMwf3BB+nR2fPmpWD9+99TeL7+euqWvmBBCuODD04Bt//+MHr0cL7+9eEsXw4/+xn8+c8pBM44\nI21v+vS0ro4dV4V4166pXFtsAV/6Uhq66KqrVu3HG2+kYYRuuy0t9/776QdIjx6pvN26pXHrXnst\n/fs88ED69yr98TF2bOoVOXly4z9K5s9PP3J6904B/8EHaXSL3/0ujbRx3HGpDFL6N3700fRd797p\nB8Aee6y5zrxhspZe/21KT2BeyefXgQMqVBazXKR0H07//unXZXPz1Z/EWjqW2iabpBPcgQemR043\nZ9NNU8gcdVTLy77xxumX8/HHp67js2enk9v8+elm2tIggTR80IsvppPsypXptdtuqwcJpF/Ukyat\nqjXcfXcKwq23TuGx+ebppFkfLgsXpnVGQKdOqdv6dttBr16pZrjTTumEu/326STeowd84hOrb3Pc\nuDS0EaST8lNPpfHrLr00nYT79UvrWblyVYi/9Vba144dYZttUjlLfepTqYv5jTeuqrF26JB+DLzx\nRvpv167pOPXtC7/4xZqBcfjh6d+xa9d0XLp0Sfd3rViR7qN67bUUNkOGrPob+cUv0gCxt92W7itb\nujTt2xNPpO7+J52UaopHH50C+PLL4cILW/7vvjYbUpiYWRuzzTbpNWBA8/Ntt13LHme9zTZp7Lgv\nfrHlZViyJJ04u3bNf7PfQQelpsI33kjlbeoG1oh04+9GGzU+5ty55+a7V0hK5Vi0aNXrww9TgG20\nUaoFNnYP1t57p6bJm29OTW8vvJBGLC99WN9116V1v/fe+pev0TJvKE1CWTPX8Ig4OvvcZDNXJcpn\nZrahay/XTDYCppMuwL8BTABOj4iXK1owMzPbcJq5ImKFpH8FHiU91Ot2B4mZWduwwdRMzMys7aqa\n8VElHS3pFUkzJH270uUpkqReksZJmippiqRLs+ldJD0qabqkRyR1rnRZiyKpg6SJkh7MPrfLYyGp\ns6R7Jb2c/X18th0fi8slvSRpsqTRkjq1l2Mh6XZJdZIml0xrct8lDZE0M/u7ObIl26iKMMluaPwp\ncBSwB3C6pN0qW6pCLQeuiIg9gIOAi7P9HwyMjYhdgXHAWp4QX1UuA6aVfG6vx+Im4KGI6A/sTRpB\not0dC0nbAZcAAyJiL1IT/+m0n2NxB+n8WKrRfZe0O3AK0B84Bhgprb2fXFWECel+k5kRMScilgFj\ngOMrXKbCRMSCiJiUvX8PeBnoRToGo7LZRgEnVKaExZLUC/gCcFvJ5HZ3LCRtBQyMiDsAImJ5RCym\nHR6LzEbA5pI6ApsB82knxyIingAWNZjc1L4PAsZkfy+zgZm04J6+agmTxm5o7FmhslSUpD7APsDT\nQPeIqIMUOEC3ypWsUDcAVwGlFwTb47HoC7wp6Y6sye8WSZ+gHR6LiPgH8GNgLilEFkfEWNrhsSjR\nrYl9b3g+nU8LzqfVEiYGSNoCuA+4LKuhNOxdUfW9LSQdC9RlNbXmquZVfyxITTkDgJ9FxADgfVLT\nRnv8u9ia9Et8B2A7Ug3lDNrhsWhGrn2vljCZD2xf8rlXNq3dyKru9wF3RcQD2eQ6Sd2z73sACytV\nvgIdAgxWkL+kAAADmklEQVSSNAv4DXCYpLuABe3wWLwOzIuI57LP95PCpT3+XRwBzIqItyNiBfBb\n4GDa57Go19S+zwdKH8rdovNptYTJs8DOknaQ1Ak4DXiwwmUq2i+BaRFROubqg8A52fuzgQcaLlRt\nImJoRGwfETuS/g7GRcSZwO9pf8eiDpgnaZds0uHAVNrh3wWpeetASZtmF5MPJ3XQaE/HQqxeW29q\n3x8ETst6u/UFdibdJN78yqvlPhNJR5N6rtTf0HhthYtUGEmHAH8FppCqqgEMJf0B3EP6lTEHOCUi\n3qlUOYsm6XPAtyJikKRtaIfHQtLepI4IGwOzgHNJF6Lb47EYRvqBsQx4AbgA2JJ2cCwk/RqoAboC\ndcAw4HfAvTSy75KGAOeTjtVlEfHoWrdRLWFiZmaVUy3NXGZmVkEOEzMzy81hYmZmuTlMzMwsN4eJ\nmZnl5jAxM7PcHCZmJSQtyf67g6TTW3ndQxp8fqI1129WSQ4Ts9XV33jVF/jKuiyYPVq6OUNX21DE\noeuyfrO2zGFi1rhrgEOz0XYvyx629SNJz0iaJOlCSHfZS/qrpAdIQ5Ug6beSns0eVHZBNu0aYLNs\nfXdl05bUb0zSddn8L0o6pWTd40sebnVXyfzXZg96miTpR4UdFbMmbDDPgDcr2GCyoVgAsvB4JyI+\nm43/9qSk+iEm9gX2iIi52edzI+IdSZsCz0q6PyKGSLo4G723XmTr/hKwV0TsKalbtsxfsnn2AXYH\nFmTbPJj0gKsTImK3bPmtynUQzFrKNROzljkSOEvSC8AzwDZAv+y7CSVBAvBNSZNIz5TpVTJfUw4h\njXBMRCwEaoH9S9b9RqRxjyYBfYDFwIeSbpN0IvBhzn0zy81hYtYyAi6JiH2z107Zw5UgPSckzZQG\nlzwM+GxE7EMKgE1L1tHSbdVbWvJ+BdAxG0L9ANIjB74IPLzOe2PWyhwmZqurP5EvIY0oW+8R4KLs\nuTFI6pc9tbChzsCiiFgqaTfgwJLvPq5fvsG2HgdOza7LbAsMpJkhv7Ptbh0RDwNXAHu1fPfMysPX\nTMxWV9+bazKwMmvW+lVE3JQ9Enli9jyMhTT+vPCHga9LmgpMB54q+e4WYLKk57NnrARARPxW0oHA\ni8BK4KqIWCipfxNl2wp4ILsmA3D5+u+uWevwEPRmZpabm7nMzCw3h4mZmeXmMDEzs9wcJmZmlpvD\nxMzMcnOYmJlZbg4TMzPLzWFiZma5/X99qXHfSJ5EVgAAAABJRU5ErkJggg==\n", + "image/png": "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\n9f7DHyJuuqnp6mebXHNNxKBBEevXl7omrVveMHE3Vxswa1bq0jrhBNh55/qXW7ky3W1y1qz0WL06\nde106lT38hGpG+u734U99kjn0nTvDr//fZpMMGRI3Z+7+OI0FnTvvY0fd6mxYUOaJj16dLpZWbdu\naaznE5/4aOtpyN13pyndTz65ebfWOeek67Jdc03j17VxY+rWGz8+jW+dey585ztNV9diePZZ6NAh\njcG1NO++C717p7+Dyy5Lx9e2jsdManGYNJ2Ixn3Zr16dpg0vXAjPP5/GUwYMqH/599+Hgw5KX9QV\nFek8nF13TTcmW7w4zXw74IA0RXqnnVI9nnsOHnkEfvObFCLXX59mo51/fpqcMHlyGv/Ja+HCNLHh\nL39JM+kKLVmSbt+8cGHDoVxj9ep0VYTXX0/TuNevT/t7wQVwxRX561oMb7wBgwalGYNPPpn+PUrh\n0Udh1Kg0waRHj03l112X6nXFFenH0qJFHtfaWg6TWhwmrUN1dZrd9de/psfy5WkK8p57ptbNE0+k\n8j594M03U4vkmGPSlOphwzaF3MaNcOmlafkrrkih89xz6VycwYPTZIHBgzf/golI5+4sWZJ+2e67\nb3q/ujqF3KWXwnnn1V3viy5K062vvbb+fVuxAn73uzSVe+jQNBuuQ4f03tKlKVDOPjvtzw47QNeu\nqdUipZl3HTvWPQOv2CLgq1+F3XZLM9nmzEkzDWtPRW9ud9yRzoUaMiT9LUyenI7PBx+kVsmUKSn4\nv/GNNFHlhz8sbv3KRZsKE0nHAjeQztz/bUSMq2MZh0mZWLs2TUPeYYfU0qmvlRQBP/pR+rLr2zc9\nOndOXXX//d/wz3+m5Tp1So/Vq9O6dtstvX722fSZTp3Sl9Odd9a/rVdeSTPfxoxJJ3x+7nPpi23+\n/BSOU6emEzxPOgm++c0UZLW9/HIKpVdfTaH21ltpXzduTI/OndOv7JNOSl+ga9emsF2+PNVxl13S\neT7N/aX+m9+kIKw5l2no0HSR0cZ089UE9o47bl7+1lupZfbqq3DjjanV09A6xo6FX/86hVifPqnV\neNpp6fyom29OQVIzpX3ZsvTv0ZS3f1ixIu3vpZemv5FiqWnNDh2aupCLoc2EiaRtgOeAIcArwGzg\n1IhYWGs5h0mmsrKSioqKUlej5NJVnCs58MAKqqvT+MoOO2x6f82adH+aefPS1aC3NP4ydSrcf38K\n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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -433,7 +433,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 11, "metadata": { "collapsed": false }, @@ -442,7 +442,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Training Accuracy: 97.74%\n" + "Training Accuracy: 93.86%\n" ] } ], @@ -454,7 +454,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 12, "metadata": { "collapsed": false }, @@ -463,7 +463,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -481,7 +481,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 13, "metadata": { "collapsed": false }, @@ -490,7 +490,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "Prediction: 9\n" + "Prediction: 8\n" ] } ], @@ -498,84 +498,6 @@ "print('Prediction: %d' % lr.predict(X[4999, None]))" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Example 4 -- Training and Validation Accuracies During Training" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Training accuracies are collected for each epoch by default. Optionally, we can pass validation dataset during model fitting to compute the validation accuracy values for each epoch. Here, pass 4000 samples from MNIST for training and 1000 samples from MNIST for validation." - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "name": "stderr", - "output_type": "stream", - "text": [ - "Epoch: 100/100 | Cost 0.59 | TrainAcc 0.99 | ValidAcc 0.85" - ] - } - ], - "source": [ - "from mlxtend.data import mnist_data\n", - "from mlxtend.preprocessing import shuffle_arrays_unison\n", - "from mlxtend.tf_classifier import TfSoftmaxRegression\n", - "import matplotlib.pyplot as plt\n", - "\n", - "X, y = mnist_data()\n", - "X, y = shuffle_arrays_unison((X, y), random_seed=1)\n", - "\n", - "lr = TfSoftmaxRegression(eta=0.01, \n", - " epochs=100, \n", - " minibatches=20, \n", - " print_progress=True, \n", - " random_seed=1)\n", - "lr.fit(X=X[:4000], \n", - " y=y[:4000],\n", - " X_valid=X[4000:],\n", - " y_valid=y[4000:])" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "collapsed": false - }, - "outputs": [ - { - "data": { - "image/png": "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\n", - "text/plain": [ - "" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "plt.plot(range(1, lr.epochs + 1), lr.train_acc_, label='training')\n", - "plt.plot(range(1, lr.epochs + 1), lr.valid_acc_, label='validation')\n", - "plt.legend(loc='lower right')\n", - "plt.xlabel('Epoch')\n", - "plt.ylabel('Accuracy')\n", - "plt.legend(loc='lower right')\n", - "plt.grid()\n", - "plt.show()" - ] - }, { "cell_type": "markdown", "metadata": {}, @@ -585,7 +507,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 14, "metadata": { "collapsed": false }, @@ -596,7 +518,7 @@ "text": [ "## TfSoftmaxRegression\n", "\n", - "*TfSoftmaxRegression(eta=0.5, epochs=50, minibatches=1, random_seed=None, print_progress=0, dtype=None)*\n", + "*TfSoftmaxRegression(eta=0.5, epochs=50, n_classes=None, minibatches=1, random_seed=None, print_progress=0, dtype=None)*\n", "\n", "Softmax regression classifier.\n", "\n", @@ -609,6 +531,14 @@ "- `epochs` : int (default: 50)\n", "\n", " Passes over the training dataset.\n", + " Prior to each epoch, the dataset is shuffled\n", + " if `minibatches > 1` to prevent cycles in stochastic gradient descent.\n", + "\n", + "- `n_classes` : int (default: None)\n", + "\n", + " A positive integer to declare the number of class labels\n", + " if not all class labels are present in a partial training set.\n", + " Gets the number of class labels automatically if None.\n", "\n", "- `minibatches` : int (default: 1)\n", "\n", @@ -636,11 +566,11 @@ "\n", "**Attributes**\n", "\n", - "- `weights_` : 2d-array, shape=[n_features, n_classes]\n", + "- `w_` : 2d-array, shape=[n_features, n_classes]\n", "\n", " Weights after fitting.\n", "\n", - "- `biases_` : 1D-array, shape=[n_classes]\n", + "- `b_` : 1D-array, shape=[n_classes]\n", "\n", " Bias units after fitting.\n", "\n", @@ -648,21 +578,13 @@ "\n", " List of floats, the average cross_entropy for each epoch.\n", "\n", - "- `train_acc_` : list\n", - "\n", - " List of training accuracies for each epoch\n", - "\n", - "- `valid_acc_` : list\n", - "\n", - " List of validation accuracies for each epoch\n", - "\n", "### Methods\n", "\n", "


\n", "\n", - "*fit(X, y, init_weights=True, override_minibatches=None, n_classes=None, X_valid=None, y_valid=None)*\n", + "*fit(X, y, init_params=True)*\n", "\n", - "Learn weight coefficients from training data.\n", + "Learn model from training data.\n", "\n", "**Parameters**\n", "\n", @@ -675,29 +597,11 @@ "\n", " Target values.\n", "\n", - "- `init_weights` : bool (default: True)\n", - "\n", - " (Re)initializes weights to small random floats if True.\n", + "- `init_params` : bool (default: True)\n", "\n", - "- `override_minibatches` : int or None (default: None)\n", - "\n", - " Uses a different number of minibatches for this session.\n", - "\n", - "- `n_classes` : int (default: None)\n", - "\n", - " A positive integer to declare the number of class labels\n", - " if not all class labels are present in a partial training set.\n", - " Gets the number of class labels automatically if None.\n", - " Ignored if init_weights=False.\n", - "\n", - "- `X_valid` : {array-like, sparse matrix}, shape = [n_samples, n_features]\n", - "\n", - " Optional validation set to store the validation accuracy values\n", - " for each epoch via self.valid_acc_\n", - "\n", - "- `y_valid` : array-like, shape = [n_samples]\n", - "\n", - " Target values for X_valid\n", + " Re-initializes model parametersprior to fitting.\n", + " Set False to continue training with weights from\n", + " a previous model fitting.\n", "\n", "**Returns**\n", "\n", @@ -708,7 +612,7 @@ "\n", "*predict(X)*\n", "\n", - "Predict class labels of X.\n", + "Predict targets from X.\n", "\n", "**Parameters**\n", "\n", @@ -719,9 +623,9 @@ "\n", "**Returns**\n", "\n", - "- `class_labels` : array-like, shape = [n_samples]\n", + "- `target_values` : array-like, shape = [n_samples]\n", "\n", - " Predicted class labels.\n", + " Predicted target values.\n", "\n", "
\n", "\n", @@ -773,6 +677,15 @@ "with open('../../api_modules/mlxtend.tf_classifier/TfSoftmaxRegression.md', 'r') as f:\n", " print(f.read())" ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { diff --git a/docs/sources/user_guide/tf_classifier/TfSoftmaxRegression_files/TfSoftmaxRegression_22_1.png b/docs/sources/user_guide/tf_classifier/TfSoftmaxRegression_files/TfSoftmaxRegression_22_1.png index b9ee0a42cb4ee5cef4c03fb57beac78e1a2561de..416cf0ac0c6022123b60fa8b7c98d13a113958c4 100644 GIT binary patch literal 7737 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

IxLBF8vDROcj;kqv+D>FOUpKOr) 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 diff --git a/docs/sources/user_guide/tf_classifier/TfSoftmaxRegression_files/TfSoftmaxRegression_25_1.png b/docs/sources/user_guide/tf_classifier/TfSoftmaxRegression_files/TfSoftmaxRegression_25_1.png index 439f5f68ee6a9894388d99f7c54ede7d9a810829..0bb9c09232a1f6d45420cbe946ee2f289f7efb71 100644 GIT binary patch literal 8939 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

+Q@jQjZtv(+C@$cA1Xy5CY?ncUYuMc!s*7c zpFSc`URG;RctylIwY?e0^jlevreV&#KZohtvP2HQ&^mg@bxrfh1LeKCg}B&aL*fx5 z$V-{cIezC-()Tj=f6cmE5Gq8g9@ diff --git a/docs/sources/user_guide/tf_regressor/TfLinearRegression.ipynb b/docs/sources/user_guide/tf_regressor/TfLinearRegression.ipynb index 51a67e7d3..e33d1a66c 100644 --- a/docs/sources/user_guide/tf_regressor/TfLinearRegression.ipynb +++ b/docs/sources/user_guide/tf_regressor/TfLinearRegression.ipynb @@ -25,7 +25,7 @@ "output_type": "stream", "text": [ "Sebastian Raschka \n", - "last updated: 2016-04-23 \n", + "last updated: 2016-05-01 \n", "\n", "CPython 3.5.1\n", "IPython 4.0.3\n", @@ -131,7 +131,7 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 3, "metadata": { "collapsed": false }, @@ -140,7 +140,7 @@ "data": { "image/png": "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\nBTE/nibSAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -169,7 +169,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 19, "metadata": { "collapsed": false }, @@ -178,7 +178,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 5/5 | Cost 2.40 | Elapsed: 00:00:00 | ETA: 00:00:00" + "Iteration: 6/5 | Cost 2.40 | Elapsed: 00:00:00 | ETA: 00:00:00" ] }, { @@ -193,7 +193,7 @@ "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYQAAAEPCAYAAABCyrPIAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3XmYVOW17/HvYkYBA06oKCBRcULAiDOUiqICxikmUcE4\nJCqOMUfjGPqQGw/xJDFR1Gg0OKKiaMSrqKA0KoqiQEBE4hi9GnHCCRSwWfePd7fdtN3VVdW1a9fw\n+zxPPVTt3rX3Ysew+p3Wa+6OiIhIq6QDEBGR4qCEICIigBKCiIhElBBERARQQhARkYgSgoiIADEn\nBDO7ycyWmdnCBsfPMrMlZrbIzMbHGYOIiGSmTczXnwhcDdxae8DMUsBIYGd3/8bMNoo5BhERyUCs\nLQR3fxpY3uDw6cB4d/8mOuejOGMQEZHMJDGGsC0w2MzmmNlMM/tBAjGIiEgDcXcZNXXPru6+h5nt\nBkwGtk4gDhERqSeJhPAOcB+Au881s7VmtqG7f9zwRDNToSURkRy4u2X7nUJ0GVn0qvUPYH8AM9sW\naNtYMqjl7kX/Gjt2bOIxKE7FqDgVZ+0rV7G2EMxsEpACNjSzt4GxwN+BiWa2CFgFjI4zBhERyUys\nCcHdj23iR6PivK+IiGRPK5XzIJVKJR1CRhRn/pRCjKA4861U4syVtaS/KW5m5sUcn4hIMTIzvEgH\nlUVEpAQoIYiICKCEICIiESUEEREBlBBERCSihCAiIoASgoiIRJQQREQEKIGEMGFC0hGIiFSGok8I\nV1wBt97a/HkiItIySeyHkJXHHoP99oPOneGII5KORkSkfBV9QujbFx56CA4+GDp1ggMPTDoiEZHy\nVPRdRgADB8J998Fxx8Hs2UlHIyJSnkoiIQDssw/cdhsceSTMn590NCIi5adkEgLAsGFw7bUwfDi8\n8krS0YiIlJeiH0No6Kij4Msv4aCD4KmnoGfPpCMSESkPJZcQAE44AT7/HIYODUmhe/ekIxIRKX0l\nmRAAzjoLPvsszDqaNQu6dUs6IhGR0lbSW2i6wwUXwJNPwowZYa2CiEily3ULzZJOCBCSwmmnwauv\nwsMPQ4cOBQpORKRIVWxCAKipgeOPhxUrYMoUaNu2AMGJiBSpXBNCrNNOzewmM1tmZgsb+dmvzGyt\nmbW4979161DvyD0MONfUtPSKIiKVJ+51CBOBYQ0PmlkP4EDg3/m6Udu2MHkyvP8+jBkTkoOIiGQu\n1oTg7k8Dyxv50ZXA+fm+X8eO8MADsGAB/PrXSgoiItko+EplMzsMeMfdF8Vx/c6dYdq08Lr88jju\nICJSngq6DsHMOgIXE7qLvj2c7jtVVVXfvk+lUqRSqWbv061bKJs9eDB06RLWLIiIlKvq6mqqq6tb\nfJ3YZxmZWU/gQXfvZ2Y7ATOAlYRE0AN4Fxjk7h808t2MZhk15a23QlL47W/DYLOISCXIdZZRIVoI\nFr1w95eAbwtNmNmbwEB3b2ycocV69Vp3g50jj4zjLiIi5SHuaaeTgGeAbc3sbTM7scEpTjNdRi3V\nt29YsHb66SE5iIhI48piYVomZs8OW3Defz/svXdeLikiUpSKcmFaMdl7b7j9dm2wIyLSlIpJCBD2\nULjuOjj0UG2wIyLSUMmWv87VkUfCF1+E5PDkk2HgWUREKjAhQJiC+sUXdRvsbLZZ0hGJiCSvIhMC\nwJlnhg12DjpIG+yIiEAFzTJqjHuoeTRrljbYEZHyUdH7IbSEe1ijsHRpWK/QsWOstxMRiZ0SQgvU\n1MDo0fD553DffdpgR0RKm9YhtEDr1nDzzWAWEoM22BGRSqSEEKndYGfZstCFVMQNJxGRWCgh1NOh\nQ9hgZ+FCuOACJQURqSxKCA107hwGlx99FH73u6SjEREpnLTrEMxsT+B4YF9gM+Ar4CXgIeB2d/8s\n9ggTULvBzr77hg12zj476YhEROLXZEIws2nAe8ADwO+AD4AOwLbAfsADZvYnd59aiEALrXv3sDah\nNin87GdJRyQiEq8mp52a2Ubu/lHaL2dwTksUatppOkuXhg12rr4ajjoq0VBERDISx7TTjepdvH2D\nm+0BEGcyKBbbbRfGFMaMCeMKIiLlKl1CmFTv/bMNfnZtDLEUrf79w8Y6o0bB008nHY2ISDzSJQRr\n4n1jn8veXnvBHXeE8tnz5iUdjYhI/qVLCN7E+8Y+V4QDD4Trr4fhw2HJkqSjERHJr3TTTnuY2VWE\n1kDte6LPW8QeWZE64oiwl8KwYdpgR0TKS7qEcH699y80+FnDzxVl9GhtsCMi5Seraqdm1hX4tFBz\nQYth2mk6l18OkyaF/RQ23DDpaEREgrxPOzWz35hZ3+h9ezN7AngdWGZmQ3MPtXxcdFEYTzjkkNBi\nEBEpZekGlX8MLI3en0AYO9gYGAJcnsnFzewmM1tmZgvrHbvCzJaY2QIzm2JmXXKMPXFmMH487Lor\njBwJX32VdEQiIrlLlxBW1+uvGQbc5e417r6EzPdinhh9t77HgB3dvT/wKnBRNgEXGzO45hrYYgv4\n0Y9g9eqkIxIRyU26hLDKzHYys40JtYseq/ez9TK5uLs/DSxvcGyGu6+NPs4BemQRb1Fq1SpssNO6\ntTbYEZHSlS4hnAvcC7wCXOnubwKY2aHA/Dzd/yRgWp6ulai2beHuu+HDD+G007SXgoiUnia7ftx9\nDtC3keMPAw+39MZmdgmwxt0npTuvqqrq2/epVIpUKtXSW8emdoOdoUPh/PPhf/83dCmJiMSpurqa\n6urqFl8nXbXT89J90d3/lNENzHoCD7p7v3rHfgb8HNjf3Vel+W5RTzttyiefQCoVxhQuuyzpaESk\n0uQ67TTd4PAfgAWELp1V5F6/yOp/18wOJix6G5wuGZSy2g12Bg8Oeymcc07SEYmINC9dQhgA/BQY\nDrwI3Ak8ns2v7GY2CUgBG5rZ28BY4GKgHTDdQn/KHHcfk1P0Rax7d5g+vS4pnHhi0hGJiKSX0Upl\nM9uLkByGAr8u1C5ppdplVF/tBjtXXQVHH510NCJSCeLoMqq98MaE1sLOwP8jbKUpGardYGfYMOjU\nCQ4+OOmIREQal25Q+STgGMI+yvcCk929oMmgHFoItZ55Bg4/HKZMCfs0i4jEJdcWQrqEsBZ4Cfh3\ndGidE939sGxvlq1ySggAM2bAscfCI4/AwIFJRyMi5SqOhDAk3RfdfVa2N8tWuSUEgH/8A04/HZ54\nArbfPuloRKQc5X0MoRD/4Feiww8PlVEPOihssNO7d9IRiYgE6cpfP2hmI82sbSM/29rMxkXjDJKl\nUaNC6ewDD4T33ks6GhGRIF2XUXfgPOAo4BPgQ8IAcy/CvggT3P2BWIMrwy6j+v7nf+COO7TBjojk\nV97HEBpcvBewGfAV8C93X5ntjXJR7gkB4MIL4fHHw6tLye4MISLFJNaEkJRKSAjucMYZsHhxmH3U\nsWPSEYlIqVNCKGFr14Z9FJYvh/vvh3btko5IREqZEkKJW7MmVEdt3x4mTQqb7YiI5CLXhJBugxzM\nrLWZ3ZF7WJKptm3hrrvg44+1wY6IJCNtQnD3GqCnmakTowA6dAgL1156Cf7rv5QURKSwmu0yMrNb\nge2BqcCK2uOZbpDTEpXUZVTf8uVhg52jjoLf/CbpaESk1MRW7ZSw5uB1Qmuic7Y3kOx17Ro22Nl3\nX9hgA22wIyKFkfGgspl1AnD3L2ONaN17VmQLodbbb4ekMHYsnKQ14SKSoTj3Q9gJuA3oFn3+CBjt\n7ouzjlKystVWYde1VAo6dw6zkERE4pJJl9ENwHnuPhPAzFLA34C9YoxLIttuC9OmhWJ4nTtrgx0R\niU/aWUaR9WuTAYC7VwPrxxaRfMcuu4TZR6NGwVNPJR2NiJSrTBLCG2Z2mZn1il6XAm/EHZisa889\n4c47w8yjF19MOhoRKUeZJISTgI2B+4ApwEbRMSmwoUPhhhtg+HB4+eWkoxGRcpN2DMHMWgOXuPvZ\nBYpHmlG7wc6wYdpgR0TyK21CcPcaM9unUMFIZkaNCklh6NAwprD55klHJCLlIJNZRvPNbCpwD+uu\nVL6vuS+a2U3ACGCZu/eLjnUF7gZ6Am8Bx7j7Z9mHXtnGjIHPPgu7rs2aBRttlHREIlLqMhlD6AB8\nDOwPjIxeIzK8/kRgWINjFwIz3H074AngogyvJQ1cdBGMHBmmon7+edLRiEipS7tSORpDONvdr8z5\nBmY9gQfrtRBeAYa4+7Jom85qd+/bxHcreqVyJupvsDNtGqy3XtIRiUjSYil/HVU7/WnOUTVuE3df\nFl3/fWCTPF+/opjBhAmw5ZZw9NGwenXSEYlIqcpkDGG2mU0g9PvXH0OYl6cY0jYBqqqqvn2fSqVI\npVJ5um35aNUKJk4MpS2OPz6sV9AGOyKVo7q6murq6hZfJ5Py1zMbOezuvn9GN/hul9ESIFWvy2im\nu2/fxHfVZZSFr7+GESOgVy/4299C60FEKk/RbqFpZr0ICWHn6PPvgU/c/fdm9mugq7tf2MR3lRCy\n9OWXYebRnnvCH/+opCBSiWIZQ4guvKmZ3WRm06LPO5jZyRkGNQl4BtjWzN42sxOB8cCBZrYUOCD6\nLHnSqRM8/DA8/jiMG5d0NCJSSjLpMppGmD56ibvvYmZtgPm1v/HHGpxaCDlbtizspTBmDJx7btLR\niEghxdZCADZy98nAWgB3/waoyfZGUlibbgozZsCVV8Lf/550NCJSCjKZZbTCzDYkmg1kZnsAWllc\nArTBjohkI5OEcB4wFehjZrMJlU+PjjUqyZv6G+y89Racd56mpIpI4zKaZRSNG2wHGLDU3dfEHVh0\nX40h5Mmbb4Z9mVetCmsWttsu6YhEJC5xjiHg7t+4+2J3f6lQyUDyq3fvMPPo2GNh773hT3+CGo0E\niUg9sa9DaAm1EOLx+utw4omwdm1oLWyzTdIRiUg+xdpCkPLSpw9UV8Mxx4QFbH/5S0gOIlLZmmwh\nmNnAdF/MYy2jJqmFEL9XXw2thdatw/TUPn2SjkhEWirvpSvq1TDqAPwA+CdhULkf8IK775ljrJkH\np4RQEDU1cNVV8LvfQVVVWMzWSm1HkZIVWy0jM7sPGOvui6LPOwFV7h771FMlhMJaujS0Ftq3D60F\n7dcsUpriHEPYrjYZALj7S0Cj1UmltG23XdijefhwGDQIrrtOYwsilSSTFsKdhH0Qbo8OHQd0cvd8\nb5zT2L3VQkjIK6/ACSeEYnk33RRKaotIaYizhXAisBg4J3q9HB2TMta3L8yeHVY477YbXH992K5T\nRMpXpiuVOwJbufvS+ENa575qIRSBxYvhZz+Drl3hxhtDjSQRKV5x7odwGLAAeCT63N/MpmYfopSq\nHXeEZ58NRfJ23TUkBeVpkfKTyRjCi8D+QLW7D4iOLdJ+CJVp0aLQWth445AYevRIOiIRaSjOMYQ1\n7t6w3LX+la5QO+8Mc+bAPvvAgAGh9IVytkh5yCQhLDazY4HWZraNmV1N2BZTKlTbtnDppaFY3lVX\nwYgR8O67SUclIi2VSUI4C9gRWAVMImyOo00ZhX794Pnnw5qFAQPg1lvVWhApZWnHEMysNfB7d/+v\nwoW0zv01hlAi5s8P6xZ69QpTVDfbLOmIRCpXLGMI7l4D7JNzVFIxBgyAF16A/v1hl13gjjvUWhAp\nNZnMMroO2AK4h7BiGQB3vy/e0NRCKFUvvhhaC9//Pvz1r9C9e9IRiVSWOGcZdQA+Jkw9HRm9RmR7\nI6kcu+4aksKOO4bWwp13qrUgUgoS2zHNzH4JnAysBRYBJ7r76gbnqIVQ4ubODesW+vYNxfI22STp\niETKX5wrlTuY2Rlmdq2Z/b32lVuY315zc8LspYHu3g9oA/ykJdeU4rTbbqG1sM02YVbS5MlJRyQi\nTcmky+g2oDswDJgF9AC+yMO9WwPrm1kbYD3gvTxcU4pQhw4wfjw88ACMHRu27vzww6SjEpGGMkkI\n33f3y4AV7n4LMBzYvSU3dff3gD8CbwPvAp+6+4yWXFOK3+67w7x5YWpqv34wZUrSEYlIfW0yOGdN\n9Oen0W5p7wMt6gk2s+8BPwR6Eha63Wtmx7r7pIbnVlVVffs+lUqRSqVacmtJWMeOcMUVcPjhYWzh\nnntgwgTYaKOkIxMpXdXV1VRXV7f4OplMOz0FmELYS3ki0An4jbv/Neebmh0NDHP3n0efRwG7u/uZ\nDc7ToHIZW7kylMC46y645ho44oikIxIpD7HtqRwHMxsE3ATsRiiJMRGY6+7XNDhPCaECPP102Mt5\n991DbaRu3ZKOSKS0xZYQzOw3jR1393HZ3qzBdccSZhatAeYDp7j7mgbnKCFUiJUr4eKLQxfSddfB\nYYclHZFI6YozIfyq3scOhEVpS9z9pGxvli0lhMozaxacdBLsvTf85S9hlzYRyU7BuozMrD3wqLun\nsr1ZtpQQKtOKFXDhhXD//aFQ3vDhSUckUloKmRC6Evr7v5/tzbKlhFDZZs6Ek0+GIUPgyivhe99L\nOiKR0hDnSuVFZrYwei0GlgJ/ziVIkWzstx8sXBimqu68MzzySNIRiZS3TMYQetb7+A2wzN2/iTWq\nunurhSBA2J3t5JNh6FD44x9hgw2SjkikeMVZ7fSLeq+vgC5m1q32le0NRXJxwAGhtdC6dWgtPPZY\n0hGJlJ9MWghvAVsCywEDvkcoOQHg7r51bMGphSCNeOwxOOUUOPhg+MMfoEuXpCMSKS5xthCmAyPd\nfSN335Aw7fQxd+8dZzIQacpBB8GiRbB2baiJNENVsETyIpMWwiJ337m5Y3FQC0GaM20a/OIXMGJE\nqJHUuXPSEYkkL84WwntmdqmZ9Ypel6BS1VIkDjkktBa+/jq0FmbOTDoikdKVSQuhGzAWGBwdmgWM\nc/dPYo5NLQTJykMPwamnhiJ548fD+usnHZFIMgqyMM3MWgPru/vn2d4oF0oIkq3ly+Hcc0PBvIkT\nYfDg5r8jUm7iXJg2ycy6mNn6hL2PXzaz83MJUiRuXbvCLbfAn/8MP/0pnHNOKIUhIs3LZAxhh6hF\ncDgwDegNjIo1KpEWGjkyjC18/DH07x9aDCKSXiYJoa2ZtSUkhKlRiWr140jR69YNbr89zD760Y/g\nvPNCmW0RaVwmCeF64C1gfeDJqJRFQcYQRPLhiCNCa+E//wmthWeeSToikeKUS7VTA1oXop6RBpUl\n36ZMgTPPhOOPh3HjQuE8kXIT5zqEdXhQkOJ2Ivl21FGhJtK//w0DBsCcOUlHJFI8EtlTOVNqIUic\nJk+Gs8+GE06A//5v6NAh6YhE8qNgLQSRcnHMMfDPf8Jrr8HAgTB3btIRiSQroxaCme0F9ALa1B5z\n91vjC+vb+6qFILFzh7vvDmsWTj4Zxo6F9u2Tjkokd7GtVDaz24A+wAKgJjrs7n521lFmSQlBCun9\n9+G000KL4ZZbYNddk45IJDdxJoQlhMVpBf+XWQlBCs0d7rgjrFk49VS47DJo1y7pqESyE+cYwktA\n9+xDEik9ZmFK6oIF4bXbbjB/ftJRiRRGJglhI0L9okfNbGrtq6U3NrMNzOweM1tiZovNbPeWXlMk\nXzbfHKZOhV/9CoYNg6oqWL066ahE4pVJl9GQxo67+6wW3djsZmCWu080szbAeg2rqKrLSIrBu++G\nTXjeew9uvhl22SXpiETSK0j563wxsy7AfHfv08x5SghSFNxDMrjggrB24cILoW3bpKMSaVyc5a/3\nMLO5Zvalma02sxoza2kto97AR2Y20czmmdkNZqYiAlK0zODEE2HePJg9O6xbuPnmsFObSLlo0/wp\nTAB+AtwD/AAYDWybh/sOBM5w9xfM7M/AhYSd2dZRVVX17ftUKkUqlWrhrUVyt+WWYR/nadNgwoTQ\nYjj55DBdtWfPpKOTSlVdXU11dXWLr5PJGMIL7v4DM1vo7v2iY/PdfUDONzXbFHjW3beOPu8D/Nrd\nRzY4T11GUtRefRWuvRZuvTXsznbWWbDffqFFIZKUOKedrjSzdsACM7vCzH6Z4fea5O7LgHfMrLal\ncQDwckuuKZKEbbaBK68MxfIOPjiML+y4Y0gSX3yRdHQi2cmkhdATWAa0A34JbABc6+6vtejGZrsA\nNwJtgTeAE939swbnqIUgJcUdZs0K3UkzZ4Y1DWPGwHbbJR2ZVJJYZxlFA75bufvSXILLlRKClLJ3\n3oG//hVuvDFszHPWWXDIIdC6ddKRSbmLs3TFSOAPQDt3721m/YFx7n5YbqFmEZwSgpSBr78Opbav\nvjrs8TxmDJx0UtjiUyQOcY4hVAGDgE8B3H0BYdqoiGSgQwcYPTqU177rrlByu08f+PnPw3uRYpFJ\nQljTsG8f0K/tIjkYNAhuuw1eeQV69YLhw8PspMmTYc2apKOTSpdJQlhsZscCrc1sGzO7GtA25SIt\nsOmmcMkl8OabYWbStdeGBPHb34Yy3CJJyCQhnAXsCKwC7gQ+B86NMyiRStG2LRx9NFRXwyOPhLpJ\n228Pxx0Hzz4bZi2JFIr2VBYpMsuXh7IY11wDG2wQZif9+MfQUcVdJENxzjL6AXAx391Cs1+2N8uW\nEoJUsrVrQ6thwgR44YUwM+n001UiQ5oXZ0JYCpwPLALW1h53939ne7NsKSGIBA1LZJx5Juy/v0pk\nSOPiTAhPu/s+OUfWAkoIIuv68suwxefVV4cWxJlnwqhR0Llz0pFJMYkzIRwA/BR4nDCwDIC735ft\nzbKlhCDSOJXIkHTiTAi3A32BxdR1Gbm7n5R1lFlSQhBpnkpkSEOxjiG4eyK/dyghiGTu66/hnntC\nd9JHH6lERiWLs3TFM2a2Qw4xiUgBdegQxhOefz6UyFi4MJTIOOUUlciQzGTSQlgC9AHeJIwhGKHL\nSNNORYrcBx/A3/4G110HvXuHQegjj9R+0OUuzi6jRmc9a9qpSOn45ht44IEwCP2vf8Gpp8IvfgHd\nuycdmcQh1v0QkqKEIJJ/ixaFVdB33w2HHhpaDXvsoTUN5UQJQUSy8umnMHGiSmSUIyUEEcnJ2rXw\n6KNhdpJKZJSHOGcZiUgZa9UqrFt4+GF45hlYvRoGDoQjjoDHH1fF1UqiFoKIfEdtiYwJE6CmRiUy\nSo26jEQk79zhySdDd9ITT4QSGWecoRIZxU5dRiKSd2YwZAjce29Y3NalS6i2OmwYPPhgaD1I+VAL\nQUSysmpV2AN6wgT48EOVyChGJdlCMLNWZjbPzKYmGYeIZK59+zCe8NxzKpFRbpLuMjoHeDnhGEQk\nR4MGhU17li6FrbeGESNg333Dorc1a5KOTrKVWEIwsx7AocCNScUgIvmxySZw8cXw5ptw7rmhHHev\nXjBuHLz/ftLRSaaSbCFcSdiaU4MEImWiTRs46qiwac8jj8B778H228Oxx8Kzz2pNQ7Frk8RNzWw4\nsMzdF5hZilBBtVFVVVXfvk+lUqRSqbjDE5E82Hnn0FIYPx5uvhlGjw6zlM48E37yE5XIyKfq6mqq\nq6tbfJ1EZhmZ2eXA8cA3QEegM3Cfu49ucJ5mGYmUidoSGRMmwNy5KpERp5JdmGZmQ4BfufthjfxM\nCUGkDL32Glx7LdxyS1jXcMIJsN9+ocietJwSgoiUnBUr4PbbYcqUMMaw884wdGh47bEHtGuXdISl\nqWQTQjpKCCKV4+uvYfZsmDEDpk8PG/nsu29IDgceCDvuqD0bMqWEICJl5eOPw2yl6dNDkli5Eg44\nICSHoUNhiy2SjrB4KSGISFl7442QGGbMCIX2NtmkrnsplQozmCRQQhCRirF2LcyfX5cg5syBfv3q\nupd23x3atk06yuQoIYhIxfrqq3XHH157bd3xhx12qKzxByUEEZHIRx/VjT9Mnx4GrGuTwwEHlP/4\ngxKCiEgTascfpk8P4w+bblo3OD1kSPmNPyghiIhkoKYGFiyom7303HOwyy51A9TlMP6ghCAikoOv\nvoKnn64boH7ttbB6uraLafvtS2/8QQlBRCQPPvoodCvVdjGtWrXu+MPmmycdYfOUEERE8sw9jD/U\ndi898QRsttm64w+dOycd5XcpIYiIxKymBubNq+teeu456N+/LkEMGlQc4w9KCCIiBbZyZd34w/Tp\noTUxZEjdAHVS4w9KCCIiCfvww3XHH9asWXf8YbPNChOHEoKISBFxh9dfr0sOM2eGAena7qXBg+Mb\nf1BCEBEpYrXjD7UD1HPnwoABdd1LgwaFPanzQQlBRKSErFwJTz1VN0D95pvrjj/07Zv7+IMSgohI\nCfvgg3XHH2pq6pLD0KHQvXvm11JCEBEpE+5hxXT98YcePeoGqAcPhk6dmv6+EoKISJn65pvvjj8M\nHFg3QL3bbuuOPyghiIhUiBUr1h1/eOutsGtc3foHJQQRkYq0bNm64w/vvKOEICJS8dyhVavcEkKr\nOAJqjpn1MLMnzGyxmS0ys7OTiENEpNy0pFRGIgkB+AY4z913BPYEzjCzvgnF0mLV1dVJh5ARxZk/\npRAjKM58K5U4c5VIQnD39919QfT+S2AJULK7nJbKfySKM39KIUZQnPlWKnHmKqkWwrfMrBfQH3gu\n2UhERCpbognBzDoB9wLnRC0FERFJSGKzjMysDfB/gWnu/pcmztEUIxGRHJTUtFMzuxX4yN3PSyQA\nERFZRyIJwcz2Bp4EFgEevS5290cKHoyIiABFvjBNREQKpxhmGd1kZsvMbGGac64ys1fNbIGZ9S9k\nfPViSBunmQ0xs0/NbF70ujSBGDNa8Jf088wkziJ5nu3N7Dkzmx/FObaJ85J+ns3GWQzPM4qjVXT/\nqU38PPH/r0dxNBlnsTzLKJa3zOyf0f/2zzdxTubP1N0TfQH7EKadLmzi54cAD0XvdwfmFGmcQ4Cp\nCT/L7kD/6H0nYCnQt9ieZ4ZxJv48ozjWi/5sDcwBBhXb88wwzmJ5nr8Ebm8slmJ5lhnEWRTPMorl\nDaBrmp9n9UwTbyG4+9PA8jSn/BC4NTr3OWADM9u0ELHVl0GcAC1YNN5yntmCv8SfZ4ZxQsLPE8Dd\nV0Zv2wNtCONd9SX+PKN7NxcnJPw8zawHcChwYxOnFMWzzCBOKIL/NiNG+p6erJ5p4gkhA1sA79T7\n/C7Fu6pb2FLcAAAEGklEQVR5z6hZ9pCZ7ZBkIGkW/BXV82xmYWLizzPqOpgPvA9Md/e5DU4piueZ\nQZyQ/PO8EjifxpMVFMmzpPk4IflnWcuB6WY218x+3sjPs3qmpZAQSsWLwFbu3h+YAPwjqUBKZcFf\nM3EWxfN097XuPgDoAeyedKJvSgZxJvo8zWw4sCxqGRrF8xv2OjKMsyj+24zs7e4DCS2aM8xsn5Zc\nrBQSwrvAlvU+94iOFRV3/7K22e7u04C2Ztat0HFEC/7uBW5z9wcaOaUonmdzcRbL86wXz+fATODg\nBj8qiudZq6k4i+B57g0cZmZvAHcC+0VrkeorhmfZbJxF8Czrx/Kf6M8PgfuBQQ1OyeqZFktCSPcb\nw1RgNICZ7QF86u7LChVYA03GWb9fzswGEab0flKowOr5O/CyN7H6m+J5nmnjLIbnaWYbmdkG0fuO\nwIHAKw1OS/x5ZhJn0s/T3S92963cfWvgJ8AT7j66wWmJP8tM4kz6Wda793pRKxszWx84CHipwWlZ\nPdM2Tf2gUMxsEpACNjSzt4GxQDvA3f0Gd3/YzA41s9eAFcCJxRgncLSZnQ6sAb4CfpxAjHsDxwGL\nov5kBy4GelJEzzOTOCmC5wlsBtxiZq0IvzzdHT2/Uymi55lJnBTH8/yOInyWjSrSZ7kpcL+FEj9t\ngDvc/bGWPFMtTBMREaB4uoxERCRhSggiIgIoIYiISEQJQUREACUEERGJKCGIiAighCCSV1Fp5AeT\njkMkF0oIIvmnxT1SkpQQpCKZ2XEWNpWZZ2bXRdVCvzCzP5nZS2Y23cw2jM7tb2bPRtUtp9QrE9En\nOm+Bmb1gZr2jy3c2s3vMbImZ3VbvnuOjay8wsysS+GuLpKWEIBXHzPoSyg3sFVWKXEsopbEe8Ly7\n70TY87t257FbgPOj6pYv1Tt+B3B1dHwv4D/R8f7A2cAOQB8z2ysqfna4u+8Unf9/4v57imRLCUEq\n0QHAQGBuVEtpf6A3ITFMjs65HdjHzLoAG0QbJEFIDoOjomJbuPtUAHdf7e5fR+c87+7/8VAXZgHQ\nC/gM+MrMbjSzIwg1cESKihKCVCIDbnH3ge4+wN23d/dxjZzn9c7Pxqp672uANu5eQyhNfC8wAngk\n26BF4qaEIJXocULFyo0BzKyrmW1F2I/46Oic44Cno/0FPokqtAKMAmZFG/q8Y2Y/jK7RLio93Sgz\nWw/4nrs/ApwH9IvjLybSEomXvxYpNHdfYmaXAo9FJaNXA2cSygMPMrPLgGXUlTU+Abg++gf/DepK\nCI8CbjCzcdE1ftTY7aI/uwAPmFmH6PMv8/zXEmkxlb8WiZjZF+7eOek4RJKiLiOROvrtSCqaWggi\nIgKohSAiIhElBBERAZQQREQkooQgIiKAEoKIiESUEEREBID/DzfgMKBR4zkOAAAAAElFTkSuQmCC\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -209,8 +209,8 @@ " print_progress=3)\n", "gd_lr.fit(X, y)\n", "\n", - "print('Intercept: %.2f' % gd_lr.bias_)\n", - "print('Slope: %.2f' % gd_lr.weights_)\n", + "print('Intercept: %.2f' % gd_lr.b_)\n", + "print('Slope: %.2f' % gd_lr.w_)\n", "\n", "plt.plot(range(1, gd_lr.epochs+1), gd_lr.cost_)\n", "plt.xlabel('epochs')\n", @@ -227,7 +227,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 20, "metadata": { "collapsed": false }, @@ -236,7 +236,7 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 50/50 | Cost 0.00 | Elapsed: 0:00:00 | ETA: 0:00:00" + "Iteration: 51/50 | Cost 0.00 | Elapsed: 0:00:00 | ETA: 0:00:00" ] }, { @@ -249,9 +249,9 @@ }, { "data": { - "image/png": "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\nCJgAAAAASUVORK5CYII=\n", + "image/png": "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\nRK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -260,12 +260,12 @@ ], "source": [ "gd_lr.epochs = 50\n", - "gd_lr.fit(X, y, init_weights=False)\n", + "gd_lr.fit(X, y, init_params=False)\n", "\n", - "print('Intercept: %.2f' % gd_lr.bias_)\n", - "print('Slope: %.2f' % gd_lr.weights_)\n", + "print('Intercept: %.2f' % gd_lr.b_)\n", + "print('Slope: %.2f' % gd_lr.w_)\n", "\n", - "plt.plot(range(1, gd_lr.epochs+1), gd_lr.cost_)\n", + "plt.plot(range(1, 56), gd_lr.cost_)\n", "plt.xlabel('epochs')\n", "plt.ylabel('mean squared error (MSE)')\n", "plt.show()" @@ -280,7 +280,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 21, "metadata": { "collapsed": false }, @@ -289,7 +289,7 @@ "data": { "image/png": "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\nIQV/EZEs9P8BbhLi+7qb/q8AAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -315,7 +315,7 @@ }, { "cell_type": "code", - "execution_count": 7, + "execution_count": 22, "metadata": { "collapsed": false }, @@ -324,14 +324,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 10/10 | Cost 0.01 | Elapsed: 0:00:00 | ETA: 0:00:00" + "Iteration: 11/10 | Cost 0.01 | Elapsed: 0:00:00 | ETA: 0:00:00" ] }, { "data": { "image/png": "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\nJEm19f8BNgAdd6TdfoYAAAAASUVORK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -357,7 +357,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 23, "metadata": { "collapsed": false }, @@ -366,7 +366,7 @@ "data": { "image/png": "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\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -394,7 +394,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 24, "metadata": { "collapsed": false }, @@ -426,7 +426,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 25, "metadata": { "collapsed": false }, @@ -435,14 +435,14 @@ "name": "stderr", "output_type": "stream", "text": [ - "Epoch: 200/200 | Cost 0.27 | Elapsed: 0:00:00 | ETA: 0:00:00" + "Iteration: 201/200 | Cost 0.27 | Elapsed: 0:00:00 | ETA: 0:00:00" ] }, { "data": { "image/png": "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\ndpGqA4sWwbXXwvXXJ/dZnXQSfPKTLlhmtaDwRSpPLlL1JSLpxn799XDjjfDWW/CRjyQjsB91FOy0\nU94JzawtF6kOuEjVt6VL4fbbk+kPf4AxY+DII6GpCcaNS3oRmlm+XKQ64CLVfaxdmwy/1NycTI8+\nuqloHXlkMr/LLnmnNOt+XKQ64CLVfa1dC//3f0nB+u1vYeHC5FlXY8bAYYcl0yGHJN3gzSw7LlId\ncJGyVuvXw+OPJ4+5f+ih5PXxx2HIkGTw2+HD4aCDktchQ9zl3axSXKQ64CJlHXnnHVi8ODk1+Nhj\nm15fegmGDYOhQ5Obi/fbLxkod7/9oH9/9yg02xouUh1wkbJt8cYbSfFatiwZuql0euutpKX1gQ/A\noEHJa+n8gAHJY0rMLOEi1QEXKau0NWvg6afhuedgxYpkKp1/8UXYfffkacT9+2857bXXpvk+fdwq\ns/rnItUBFymrtg0bkkL1/POwalVy6nDVqi2nl16CN99MClXfvu897bZb0jtx5503vfq6mdUCF6kO\nuEhZkb37bjL805/+tGlqu1y6fu3aZHr99eSU5A47bF602r7uvDP07p1MvXptmm+73Ha+Vy8XQKsc\nF6kOuEhZvYpIWmKlhav0tXX+L39JrqO1vrZOHS3/5S/JdbXtt99yaru+3H7trdtuO2hsTKaePSs7\n3/raUJjnOlirrhaprEdBN7MMSMkwUDvtBO97X2WPHQFvv530fmw7vftux8vl1q1dm7yuW5fcCtD6\nurXzndkubV7EevRIClePHtWdb29dQ0OSUdo0/16vldonq+O1/j62N3WVi5SZbUbadNqv1mzYsHnx\n2rgxWbdhQz7zbddFbHotnW/vdcOGzu/bmX22Zt/32mfjxuRn3rpve1NX+XSfmZllpqun+3wG18zM\nCstFyszMCstFyszMCstFyszMCstFyszMCstFyszMCstFyszMCstFyszMCstFyszMCstFyszMCstF\nyszMCstFyszMCstFyszMCstFyszMCstFyszMCstFyszMCstFyszMCivzIiVpsqQlkpZKmlFm+6mS\nFqbTA5IOLtm2q6QbJC2W9Jikw9u890uSNkrqm/X3MDOz6su0SElqAC4HjgWGA1MlfbDNbk8DR0TE\nSOBfgdkl2y4D7oiIA4CRwOKSYw8EjgaWZ/cNqqu5uTnvCFul1vJC7WV23mzVWl6ozcxdkXVLaiyw\n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\nRK5CYII=\n", "text/plain": [ - "" + "" ] }, "metadata": {}, @@ -473,7 +473,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 26, "metadata": { "collapsed": false }, @@ -511,7 +511,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 27, "metadata": { "collapsed": false }, @@ -532,9 +532,9 @@ "\n", "


\n", "\n", - "*fit(X, y, init_weights=True)*\n", + "*fit(X, y, init_params=True)*\n", "\n", - "Learn weight coefficients from training data.\n", + "Learn model from training data.\n", "\n", "**Parameters**\n", "\n", @@ -547,9 +547,11 @@ "\n", " Target values.\n", "\n", - "- `init_weights` : bool (default: True)\n", + "- `init_params` : bool (default: True)\n", "\n", - " Reinitialize weights\n", + " Re-initializes model parametersprior to fitting.\n", + " Set False to continue training with weights from\n", + " a previous model fitting.\n", "\n", "**Returns**\n", "\n", diff --git a/docs/sources/user_guide/tf_regressor/TfLinearRegression_files/TfLinearRegression_17_2.png b/docs/sources/user_guide/tf_regressor/TfLinearRegression_files/TfLinearRegression_17_2.png index 2a72fb4c0a3057fc7232d6f7da32567c9ee49eb9..f8001f25d06f67d287cabcb0dbf931eaf0b4c21e 100644 GIT binary patch literal 7871 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 literal 8507 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 diff --git a/mlxtend/__init__.py b/mlxtend/__init__.py index 2739c1b81..b6b9504a4 100644 --- a/mlxtend/__init__.py +++ b/mlxtend/__init__.py @@ -4,4 +4,4 @@ # # License: BSD 3 clause -__version__ = '0.4.1dev' +__version__ = '0.4.1' diff --git a/mlxtend/_base/_base_estimator.py b/mlxtend/_base/_base_estimator.py index dd40a1f11..fe8c83e8a 100644 --- a/mlxtend/_base/_base_estimator.py +++ b/mlxtend/_base/_base_estimator.py @@ -110,6 +110,8 @@ def _print_progress(self, iteration, n_iter, if not iteration % time_interval: eta_sec = ((ela_sec / float(iteration)) * n_iter - ela_sec) + if eta_sec < 0.0: + eta_sec = 0.0 self.eta_str_ = self._to_hhmmss(eta_sec) s += ' | ETA: %s' % self.eta_str_ stderr.write(s) diff --git a/mlxtend/classifier/adaline.py b/mlxtend/classifier/adaline.py index 53ab206cc..9b435ef00 100644 --- a/mlxtend/classifier/adaline.py +++ b/mlxtend/classifier/adaline.py @@ -55,7 +55,7 @@ def __init__(self, eta=0.01, epochs=50, minibatches=None, random_seed=None, print_progress=0): - super(Adaline, self).__init__(print_progress=0, + super(Adaline, self).__init__(print_progress=print_progress, random_seed=random_seed) self.eta = eta self.minibatches = minibatches diff --git a/mlxtend/classifier/logistic_regression.py b/mlxtend/classifier/logistic_regression.py index 72f2b597a..e1157fde4 100644 --- a/mlxtend/classifier/logistic_regression.py +++ b/mlxtend/classifier/logistic_regression.py @@ -59,7 +59,7 @@ def __init__(self, eta=0.01, epochs=50, random_seed=None, print_progress=0): - super(LogisticRegression, self).__init__(print_progress=0, + super(LogisticRegression, self).__init__(print_progress=print_progress, random_seed=random_seed) self.eta = eta self.epochs = epochs diff --git a/mlxtend/classifier/multilayerperceptron.py b/mlxtend/classifier/multilayerperceptron.py index 1eb2d2b54..e7c9f96c1 100644 --- a/mlxtend/classifier/multilayerperceptron.py +++ b/mlxtend/classifier/multilayerperceptron.py @@ -79,8 +79,8 @@ def __init__(self, eta=0.5, epochs=50, minibatches=1, random_seed=None, print_progress=0): - super(MultiLayerPerceptron, self).__init__(print_progress=0, - random_seed=random_seed) + super(MultiLayerPerceptron, self).__init__( + print_progress=print_progress, random_seed=random_seed) if len(hidden_layers) > 1: raise AttributeError('Currently, only 1 hidden layer is supported') self.hidden_layers = hidden_layers @@ -191,7 +191,9 @@ def _fit(self, X, y, init_params=True): self.cost_.append(cost) if self.print_progress: - self._print_progress(epoch=i + 1, cost=cost) + self._print_progress(iteration=i + 1, + n_iter=self.epochs, + cost=cost) return self diff --git a/mlxtend/classifier/perceptron.py b/mlxtend/classifier/perceptron.py index 6801f0bad..6d2fc7235 100644 --- a/mlxtend/classifier/perceptron.py +++ b/mlxtend/classifier/perceptron.py @@ -46,7 +46,7 @@ class Perceptron(_BaseClassifier): """ def __init__(self, eta=0.1, epochs=50, random_seed=None, print_progress=0): - super(Perceptron, self).__init__(print_progress=0, + super(Perceptron, self).__init__(print_progress=print_progress, random_seed=random_seed) self.eta = eta self.epochs = epochs @@ -77,7 +77,9 @@ def _fit(self, X, y, init_params=True): errors += int(update != 0.0) if self.print_progress: - self._print_progress(epoch=i + 1, cost=errors) + self._print_progress(iteration=i + 1, + n_iter=self.epochs, + cost=errors) self.cost_.append(errors) return self diff --git a/mlxtend/classifier/softmax_regression.py b/mlxtend/classifier/softmax_regression.py index fd6018a34..fea0b7a33 100644 --- a/mlxtend/classifier/softmax_regression.py +++ b/mlxtend/classifier/softmax_regression.py @@ -58,12 +58,13 @@ class SoftmaxRegression(_BaseClassifier, _BaseMultiClass,): """ def __init__(self, eta=0.01, epochs=50, - l2=0.0, minibatches=1, + l2=0.0, + minibatches=1, n_classes=None, random_seed=None, print_progress=0): - super(SoftmaxRegression, self).__init__(print_progress=0, + super(SoftmaxRegression, self).__init__(print_progress=print_progress, random_seed=random_seed) self.eta = eta self.epochs = epochs @@ -81,7 +82,7 @@ def _cross_entropy(self, output, y_target): return - np.sum(np.log(output) * (y_target), axis=1) def _cost(self, cross_entropy): - L2_term = np.sum(self.w_ ** 2) + L2_term = self.l2 * np.sum(self.w_ ** 2) cross_entropy = cross_entropy + L2_term return 0.5 * np.mean(cross_entropy) @@ -135,7 +136,9 @@ def _fit(self, X, y, init_params=True): self.cost_.append(cost) if self.print_progress: - self._print_progress(epoch=i + 1, cost=cost) + self._print_progress(iteration=i + 1, + n_iter=self.epochs, + cost=cost) return self diff --git a/mlxtend/regressor/linear_regression.py b/mlxtend/regressor/linear_regression.py index 8b0526f26..a6b5b163a 100644 --- a/mlxtend/regressor/linear_regression.py +++ b/mlxtend/regressor/linear_regression.py @@ -60,7 +60,7 @@ class LinearRegression(_BaseRegressor): def __init__(self, eta=0.01, epochs=50, minibatches=None, random_seed=None, print_progress=0): - super(LinearRegression, self).__init__(print_progress=0, + super(LinearRegression, self).__init__(print_progress=print_progress, random_seed=random_seed) self.eta = eta diff --git a/mlxtend/tf_classifier/tf_multilayerperceptron.py b/mlxtend/tf_classifier/tf_multilayerperceptron.py index 1cbce3070..1d38b128c 100644 --- a/mlxtend/tf_classifier/tf_multilayerperceptron.py +++ b/mlxtend/tf_classifier/tf_multilayerperceptron.py @@ -91,8 +91,8 @@ def __init__(self, eta=0.5, epochs=50, minibatches=1, random_seed=None, print_progress=0, dtype=None): - super(TfMultiLayerPerceptron, self).__init__(print_progress=0, - random_seed=random_seed) + super(TfMultiLayerPerceptron, self).__init__( + print_progress=print_progress, random_seed=random_seed) self.eta = eta if len(hidden_layers) != len(activations): raise AttributeError('Number of hidden_layers and' diff --git a/mlxtend/tf_classifier/tf_softmax.py b/mlxtend/tf_classifier/tf_softmax.py index 2843bf24b..61c2caad1 100644 --- a/mlxtend/tf_classifier/tf_softmax.py +++ b/mlxtend/tf_classifier/tf_softmax.py @@ -60,6 +60,9 @@ def __init__(self, eta=0.5, epochs=50, n_classes=None, minibatches=1, random_seed=None, print_progress=0, dtype=None): + super(TfSoftmaxRegression, self).__init__( + print_progress=print_progress, random_seed=random_seed) + if dtype is None: self.dtype = tf.float32 else: @@ -68,8 +71,6 @@ def __init__(self, eta=0.5, epochs=50, n_classes=None, self.epochs = epochs self.n_classes = n_classes self.minibatches = minibatches - self.random_seed = random_seed - self.print_progress = print_progress def _fit(self, X, y, init_params=True,): self._check_target_array(y) @@ -140,7 +141,9 @@ def _fit(self, X, y, init_params=True,): train_acc = self._accuracy(y, tf_X, tf_w_, tf_b_) self.train_acc_.append(train_acc) if self.print_progress: - self._print_progress(epoch=epoch + 1, cost=avg_cost) + self._print_progress(iteration=epoch + 1, + n_iter=self.epochs, + cost=avg_cost) self.w_ = tf_w_.eval() self.b_ = tf_b_.eval()