{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "L5ALSPQSJp-n" }, "source": [ "# 확률적 경사 하강법" ] }, { "cell_type": "markdown", "metadata": { "id": "hnCwTs5KJp-t" }, "source": [ "\n", " \n", "
\n", " 구글 코랩에서 실행하기\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "3x4OwaSIR50l" }, "source": [ "## SGDClassifier" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "id": "j3z-zKXoRmWB" }, "outputs": [], "source": [ "import pandas as pd\n", "\n", "fish = pd.read_csv('https://bit.ly/fish_csv_data')" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "id": "WAiJVY9nR1fF" }, "outputs": [], "source": [ "fish_input = fish[['Weight','Length','Diagonal','Height','Width']].to_numpy()\n", "fish_target = fish['Species'].to_numpy()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "id": "AW6LMW_URpto" }, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "\n", "train_input, test_input, train_target, test_target = train_test_split(\n", " fish_input, fish_target, random_state=42)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "id": "1RTAwK_DRutj" }, "outputs": [], "source": [ "from sklearn.preprocessing import StandardScaler\n", "\n", "ss = StandardScaler()\n", "ss.fit(train_input)\n", "train_scaled = ss.transform(train_input)\n", "test_scaled = ss.transform(test_input)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "id": "FSyujXY7sli6" }, "outputs": [], "source": [ "from sklearn.linear_model import SGDClassifier" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "KofoXhbwR9yu", "outputId": "1d6a0eac-9a2d-4008-a7fa-044c2e39907d" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.773109243697479\n", "0.775\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/studio-lab-user/.conda/envs/default/lib/python3.9/site-packages/sklearn/linear_model/_stochastic_gradient.py:705: ConvergenceWarning: Maximum number of iteration reached before convergence. Consider increasing max_iter to improve the fit.\n", " warnings.warn(\n" ] } ], "source": [ "# 사이킷런 1.1.0 버전 이하일 경우 'log_loss'를 'log'로 바꾸어 주세요.\n", "sc = SGDClassifier(loss='log_loss', max_iter=10, random_state=42)\n", "sc.fit(train_scaled, train_target)\n", "\n", "print(sc.score(train_scaled, train_target))\n", "print(sc.score(test_scaled, test_target))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "duwA4N3eSUk5", "outputId": "f26d3a96-dca9-46b0-8201-4e12b15d57aa" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.8151260504201681\n", "0.85\n" ] } ], "source": [ "sc.partial_fit(train_scaled, train_target)\n", "\n", "print(sc.score(train_scaled, train_target))\n", "print(sc.score(test_scaled, test_target))" ] }, { "cell_type": "markdown", "metadata": { "id": "TEtfnUQhzKO2" }, "source": [ "## 에포크와 과대/과소적합" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "id": "pt7BHZVZ-dWT" }, "outputs": [], "source": [ "import numpy as np\n", "\n", "# 사이킷런 1.1 버전에서는 SGDClassifier의 loss 매개변수 중 \n", "# 로지스틱 손실을 의미하는 'log'가 'log_loss'로 바뀐다는 경고가 발생합니다.\n", "# 사이킷런 1.1 이상을 사용하는 경우 loss='log'를 loss='log_loss'로 변경하세요.\n", "sc = SGDClassifier(loss='log', random_state=42)\n", "\n", "train_score = []\n", "test_score = []\n", "\n", "classes = np.unique(train_target)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "id": "-65Gz13tVOP7" }, "outputs": [], "source": [ "for _ in range(0, 300):\n", " sc.partial_fit(train_scaled, train_target, classes=classes)\n", " \n", " train_score.append(sc.score(train_scaled, train_target))\n", " test_score.append(sc.score(test_scaled, test_target))" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 279 }, "id": "V19SzZJ5ZjSI", "outputId": "de31130f-e860-4143-99ec-014654191160" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "plt.plot(train_score)\n", "plt.plot(test_score)\n", "plt.xlabel('epoch')\n", "plt.ylabel('accuracy')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "pdp2Ykst1K_I", "outputId": "6214bd83-00c8-4a16-9931-ad7746ddff9f" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.957983193277311\n", "0.925\n" ] } ], "source": [ "# 사이킷런 1.1 버전에서는 SGDClassifier의 loss 매개변수 중 \n", "# 로지스틱 손실을 의미하는 'log'가 'log_loss'로 바뀐다는 경고가 발생합니다.\n", "# 사이킷런 1.1 이상을 사용하는 경우 loss='log'를 loss='log_loss'로 변경하세요.\n", "sc = SGDClassifier(loss='log', max_iter=100, tol=None, random_state=42)\n", "sc.fit(train_scaled, train_target)\n", "\n", "print(sc.score(train_scaled, train_target))\n", "print(sc.score(test_scaled, test_target))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "OL7-y1kgIP4S", "outputId": "554597de-bec8-45d1-92e6-a0f5a7ebe519" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "0.9495798319327731\n", "0.925\n" ] } ], "source": [ "sc = SGDClassifier(loss='hinge', max_iter=100, tol=None, random_state=42)\n", "sc.fit(train_scaled, train_target)\n", "\n", "print(sc.score(train_scaled, train_target))\n", "print(sc.score(test_scaled, test_target))" ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "4-2 확률적 경사 하강법.ipynb", "provenance": [] }, "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.7.3" } }, "nbformat": 4, "nbformat_minor": 4 }