{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "S:\\Users\\RezyapkinV\\AppData\\Local\\Continuum\\anaconda3\\lib\\site-packages\\h5py\\__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.\n", " from ._conv import register_converters as _register_converters\n", "Using TensorFlow backend.\n" ] } ], "source": [ "import numpy\n", "import pandas\n", "from keras.models import Sequential\n", "from keras.layers import Dense\n", "from keras.wrappers.scikit_learn import KerasClassifier\n", "from keras.utils import np_utils\n", "from sklearn.model_selection import cross_val_score\n", "from sklearn.model_selection import KFold\n", "from sklearn.preprocessing import LabelEncoder\n", "from sklearn.pipeline import Pipeline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Данные:\n", "Будем работать с датасетом [The Iris Dataset](http://scikit-learn.org/stable/auto_examples/datasets/plot_iris_dataset.html)." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from sklearn.datasets import load_iris" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "data = load_iris()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "X, y = data['data'], data['target']" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "# encode class values as integers\n", "encoder = LabelEncoder()\n", "encoder.fit(y)\n", "encoded_y = encoder.transform(y)\n", "# convert integers to dummy variables (i.e. one hot encoded)\n", "dummy_y = np_utils.to_categorical(encoded_y)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([[5.1, 3.5, 1.4, 0.2],\n", " [4.9, 3. , 1.4, 0.2],\n", " [4.7, 3.2, 1.3, 0.2],\n", " [4.6, 3.1, 1.5, 0.2],\n", " [5. , 3.6, 1.4, 0.2],\n", " [5.4, 3.9, 1.7, 0.4],\n", " [4.6, 3.4, 1.4, 0.3],\n", " [5. , 3.4, 1.5, 0.2],\n", " [4.4, 2.9, 1.4, 0.2],\n", " [4.9, 3.1, 1.5, 0.1],\n", " [5.4, 3.7, 1.5, 0.2],\n", " [4.8, 3.4, 1.6, 0.2],\n", " [4.8, 3. , 1.4, 0.1],\n", " [4.3, 3. , 1.1, 0.1],\n", " [5.8, 4. , 1.2, 0.2],\n", " [5.7, 4.4, 1.5, 0.4],\n", " [5.4, 3.9, 1.3, 0.4],\n", " [5.1, 3.5, 1.4, 0.3],\n", " [5.7, 3.8, 1.7, 0.3],\n", " [5.1, 3.8, 1.5, 0.3],\n", " [5.4, 3.4, 1.7, 0.2],\n", " [5.1, 3.7, 1.5, 0.4],\n", " [4.6, 3.6, 1. , 0.2],\n", " [5.1, 3.3, 1.7, 0.5],\n", " [4.8, 3.4, 1.9, 0.2],\n", " [5. , 3. , 1.6, 0.2],\n", " [5. , 3.4, 1.6, 0.4],\n", " [5.2, 3.5, 1.5, 0.2],\n", " [5.2, 3.4, 1.4, 0.2],\n", " [4.7, 3.2, 1.6, 0.2],\n", " [4.8, 3.1, 1.6, 0.2],\n", " [5.4, 3.4, 1.5, 0.4],\n", " [5.2, 4.1, 1.5, 0.1],\n", " [5.5, 4.2, 1.4, 0.2],\n", " [4.9, 3.1, 1.5, 0.1],\n", " [5. , 3.2, 1.2, 0.2],\n", " [5.5, 3.5, 1.3, 0.2],\n", " [4.9, 3.1, 1.5, 0.1],\n", " [4.4, 3. , 1.3, 0.2],\n", " [5.1, 3.4, 1.5, 0.2],\n", " [5. , 3.5, 1.3, 0.3],\n", " [4.5, 2.3, 1.3, 0.3],\n", " [4.4, 3.2, 1.3, 0.2],\n", " [5. , 3.5, 1.6, 0.6],\n", " [5.1, 3.8, 1.9, 0.4],\n", " [4.8, 3. , 1.4, 0.3],\n", " [5.1, 3.8, 1.6, 0.2],\n", " [4.6, 3.2, 1.4, 0.2],\n", " [5.3, 3.7, 1.5, 0.2],\n", " [5. , 3.3, 1.4, 0.2],\n", " [7. , 3.2, 4.7, 1.4],\n", " [6.4, 3.2, 4.5, 1.5],\n", " [6.9, 3.1, 4.9, 1.5],\n", " [5.5, 2.3, 4. , 1.3],\n", " [6.5, 2.8, 4.6, 1.5],\n", " [5.7, 2.8, 4.5, 1.3],\n", " [6.3, 3.3, 4.7, 1.6],\n", " [4.9, 2.4, 3.3, 1. ],\n", " [6.6, 2.9, 4.6, 1.3],\n", " [5.2, 2.7, 3.9, 1.4],\n", " [5. , 2. , 3.5, 1. ],\n", " [5.9, 3. , 4.2, 1.5],\n", " [6. , 2.2, 4. , 1. ],\n", " [6.1, 2.9, 4.7, 1.4],\n", " [5.6, 2.9, 3.6, 1.3],\n", " [6.7, 3.1, 4.4, 1.4],\n", " [5.6, 3. , 4.5, 1.5],\n", " [5.8, 2.7, 4.1, 1. ],\n", " [6.2, 2.2, 4.5, 1.5],\n", " [5.6, 2.5, 3.9, 1.1],\n", " [5.9, 3.2, 4.8, 1.8],\n", " [6.1, 2.8, 4. , 1.3],\n", " [6.3, 2.5, 4.9, 1.5],\n", " [6.1, 2.8, 4.7, 1.2],\n", " [6.4, 2.9, 4.3, 1.3],\n", " [6.6, 3. , 4.4, 1.4],\n", " [6.8, 2.8, 4.8, 1.4],\n", " [6.7, 3. , 5. , 1.7],\n", " [6. , 2.9, 4.5, 1.5],\n", " [5.7, 2.6, 3.5, 1. ],\n", " [5.5, 2.4, 3.8, 1.1],\n", " [5.5, 2.4, 3.7, 1. ],\n", " [5.8, 2.7, 3.9, 1.2],\n", " [6. , 2.7, 5.1, 1.6],\n", " [5.4, 3. , 4.5, 1.5],\n", " [6. , 3.4, 4.5, 1.6],\n", " [6.7, 3.1, 4.7, 1.5],\n", " [6.3, 2.3, 4.4, 1.3],\n", " [5.6, 3. , 4.1, 1.3],\n", " [5.5, 2.5, 4. , 1.3],\n", " [5.5, 2.6, 4.4, 1.2],\n", " [6.1, 3. , 4.6, 1.4],\n", " [5.8, 2.6, 4. , 1.2],\n", " [5. , 2.3, 3.3, 1. ],\n", " [5.6, 2.7, 4.2, 1.3],\n", " [5.7, 3. , 4.2, 1.2],\n", " [5.7, 2.9, 4.2, 1.3],\n", " [6.2, 2.9, 4.3, 1.3],\n", " [5.1, 2.5, 3. , 1.1],\n", " [5.7, 2.8, 4.1, 1.3],\n", " [6.3, 3.3, 6. , 2.5],\n", " [5.8, 2.7, 5.1, 1.9],\n", " [7.1, 3. , 5.9, 2.1],\n", " [6.3, 2.9, 5.6, 1.8],\n", " [6.5, 3. , 5.8, 2.2],\n", " [7.6, 3. , 6.6, 2.1],\n", " [4.9, 2.5, 4.5, 1.7],\n", " [7.3, 2.9, 6.3, 1.8],\n", " [6.7, 2.5, 5.8, 1.8],\n", " [7.2, 3.6, 6.1, 2.5],\n", " [6.5, 3.2, 5.1, 2. ],\n", " [6.4, 2.7, 5.3, 1.9],\n", " [6.8, 3. , 5.5, 2.1],\n", " [5.7, 2.5, 5. , 2. ],\n", " [5.8, 2.8, 5.1, 2.4],\n", " [6.4, 3.2, 5.3, 2.3],\n", " [6.5, 3. , 5.5, 1.8],\n", " [7.7, 3.8, 6.7, 2.2],\n", " [7.7, 2.6, 6.9, 2.3],\n", " [6. , 2.2, 5. , 1.5],\n", " [6.9, 3.2, 5.7, 2.3],\n", " [5.6, 2.8, 4.9, 2. ],\n", " [7.7, 2.8, 6.7, 2. ],\n", " [6.3, 2.7, 4.9, 1.8],\n", " [6.7, 3.3, 5.7, 2.1],\n", " [7.2, 3.2, 6. , 1.8],\n", " [6.2, 2.8, 4.8, 1.8],\n", " [6.1, 3. , 4.9, 1.8],\n", " [6.4, 2.8, 5.6, 2.1],\n", " [7.2, 3. , 5.8, 1.6],\n", " [7.4, 2.8, 6.1, 1.9],\n", " [7.9, 3.8, 6.4, 2. ],\n", " [6.4, 2.8, 5.6, 2.2],\n", " [6.3, 2.8, 5.1, 1.5],\n", " [6.1, 2.6, 5.6, 1.4],\n", " [7.7, 3. , 6.1, 2.3],\n", " [6.3, 3.4, 5.6, 2.4],\n", " [6.4, 3.1, 5.5, 1.8],\n", " [6. , 3. , 4.8, 1.8],\n", " [6.9, 3.1, 5.4, 2.1],\n", " [6.7, 3.1, 5.6, 2.4],\n", " [6.9, 3.1, 5.1, 2.3],\n", " [5.8, 2.7, 5.1, 1.9],\n", " [6.8, 3.2, 5.9, 2.3],\n", " [6.7, 3.3, 5.7, 2.5],\n", " [6.7, 3. , 5.2, 2.3],\n", " [6.3, 2.5, 5. , 1.9],\n", " [6.5, 3. , 5.2, 2. ],\n", " [6.2, 3.4, 5.4, 2.3],\n", " [5.9, 3. , 5.1, 1.8]])" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X[:, :5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Задание:\n", "Будем решать задачу классификации на 3 класса. В качестве модели используется нейронная сеть с одним скрытым слоем. Ваша задача оценить качество решенения задачи классификации по метрике `accuracy` в зависимости от числа нейронов скрытого слоя. Также оцените дисперсию функции качества в зависимости от числа главных компонент.\n", "\n", "Нарисуйте график зависимости функции качества и ее дисперсии от числа нейронов скрытого слоя." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "def baseline_model(hidden_input, dim):\n", " # create model\n", " model = Sequential()\n", " model.add(Dense(hidden_input, input_dim=dim, activation='relu'))\n", " model.add(Dense(3, activation='softmax'))\n", " # Compile model\n", " model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])\n", " return model" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model with 1 neurons in hidden layer: ac = 38.67% (std = 21.46%)\n", "Model with 2 neurons in hidden layer: ac = 38.67% (std = 24.00%)\n", "Model with 3 neurons in hidden layer: ac = 60.67% (std = 16.45%)\n", "Model with 4 neurons in hidden layer: ac = 42.67% (std = 23.13%)\n", "Wall time: 12min\n" ] } ], "source": [ "%%time\n", "hidden_inputs = range(1, 5)\n", "means = []\n", "stds = []\n", "for i in hidden_inputs:\n", " #model = baseline_model(hidden_input=i)\n", " estimator = KerasClassifier(build_fn=baseline_model, hidden_input=i, dim = 4, epochs=20, batch_size=5, verbose=0)\n", " result = cross_val_score(estimator, X, dummy_y, cv=kfold)\n", " means.append(result.mean()*100)\n", " stds.append(result.std()*100)\n", " print(\"Model with %d neurons in hidden layer: ac = %.2f%% (std = %.2f%%)\" % (i, result.mean()*100, result.std()*100))" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(hidden_inputs, means, label='Accuracy')\n", "plt.plot(hidden_inputs, stds, label=\"STD\")\n", "plt.xlabel(\"Number of neurons in hidden layer\")\n", "plt.ylabel(\"Percentage\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Model with dim = 1: ac = 27.33% (std = 14.13%)\n", "Model with dim = 2: ac = 35.33% (std = 16.34%)\n", "Model with dim = 3: ac = 41.33% (std = 26.13%)\n", "Model with dim = 4: ac = 47.33% (std = 23.37%)\n", "Wall time: 15min 46s\n" ] } ], "source": [ "%%time\n", "hidden_input = 3\n", "dims = range(1, 5)\n", "means = []\n", "stds = []\n", "for i in dims:\n", " #model = baseline_model(hidden_input=i)\n", " estimator = KerasClassifier(build_fn=baseline_model, hidden_input=hidden_input, dim = i, epochs=20, batch_size=5, verbose=0)\n", " result = cross_val_score(estimator, X[:, :i], dummy_y, cv=kfold)\n", " means.append(result.mean()*100)\n", " stds.append(result.std()*100)\n", " print(\"Model with dim = %d: ac = %.2f%% (std = %.2f%%)\" % (i, result.mean()*100, result.std()*100))" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(hidden_inputs, means, label='Accuracy')\n", "plt.plot(hidden_inputs, stds, label=\"STD\")\n", "plt.xlabel(\"Dim\")\n", "plt.ylabel(\"Percentage\")\n", "plt.legend()\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }