{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Задача №12\n", "\n", "Предсказать сорт винограда из которого сделано вино, используя [результаты химических анализов](https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data) ([описание](http://archive.ics.uci.edu/ml/datasets/Wine) данных), c помощью [KNN](http://www.machinelearning.ru/wiki/index.php?title=Метод_k_ближайших_соседей_%28пример%29) - метода k ближайших соседей с тремя различными метриками. Построить график зависимости величины ошибки от числа соседей k." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "\n", "import requests\n", "import io\n", "import scipy\n", "import matplotlib.pyplot as plt\n", "\n", "from sklearn.neighbors import KNeighborsClassifier\n", "from sklearn.model_selection import train_test_split" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Загружаем данные" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [], "source": [ "url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data'\n", "data = requests.get(url)\n", "assert data.status_code == 200" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Конвертируем датасет в обучучающую и тестирующую выборки" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [], "source": [ "dataset = scipy.genfromtxt(\n", " io.StringIO(data.text),\n", " delimiter=',',\n", " dtype=[('class', scipy.int8), ('features', scipy.float64, (13,))]\n", ")\n", "\n", "x = [item[1] for item in dataset]\n", "y = [item[0] for item in dataset]\n", "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.33, random_state=42)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Обучение модели" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [], "source": [ "neighbors = range(1, 21)\n", "means = {}\n", "\n", "for metric in ('euclidean', 'manhattan', 'chebyshev'):\n", " current_means = []\n", " for k in neighbors:\n", " classifier = KNeighborsClassifier(n_neighbors=k, metric=metric)\n", " classifier.fit(x_train, y_train)\n", " prediction = classifier.predict(x_test)\n", " \n", " current_means.append(scipy.mean(prediction == y_test))\n", " \n", " means[metric] = current_means\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Построение графика" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "for metric, current_means in means.items():\n", " errors = [1 - mean for mean in current_means]\n", " plt.plot(neighbors, errors, label=metric)\n", " \n", "plt.xticks(neighbors[1::2])\n", "plt.xlabel('Count of neighbors')\n", "plt.ylabel('Error')\n", "plt.legend(loc='lower right')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "В качестве метрик рассматривались:\n", "- Евклидова норма(euclidean)\n", "- Сумма модулей(manhattan)\n", "- Максимум модулей(chebyshev)\n", "\n", "Количество ближайших соседей neighbors варьировалось от 1 до 20\n", "\n", "### Вывод\n", "Метрика manhattan достаточно хорошо работает при neighbors >= 7" ] }, { "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 }