{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 交叉验证"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 自定义实现交叉验证"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.datasets import load_iris\n",
    "from sklearn.neighbors import KNeighborsClassifier\n",
    "import numpy as np"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([141,  77,  67, 104,   2,  54, 105,  49,   4, 102,  17,  52,  22,\n",
       "        21,  41,  28, 120, 114,  11, 101,  19,  10,  82,  80, 121, 115,\n",
       "       111,  84,  40,   5, 119, 133,  34, 118,  59,  66,  16,  89, 110,\n",
       "        23,  60,  98,  29,  75,  56, 116,  97,  86,  72,  94, 126, 112,\n",
       "        12,  76, 127,  88,  74,  55,  96,  93,  63,  90, 100,  70,  92,\n",
       "        42, 125, 140, 146,  50,   3, 138, 122, 124,  99,  27,   6,  44,\n",
       "       113,   8, 134,  85,  47,  48,  24,  73,  39, 137, 147,  71, 136,\n",
       "       129, 106, 131,  15,  46, 123,   1,  51,  65,  25, 132, 107,  14,\n",
       "        61, 108, 103,  58,  91,  31,  20, 109,  95, 139,  45,  33,  38,\n",
       "        53, 149,   7, 148,  87,  13,  43,  81,  64, 117, 130,  26,  78,\n",
       "        18, 142, 128, 143,  35,  69,   0,  68,  83,  32,  79, 135,  37,\n",
       "       144,  62,  30,  57, 145,   9,  36], dtype=int32)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris = load_iris()\n",
    "X = iris.data\n",
    "y = iris.target\n",
    "k = 5  # number of folds\n",
    "n_samples = X.shape[0]  # number of samples\n",
    "fold_size = n_samples // k  # size of each fold\n",
    "knn = KNeighborsClassifier(n_neighbors=k)\n",
    "scores = []  # to store the scores for each fold\n",
    "indices = np.random.permutation(n_samples)  # shuffle the indices\n",
    "indices"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "将数据集划分为k个折叠"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[array([141,  77,  67, 104,   2,  54, 105,  49,   4, 102,  17,  52,  22,\n",
       "         21,  41,  28, 120, 114,  11, 101,  19,  10,  82,  80, 121, 115,\n",
       "        111,  84,  40,   5], dtype=int32),\n",
       " array([119, 133,  34, 118,  59,  66,  16,  89, 110,  23,  60,  98,  29,\n",
       "         75,  56, 116,  97,  86,  72,  94, 126, 112,  12,  76, 127,  88,\n",
       "         74,  55,  96,  93], dtype=int32),\n",
       " array([ 63,  90, 100,  70,  92,  42, 125, 140, 146,  50,   3, 138, 122,\n",
       "        124,  99,  27,   6,  44, 113,   8, 134,  85,  47,  48,  24,  73,\n",
       "         39, 137, 147,  71], dtype=int32),\n",
       " array([136, 129, 106, 131,  15,  46, 123,   1,  51,  65,  25, 132, 107,\n",
       "         14,  61, 108, 103,  58,  91,  31,  20, 109,  95, 139,  45,  33,\n",
       "         38,  53, 149,   7], dtype=int32),\n",
       " array([148,  87,  13,  43,  81,  64, 117, 130,  26,  78,  18, 142, 128,\n",
       "        143,  35,  69,   0,  68,  83,  32,  79, 135,  37, 144,  62,  30,\n",
       "         57, 145,   9,  36], dtype=int32)]"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "folds = [indices[i*fold_size:(i+1)*fold_size] for i in range(k)]\n",
    "folds"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[0.9666666666666667,\n",
       " 0.9666666666666667,\n",
       " 0.9666666666666667,\n",
       " 0.9666666666666667,\n",
       " 0.9666666666666667]"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "for i in range(k):\n",
    "    test_indices = folds[i]\n",
    "    train_indices = np.concatenate([folds[j]\n",
    "                                   for j in range(k) if j != i], axis=0)\n",
    "    X_train, y_train = X[train_indices], y[train_indices]\n",
    "    X_test, y_test = X[test_indices], y[test_indices]\n",
    "    knn.fit(X_train, y_train)\n",
    "    score = knn.score(X_test, y_test)\n",
    "    scores.append(score)\n",
    "scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### SKLearn工具包中的实现"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.96666667, 1.        , 0.93333333, 0.96666667, 1.        ])"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_score\n",
    "scores = cross_val_score(knn, X, y, cv=k)\n",
    "scores"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 模型验证曲线"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 学习曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([ 12,  24,  36,  48,  60,  72,  84,  96, 108, 120]),\n",
       " array([[1.        , 1.        , 1.        , 1.        , 1.        ],\n",
       "        [1.        , 1.        , 1.        , 1.        , 1.        ],\n",
       "        [1.        , 1.        , 1.        , 1.        , 1.        ],\n",
       "        [1.        , 1.        , 1.        , 1.        , 1.        ],\n",
       "        [1.        , 1.        , 1.        , 1.        , 1.        ],\n",
       "        [1.        , 1.        , 1.        , 1.        , 1.        ],\n",
       "        [0.98809524, 0.97619048, 0.98809524, 0.98809524, 0.97619048],\n",
       "        [0.97916667, 0.96875   , 0.97916667, 0.98958333, 0.98958333],\n",
       "        [0.97222222, 0.97222222, 0.97222222, 0.98148148, 0.96296296],\n",
       "        [0.96666667, 0.96666667, 0.975     , 0.975     , 0.96666667]]),\n",
       " array([[0.33333333, 0.33333333, 0.33333333, 0.33333333, 0.33333333],\n",
       "        [0.33333333, 0.33333333, 0.33333333, 0.33333333, 0.33333333],\n",
       "        [0.33333333, 0.33333333, 0.33333333, 0.33333333, 0.33333333],\n",
       "        [0.66666667, 0.66666667, 0.66666667, 0.66666667, 0.66666667],\n",
       "        [0.66666667, 0.66666667, 0.66666667, 0.66666667, 0.66666667],\n",
       "        [0.66666667, 0.66666667, 0.66666667, 0.66666667, 0.66666667],\n",
       "        [0.93333333, 0.8       , 0.83333333, 0.86666667, 0.8       ],\n",
       "        [0.96666667, 0.93333333, 0.9       , 0.9       , 0.96666667],\n",
       "        [0.96666667, 1.        , 0.9       , 0.96666667, 1.        ],\n",
       "        [0.96666667, 1.        , 0.93333333, 0.96666667, 1.        ]]))"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.model_selection import learning_curve\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "train_sizes, train_scores, test_scores = learning_curve(\n",
    "    knn, X, y, cv=k, n_jobs=-1, train_sizes=np.linspace(0.1, 1.0, 10)\n",
    ")\n",
    "train_sizes, train_scores, test_scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array([1.        , 1.        , 1.        , 1.        , 1.        ,\n",
       "        1.        , 0.98333333, 0.98125   , 0.97222222, 0.97      ]),\n",
       " array([0.        , 0.        , 0.        , 0.        , 0.        ,\n",
       "        0.        , 0.00583212, 0.00779512, 0.00585607, 0.00408248]),\n",
       " array([0.33333333, 0.33333333, 0.33333333, 0.66666667, 0.66666667,\n",
       "        0.66666667, 0.84666667, 0.93333333, 0.96666667, 0.97333333]),\n",
       " array([0.        , 0.        , 0.        , 0.        , 0.        ,\n",
       "        0.        , 0.04988877, 0.02981424, 0.03651484, 0.02494438]))"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_scores_mean = np.mean(train_scores, axis=1)\n",
    "train_scores_std = np.std(train_scores, axis=1)\n",
    "test_scores_mean = np.mean(test_scores, axis=1)\n",
    "test_scores_std = np.std(test_scores, axis=1)\n",
    "train_scores_mean, train_scores_std, test_scores_mean, test_scores_std"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure()\n",
    "plt.title(\"Learning Curve\")\n",
    "plt.xlabel(\"Training examples\")\n",
    "plt.ylabel(\"Score\")\n",
    "plt.grid()\n",
    "\n",
    "plt.fill_between(train_sizes, train_scores_mean - train_scores_std,\n",
    "                 train_scores_mean + train_scores_std, alpha=0.1,\n",
    "                 color=\"r\")\n",
    "plt.fill_between(train_sizes, test_scores_mean - test_scores_std,\n",
    "                 test_scores_mean + test_scores_std, alpha=0.1, color=\"g\")\n",
    "\n",
    "plt.plot(train_sizes, train_scores_mean, 'o-', color=\"r\",\n",
    "         label=\"Training score\")\n",
    "plt.plot(train_sizes, test_scores_mean, 'o-', color=\"g\",\n",
    "         label=\"Cross-validation score\")\n",
    "\n",
    "plt.legend(loc=\"best\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 验证曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 800x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.model_selection import validation_curve\n",
    "param_range = np.arange(1, 10)\n",
    "\n",
    "train_scores, test_scores = validation_curve(\n",
    "    knn, X, y, param_name='n_neighbors', param_range=param_range,\n",
    "    cv=5, scoring=\"accuracy\", n_jobs=-1\n",
    ")\n",
    "\n",
    "# 计算训练集和验证集的平均得分\n",
    "train_scores_mean = np.mean(train_scores, axis=1)\n",
    "test_scores_mean = np.mean(test_scores, axis=1)\n",
    "\n",
    "# 绘制验证曲线\n",
    "plt.figure(figsize=(8, 6))\n",
    "plt.plot(param_range, train_scores_mean, label=\"Training score\", color=\"r\")\n",
    "plt.plot(param_range, test_scores_mean,\n",
    "         label=\"Cross-validation score\", color=\"g\")\n",
    "\n",
    "# 设置图形属性\n",
    "plt.title(f\"Validation Curve with KNN (n_neighbors)\")\n",
    "plt.xlabel(\"n_neighbors\")\n",
    "plt.ylabel(\"Accuracy\")\n",
    "plt.xscale(\"log\")  # 对数尺度\n",
    "plt.legend(loc=\"best\")\n",
    "plt.grid(True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 手动实现验证曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "param_value: 1, train_scores: 1.0, test_scores: 0.96\n",
      "param_value: 2, train_scores: 0.9766666666666666, test_scores: 0.96\n",
      "param_value: 3, train_scores: 0.9633333333333333, test_scores: 0.9666666666666668\n",
      "param_value: 4, train_scores: 0.9666666666666666, test_scores: 0.9733333333333334\n",
      "param_value: 5, train_scores: 0.97, test_scores: 0.9733333333333334\n",
      "param_value: 6, train_scores: 0.9716666666666667, test_scores: 0.9733333333333334\n",
      "param_value: 7, train_scores: 0.9783333333333333, test_scores: 0.9733333333333334\n",
      "param_value: 8, train_scores: 0.9716666666666667, test_scores: 0.9733333333333334\n",
      "param_value: 9, train_scores: 0.975, test_scores: 0.9666666666666668\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import KFold\n",
    "model = knn\n",
    "param_name = 'n_neighbors'\n",
    "param_range = np.arange(1, 10)\n",
    "# 初始化存储得分的数组\n",
    "train_scores = []\n",
    "test_scores = []\n",
    "for param_value in param_range:\n",
    "    # 设置超参数\n",
    "    model.set_params(**{param_name: param_value})\n",
    "\n",
    "    # 初始化当前超参数值的得分\n",
    "    train_fold_scores = []\n",
    "    test_fold_scores = []\n",
    "\n",
    "    # 使用 KFold 交叉验证\n",
    "    kf = KFold(n_splits=5, shuffle=True, random_state=42)\n",
    "    for train_index, test_index in kf.split(X):\n",
    "        X_train, X_test = X[train_index], X[test_index]\n",
    "        y_train, y_test = y[train_index], y[test_index]\n",
    "\n",
    "        # 训练模型\n",
    "        model.fit(X_train, y_train)\n",
    "\n",
    "        # 计算训练集和验证集得分\n",
    "        train_score = model.score(X_train, y_train)\n",
    "        test_score = model.score(X_test, y_test)\n",
    "\n",
    "        # 保存当前 fold 的得分\n",
    "        train_fold_scores.append(train_score)\n",
    "        test_fold_scores.append(test_score)\n",
    "\n",
    "    # 计算当前超参数值的平均得分\n",
    "    train_scores.append(np.mean(train_fold_scores))\n",
    "    test_scores.append(np.mean(test_fold_scores))\n",
    "\n",
    "    print(\n",
    "        f\"param_value: {param_value}, train_scores: {train_scores[-1]}, test_scores: {test_scores[-1]}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 手动实现学习曲线"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1.0, 1.0, 1.0, 0.9833333333333333, 1.0, 1.0, 0.9809523809523809, 0.9833333333333333, 0.9777777777777777] [0.25925925925925924, 0.16666666666666666, 0.047619047619047616, 0.4222222222222222, 0.3333333333333333, 0.16666666666666666, 0.17777777777777778, 0.7666666666666667, 0.9333333333333333]\n"
     ]
    }
   ],
   "source": [
    "train_scores, test_scores = [], []\n",
    "train_sizes = np.arange(0.1, 1.0, 0.1)\n",
    "n_samples = X.shape[0]\n",
    "for train_size in train_sizes:\n",
    "    train_subset = int(n_samples * train_size)\n",
    "    X_train, X_test = X[:train_subset], X[train_subset:]\n",
    "    y_train, y_test = y[:train_subset], y[train_subset:]\n",
    "    model.fit(X_train, y_train)\n",
    "    train_scores.append(model.score(X_train, y_train))\n",
    "    test_scores.append(model.score(X_test, y_test))\n",
    "print(train_scores, test_scores)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "DataAnalysis",
   "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.9.20"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}