├── Report.pdf ├── 9_集成学习.ipynb └── 3_逻辑回归.ipynb /Report.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/TavinWang/Machine-Learning/HEAD/Report.pdf -------------------------------------------------------------------------------- /9_集成学习.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "d09eb5dc", 6 | "metadata": {}, 7 | "source": [ 8 | "## 使用随机森林的方法解决手写数字识别问题" 9 | ] 10 | }, 11 | { 12 | "cell_type": "code", 13 | "execution_count": 1, 14 | "id": "1a7e1688", 15 | "metadata": {}, 16 | "outputs": [], 17 | "source": [ 18 | "from sklearn.datasets import load_digits\n", 19 | "from sklearn.model_selection import train_test_split\n", 20 | "from sklearn.ensemble import RandomForestClassifier\n", 21 | "from sklearn.metrics import accuracy_score, confusion_matrix\n", 22 | "import matplotlib.pyplot as plt\n", 23 | "from sklearn.datasets import fetch_openml\n", 24 | "import numpy as np\n", 25 | "\n", 26 | "plt.rcParams['font.sans-serif'] = ['SimHei']" 27 | ] 28 | }, 29 | { 30 | "cell_type": "code", 31 | "execution_count": 2, 32 | "id": "7a5bac87", 33 | "metadata": {}, 34 | "outputs": [ 35 | { 36 | "name": "stdout", 37 | "output_type": "stream", 38 | "text": [ 39 | "Accuracy: 0.9666666666666667\n" 40 | ] 41 | } 42 | ], 43 | "source": [ 44 | "digits = load_digits()\n", 45 | "X, y = digits.data, digits.target\n", 46 | "\n", 47 | "# 数据集划分\n", 48 | "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1017)\n", 49 | "\n", 50 | "# 创建随机森林分类器\n", 51 | "rf_classifier = RandomForestClassifier(n_estimators=100, random_state=1017)\n", 52 | "\n", 53 | "rf_classifier.fit(X_train, y_train)\n", 54 | "\n", 55 | "y_pred = rf_classifier.predict(X_test)\n", 56 | "\n", 57 | "# 计算准确率\n", 58 | "accuracy = accuracy_score(y_test, y_pred)\n", 59 | "print(f'Accuracy: {accuracy}')" 60 | ] 61 | }, 62 | { 63 | "cell_type": "code", 64 | "execution_count": 3, 65 | "id": "88ac4339", 66 | "metadata": {}, 67 | "outputs": [ 68 | { 69 | "data": { 70 | "image/png": "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", 71 | "text/plain": [ 72 | "
" 73 | ] 74 | }, 75 | "metadata": {}, 76 | "output_type": "display_data" 77 | } 78 | ], 79 | "source": [ 80 | "import seaborn as sns\n", 81 | "\n", 82 | "# 计算混淆矩阵\n", 83 | "cm = confusion_matrix(y_test, y_pred)\n", 84 | "\n", 85 | "# 使用Seaborn库绘制热力图\n", 86 | "plt.figure(figsize=(8, 6))\n", 87 | "sns.heatmap(cm, annot=True, fmt=\"d\", cmap=\"Blues\", xticklabels=digits.target_names, yticklabels=digits.target_names)\n", 88 | "plt.title('混淆矩阵')\n", 89 | "plt.xlabel('预测值')\n", 90 | "plt.ylabel('真实值')\n", 91 | "plt.show()" 92 | ] 93 | }, 94 | { 95 | "cell_type": "code", 96 | "execution_count": 4, 97 | "id": "d5a9a869", 98 | "metadata": {}, 99 | "outputs": [ 100 | { 101 | "data": { 102 | "image/png": "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tN/ZFK5CngnYF2YC8hX6TFRUVERNTU307ds3IiKWL18eJ5544gHJpjAV8kw8/PDDsXHjxhg4cGBEvL6zoKGhIUpKSuK5556L3r177/d1FBrFew+eeOKJuOCCC6K4uDi6du36lnuF3v3ud0dLS0s89dRT0a9fv/j3v/+9y2Uuu+yyaGhoiMrKyjj55JPb/FGOtu6h2rp1axQVFcVhhx32tpllZWWxYcOGuP766+P888+PWbNmxZIlS5yjlbdUyDMB+8JMQL5Cn4kLLrggvvvd78bQoUPj1VdfjV//+texcOHCNq1Lx1TIM/HZz342zjzzzNz369atixEjRsSiRYscI2QPFO89+OQnPxn19fUR8fp59KZNmxZHHHFEXHPNNRHx+rkcn3vuuRg+fHjeg+7NVq5cGV//+tfjtddei9/85jcxYsSIWLFiRdxwww0xbty43F6snVpbW6O5uTlaWloiYs97qJqamvL+zujyyy9v81EIi4qKYvbs2TFu3Li45ZZbory8PObPn7/LHjh4o0KeCdgXZgLyFfpMXHrppfG///u/cdxxx0VTU1OMHTs2PvShD7VpXTqmQp6JI444Io444oi8ZZ07d8474jpvkrFHzz33XHbVVVdlxx13XPblL385e/nll3M/27RpU/aDH/wgKy0tzcrLy7NFixblfjZ//vxs8uTJ2YABA7Kjjz46mzJlStbc3Jz7+e9///vslFNOyU466aTs0UcfzbvOj3/841lVVVXWo0ePrHfv3llpaekuX71798769u2b/g6ANzETkM9MQL5Cn4nt27dnjz/+ePbUU0/tdxYdQ6HPBG2neL+F559/PvvRj36UbdmyZY+XaWpqyu65557s3//+d27Zww8/nA0fPjx74IEHsoaGht2u19zcnH3rW9/Knn766QO+3ZCKmYB8ZgLymQnIZybYqSjLsqy933UHAACAQuXY73upqakpWltb85ZlWZZ3ovq2yrIsduzYscvyTZs25X3f3NwcDQ0Ne50P/wlmAvKZCchnJiCfmeiYvOP9Fo477rjo1q1bdO3aNerr6+Nzn/tcrF+/PpYtWxbNzc2xfv36OOmkk3Ln2vvzn/8cO3bsiGHDhsWXvvSlOPfcc2PhwoXxxrv4mGOOife///0RETF9+vR49tln44EHHsj9vLGxMXr06BHV1dUxdOjQiIh47LHH4rzzzot//etfjkZLuzITkM9MQD4zAfnMBDs5qvlbWL9+fURE1NbWxmmnnRajR4+OU045JSJePw/f9773vXjiiSfy1unUqVOMHTs2Lr744pg9e3YMGTIkLrzwwoiI+Mtf/hLHH398TJkyJTZv3hyHHnpo3pEEIyLmzZsX3bt3j82bN0efPn2iuLg4tm3bFi0tLfGBD3wgIl4/J+DEiRPjK1/5yj7ftk2bNsV73vOevGX3339/7jyCsDuFPBM7TZs2LZ5//nmn16NNzATkK/SZ+J//+Z+44447olevXvHTn/40+vXrt195FL5Cn4mdnn766Rg5cmT89a9/PSB5hUjxfguNjY0xderUePnll+OGG27IDUnE6+e/29Pptz7zmc/E6aefHj169IjDDjssvv/978fatWujpqYmFi1aFPPnz49FixbF6aefnrdelmVx4403xhVXXBEjR46MUaNGRXFxccycOTPuvPPOeOaZZyIioqWlJYqKivbrti1dujQGDRoU8+bNyy1717vetV+ZFL5CnomIiJkzZ8a1115rBxRtZiYgXyHPxF133RV33XVXzJs3LzZv3hwjRoyI5cuXR5cuXfYrl8JWyDOxU0tLS1xyySW7/cg7/z9/4/02Vq5cGY899lh88YtfjIiImpqaKC8vj0mTJsWcOXOivLw8ysvL4+67746I199JnjlzZvTs2TP3YF6/fn1UVFTkMouLi3c5315ExE9+8pNYuXJlHHvssdG5c+eoqqqKioqKmDRpUvzxj3+MioqKqKioiLlz50bnzvu3z2Tx4sUxcODAKCkpyX0dcsgh+5VJx1CoM7FgwYK45ZZbYuzYsfuVQ8djJiBfoc7EnXfeGRMmTIhBgwbFeeedFyeddFI8+eST+5VJx1CoM7HTTTfdpHS3geK9B62trVFUVBSzZs2KcePGRXNzc0S8/rGM9773vfHqq6/G448/Hs8++2wMGTIkXnvttYiI2LhxY0yePDkuv/zy3EETunbtGiUlJW95fWvWrIkJEybEMccck1v2yiuvxPjx42Pt2rVRX18fS5cujYqKitiyZcsu648ZMyYqKyvbfPsWL14cs2fPjiOOOCJ69eoVt912W5vXpWMq9Jk48cQTo6amJo477rg2r0PHZiYgXyHPRJZlsXLlyvh//+//5Zaddtpp8Yc//KFN69MxFfJM7PTSSy/F9OnT4/bbb9+r9ToixXsPli1bFuXl5XHyySfH97///TjjjDOiqKgo93caERGDBw+Ol19+OSIit8fppJNOiqeeeioOP/zw6NTp9bs3y7K3PYjBrFmzYvDgwXHGGWfklnXq1CmqqqrihBNOyH098MADudw3uuOOO+I73/lOm2/f6tWrY/z48fHSSy/FjBkz4pprromampo2r0/HU+gz0bNnz+jatWubLw9mAvIV8kw0NDTEjh07ok+fPrllRx55ZN5tgzcr5JnY6dJLL41JkybF8ccfv1frdUSK9x5UVFTEX/7yl3jwwQfjhBNOiNmzZ0efPn2itLQ0d5nGxsbo27fvLuv26NEjvvrVr0ZRUVHs2LEj/vnPf+YOZLanj2FcffXVcc899+yyfMqUKbFq1arc184DK7zZ4YcfvldHKFy5cmVMnDgxevbsGeeff36MGDEiZs2a1eb16XgKfSZgb5kJyFfIM7HzI7lvPIhV165dY+vWrW1an46pkGciIuLHP/5xbNu2La666qo2r9ORObhaGx177LExb9683EdA6uvr49BDD80dkOzNAzB8+PC45JJLYtu2bbFq1aro2bNnRLx+Dr3dnW+vqKgounXrtsv1Tp06Ne+jGxs2bMjbi3WglJSUxLp16w54LoWr0GcC9paZgHyFNBOHHXZYHHbYYbFx48Y48sgjIyLitddec2A19kohzcQ//vGPmDRpUjz22GO7ffecXbmX2ujII4+M8vLy3Intly5dmvdxo8bGxty/V6xYES+88EIMHTo0/vznP8cjjzwSH/rQh2Lw4MFx9913x/bt23N/4/F2rrvuunj++edzX8OHD9/v27J69er46Ec/mrdsyZIlUVZWtt/ZdByFNBNwIJgJyFdoM1FRUZH3Z3nLly93DAT2SiHNxMMPPxwbN27MHay5X79+sXbt2igpKYm1a9fud34hUrz3Ur9+/eLmm2+Ou+++O84+++yYPXt2XHXVVXHppZfmLvPtb387rrzyyjjqqKOia9eu8atf/Sq6desWAwcOjIaGhvjc5z4X3/3ud9t0fVOnTs0d6bC8vDx++ctf7vZyW7dujW3btrUps6ysLDZs2BDXX399rFixIqqqqmLJkiW5Iy3C3iiEmYADyUxAvkKZiQsuuCC++93vRkNDQ6xatSp+/etfx3//93+3eX3YqRBm4rOf/WysWrUqli9fHsuXL4+HHnoo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", 103 | "text/plain": [ 104 | "
" 105 | ] 106 | }, 107 | "metadata": {}, 108 | "output_type": "display_data" 109 | } 110 | ], 111 | "source": [ 112 | "# 可视化一些样本的预测结果\n", 113 | "n_samples = 10\n", 114 | "indices = np.random.choice(len(X_test), n_samples, replace=False)\n", 115 | "\n", 116 | "plt.figure(figsize=(10, 5))\n", 117 | "for i, index in enumerate(indices):\n", 118 | " plt.subplot(2, n_samples//2, i + 1)\n", 119 | " plt.imshow(X_test[index].reshape(8, 8), cmap='gray', interpolation='none')\n", 120 | " plt.title(f'真实值: {y_test[index]}\\n预测值: {y_pred[index]}', fontsize=10)\n", 121 | " plt.axis('off')\n", 122 | "\n", 123 | "plt.tight_layout()\n", 124 | "plt.show()" 125 | ] 126 | }, 127 | { 128 | "cell_type": "markdown", 129 | "id": "2dc1a654", 130 | "metadata": {}, 131 | "source": [ 132 | "调整n_estimators参数" 133 | ] 134 | }, 135 | { 136 | "cell_type": "code", 137 | "execution_count": 20, 138 | "id": "0bf0177b", 139 | "metadata": {}, 140 | "outputs": [ 141 | { 142 | "name": "stdout", 143 | "output_type": "stream", 144 | "text": [ 145 | "Accuracy: 0.9465\n" 146 | ] 147 | } 148 | ], 149 | "source": [ 150 | "rf_classifier_1 = RandomForestClassifier(n_estimators=10, random_state=1017)\n", 151 | "\n", 152 | "rf_classifier_1.fit(X_train, y_train)\n", 153 | "\n", 154 | "y_pred = rf_classifier_1.predict(X_test)\n", 155 | "\n", 156 | "accuracy = accuracy_score(y_test, y_pred)\n", 157 | "print(f'Accuracy: {accuracy}')" 158 | ] 159 | }, 160 | { 161 | "cell_type": "code", 162 | "execution_count": 22, 163 | "id": "b58fb885", 164 | "metadata": {}, 165 | "outputs": [ 166 | { 167 | "name": "stdout", 168 | "output_type": "stream", 169 | "text": [ 170 | "Accuracy: 0.9660714285714286\n" 171 | ] 172 | } 173 | ], 174 | "source": [ 175 | "rf_classifier_2 = RandomForestClassifier(n_estimators=50, random_state=1017)\n", 176 | "\n", 177 | "rf_classifier_2.fit(X_train, y_train)\n", 178 | "\n", 179 | "y_pred = rf_classifier_2.predict(X_test)\n", 180 | "\n", 181 | "accuracy = accuracy_score(y_test, y_pred)\n", 182 | "print(f'Accuracy: {accuracy}')" 183 | ] 184 | }, 185 | { 186 | "cell_type": "code", 187 | "execution_count": null, 188 | "id": "dc3e8568", 189 | "metadata": {}, 190 | "outputs": [], 191 | "source": [] 192 | } 193 | ], 194 | "metadata": { 195 | "kernelspec": { 196 | "display_name": "Python 3 (ipykernel)", 197 | "language": "python", 198 | "name": "python3" 199 | }, 200 | "language_info": { 201 | "codemirror_mode": { 202 | "name": "ipython", 203 | "version": 3 204 | }, 205 | "file_extension": ".py", 206 | "mimetype": "text/x-python", 207 | "name": "python", 208 | "nbconvert_exporter": "python", 209 | "pygments_lexer": "ipython3", 210 | "version": "3.11.5" 211 | } 212 | }, 213 | "nbformat": 4, 214 | "nbformat_minor": 5 215 | } 216 | -------------------------------------------------------------------------------- /3_逻辑回归.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "f62b57e3", 6 | "metadata": {}, 7 | "source": [ 8 | "# 逻辑回归" 9 | ] 10 | }, 11 | { 12 | "cell_type": "markdown", 13 | "id": "a0584555", 14 | "metadata": {}, 15 | "source": [ 16 | "## (1)梯度下降实现逻辑回归" 17 | ] 18 | }, 19 | { 20 | "cell_type": "code", 21 | "execution_count": 386, 22 | "id": "89b1ae22", 23 | "metadata": {}, 24 | "outputs": [], 25 | "source": [ 26 | "import numpy as np\n", 27 | "import matplotlib.pyplot as plt\n", 28 | "import pandas as pd\n", 29 | "plt.rcParams['font.sans-serif'] = ['SimHei']" 30 | ] 31 | }, 32 | { 33 | "cell_type": "code", 34 | "execution_count": 387, 35 | "id": "199bbe8d", 36 | "metadata": {}, 37 | "outputs": [], 38 | "source": [ 39 | "# def sigmoid(z):\n", 40 | "# return 1/(1+np.exp(-z))" 41 | ] 42 | }, 43 | { 44 | "cell_type": "code", 45 | "execution_count": 388, 46 | "id": "117637fc", 47 | "metadata": {}, 48 | "outputs": [], 49 | "source": [ 50 | "# def gradient_descent(X, y, rate, iterations=10000):\n", 51 | "# m = len(y) \n", 52 | "# X = np.c_[np.ones(m), X] # 添加常数项\n", 53 | "# theta = np.zeros(X.shape[1]) # 初始化参数,包括截距\n", 54 | "# cost_record = np.zeros(iterations) # 用来记录cost function的变化\n", 55 | " \n", 56 | "# for i in range(iterations):\n", 57 | "# h = sigmoid(np.dot(X, theta))\n", 58 | " \n", 59 | "# # 计算梯度\n", 60 | "# gradient = np.dot(X.T, (h-y))\n", 61 | " \n", 62 | "# # 更新参数\n", 63 | "# theta = theta - rate * gradient\n", 64 | " \n", 65 | "# # 记录cost function\n", 66 | "# cost = -np.dot(y.T, np.log(sigmoid(np.dot(X, theta)))) - np.dot((1-y).T, np.log(1-sigmoid(np.dot(X, theta))))\n", 67 | "# cost_record[i] = cost\n", 68 | " \n", 69 | "# return theta, cost_record" 70 | ] 71 | }, 72 | { 73 | "cell_type": "code", 74 | "execution_count": 462, 75 | "id": "67d2a9f1", 76 | "metadata": {}, 77 | "outputs": [], 78 | "source": [ 79 | "class LogisticRegression:\n", 80 | " def __init__(self, learning_rate=0.01, num_iterations=10000):\n", 81 | " self.learning_rate = learning_rate\n", 82 | " self.num_iterations = num_iterations\n", 83 | " self.weights = None\n", 84 | " self.bias = None\n", 85 | " self.loss_record = []\n", 86 | " self.gradient_record = []\n", 87 | " self.accuracy_record = []\n", 88 | "\n", 89 | " def sigmoid(self, z):\n", 90 | " return 1 / (1 + np.exp(-z))\n", 91 | "\n", 92 | " def fit(self, X, y):\n", 93 | " m, n = X.shape\n", 94 | " self.weights = np.zeros(n)\n", 95 | " self.bias = 0\n", 96 | "\n", 97 | " for iteration in range(self.num_iterations):\n", 98 | " # 计算预测值\n", 99 | " z = np.dot(X, self.weights) + self.bias\n", 100 | " predictions = self.sigmoid(z)\n", 101 | "\n", 102 | " # 计算损失函数\n", 103 | " cost = -1/m * np.sum(y * np.log(predictions) + (1 - y) * np.log(1 - predictions))\n", 104 | " self.loss_record.append(cost)\n", 105 | "\n", 106 | " # 计算梯度\n", 107 | " dw = 1/m * np.dot(X.T, (predictions - y))\n", 108 | "\n", 109 | " db = 1/m * np.sum((predictions - y))\n", 110 | " self.gradient_record.append(np.linalg.norm(dw))\n", 111 | " \n", 112 | " # 计算准确率\n", 113 | " accuracy = self.compute_accuracy(predictions.round(), y)\n", 114 | " self.accuracy_record.append(accuracy)\n", 115 | "\n", 116 | " # 更新参数\n", 117 | " self.weights -= (self.learning_rate * dw)\n", 118 | " self.bias -= self.learning_rate * db\n", 119 | " \n", 120 | " return self.loss_record, self.gradient_record\n", 121 | " \n", 122 | " def compute_accuracy(self, predictions, y):\n", 123 | " accuracy = np.mean(predictions == y)\n", 124 | " return accuracy\n", 125 | "\n", 126 | " def predict(self, X):\n", 127 | " z = np.dot(X, self.weights) + self.bias\n", 128 | " predictions = self.sigmoid(z)\n", 129 | " return (predictions > 0.5).astype(int)\n", 130 | " \n", 131 | " def plot_accuracy(self):\n", 132 | " plt.plot(range(1, self.num_iterations + 1), self.accuracy_record, marker='o', color='green')\n", 133 | " plt.title('Accuracy over iterations')\n", 134 | " plt.xlabel('Iterations')\n", 135 | " plt.ylabel('Accuracy')\n", 136 | " plt.show()\n", 137 | " \n", 138 | " def get_theta(self):\n", 139 | " return self.weights, self.bias\n", 140 | " " 141 | ] 142 | }, 143 | { 144 | "cell_type": "code", 145 | "execution_count": 390, 146 | "id": "5217314d", 147 | "metadata": {}, 148 | "outputs": [], 149 | "source": [ 150 | "def draw(num_iterations, loss_record, gradient_norm_record):\n", 151 | " plt.figure(figsize=(10, 4))\n", 152 | " plt.subplot(1, 2, 1)\n", 153 | " plt.plot(range(num_iterations), loss_record)\n", 154 | " plt.xlabel('迭代次数')\n", 155 | " plt.ylabel('损失函数值')\n", 156 | " plt.title('损失函数变化')\n", 157 | " \n", 158 | " plt.subplot(1, 2, 2)\n", 159 | " plt.plot(range(num_iterations), gradient_norm_record)\n", 160 | " plt.xlabel('迭代次数')\n", 161 | " plt.ylabel('梯度模')\n", 162 | " plt.title('梯度模变化')\n", 163 | " \n", 164 | " plt.tight_layout()\n", 165 | " plt.show()" 166 | ] 167 | }, 168 | { 169 | "cell_type": "markdown", 170 | "id": "4cbc80d1", 171 | "metadata": {}, 172 | "source": [ 173 | "## (2)鸢尾花数据集" 174 | ] 175 | }, 176 | { 177 | "cell_type": "markdown", 178 | "id": "9163bc8a", 179 | "metadata": {}, 180 | "source": [ 181 | "iris 数据中有三个标签,需要考虑如何使用二分类算法解决多分类问题" 182 | ] 183 | }, 184 | { 185 | "cell_type": "code", 186 | "execution_count": 391, 187 | "id": "2aa898ce", 188 | "metadata": {}, 189 | "outputs": [], 190 | "source": [ 191 | "from sklearn.datasets import load_iris\n", 192 | "from sklearn.model_selection import train_test_split\n", 193 | "from sklearn.metrics import accuracy_score" 194 | ] 195 | }, 196 | { 197 | "cell_type": "code", 198 | "execution_count": 392, 199 | "id": "601a126f", 200 | "metadata": {}, 201 | "outputs": [ 202 | { 203 | "name": "stdout", 204 | "output_type": "stream", 205 | "text": [ 206 | "(150, 4)\n", 207 | "['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']\n", 208 | "['setosa' 'versicolor' 'virginica']\n" 209 | ] 210 | } 211 | ], 212 | "source": [ 213 | "# 加载iris数据集\n", 214 | "iris = load_iris()\n", 215 | "X = iris.data\n", 216 | "y = iris.target\n", 217 | "print(X.shape)\n", 218 | "\n", 219 | "feature_names = iris.feature_names\n", 220 | "print(feature_names)\n", 221 | "\n", 222 | "target_names = iris.target_names\n", 223 | "print(target_names)" 224 | ] 225 | }, 226 | { 227 | "cell_type": "code", 228 | "execution_count": 393, 229 | "id": "8e773e11", 230 | "metadata": {}, 231 | "outputs": [], 232 | "source": [ 233 | "from sklearn.preprocessing import StandardScaler\n", 234 | "# 标准化\n", 235 | "scaler = StandardScaler()\n", 236 | "X_scaled = scaler.fit_transform(X)" 237 | ] 238 | }, 239 | { 240 | "cell_type": "markdown", 241 | "id": "35f21907", 242 | "metadata": {}, 243 | "source": [ 244 | "### OvO" 245 | ] 246 | }, 247 | { 248 | "cell_type": "markdown", 249 | "id": "6a48a69d", 250 | "metadata": {}, 251 | "source": [ 252 | "思路:训练三个分类器,每个分类器对两个类别进行分类,最后通过三个分类器的结果“投票”决定划分的类别" 253 | ] 254 | }, 255 | { 256 | "cell_type": "markdown", 257 | "id": "32339e21", 258 | "metadata": {}, 259 | "source": [ 260 | "#### 分类器1(setosa vs. versicolor)" 261 | ] 262 | }, 263 | { 264 | "cell_type": "code", 265 | "execution_count": 394, 266 | "id": "b60d3837", 267 | "metadata": {}, 268 | "outputs": [], 269 | "source": [ 270 | "X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=66)" 271 | ] 272 | }, 273 | { 274 | "cell_type": "code", 275 | "execution_count": 395, 276 | "id": "ef080a5d", 277 | "metadata": {}, 278 | "outputs": [], 279 | "source": [ 280 | "indices_01 = (y_train == 0) | (y_train == 1) # 找出类别为0和1的索引\n", 281 | "indices_01_t = (y_test == 0) | (y_test == 1)\n", 282 | "\n", 283 | "X_train_1 = X_train[indices_01]\n", 284 | "X_test_1 = X_test[indices_01_t]\n", 285 | "\n", 286 | "y_train_1 = y_train[indices_01]\n", 287 | "y_test_1 = y_test[indices_01_t]" 288 | ] 289 | }, 290 | { 291 | "cell_type": "markdown", 292 | "id": "5d902334", 293 | "metadata": {}, 294 | "source": [ 295 | "下面使用编写的梯度下降逻辑回归训练" 296 | ] 297 | }, 298 | { 299 | "cell_type": "code", 300 | "execution_count": 463, 301 | "id": "bf8acf69", 302 | "metadata": {}, 303 | "outputs": [ 304 | { 305 | "name": "stdout", 306 | "output_type": "stream", 307 | "text": [ 308 | "[1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 1 1 0 0]\n", 309 | "[1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 1 1 0 0]\n" 310 | ] 311 | } 312 | ], 313 | "source": [ 314 | "if __name__ == \"__main__\":\n", 315 | " # 实例化和训练逻辑回归模型\n", 316 | " model_1 = LogisticRegression()\n", 317 | " ls_1, gr_1 = model_1.fit(X_train_1, y_train_1)\n", 318 | "\n", 319 | "\n", 320 | " print(model_1.predict(X_test_1))\n", 321 | " print(y_test_1)\n", 322 | " \n", 323 | " theta = model_1.get_theta()\n" 324 | ] 325 | }, 326 | { 327 | "cell_type": "code", 328 | "execution_count": 464, 329 | "id": "1094df79", 330 | "metadata": {}, 331 | "outputs": [ 332 | { 333 | "data": { 334 | "text/plain": [ 335 | "(array([ 1.02352992, -2.24077983, 2.08131386, 1.89977742]),\n", 336 | " 2.104288827931714)" 337 | ] 338 | }, 339 | "execution_count": 464, 340 | "metadata": {}, 341 | "output_type": "execute_result" 342 | } 343 | ], 344 | "source": [ 345 | "theta" 346 | ] 347 | }, 348 | { 349 | "cell_type": "markdown", 350 | "id": "1619b4dd", 351 | "metadata": {}, 352 | "source": [ 353 | "模型在测试集上分类完全正确!!!" 354 | ] 355 | }, 356 | { 357 | "cell_type": "code", 358 | "execution_count": 465, 359 | "id": "c78bd14b", 360 | "metadata": {}, 361 | "outputs": [ 362 | { 363 | "data": { 364 | "image/png": "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", 365 | "text/plain": [ 366 | "
" 367 | ] 368 | }, 369 | "metadata": {}, 370 | "output_type": "display_data" 371 | } 372 | ], 373 | "source": [ 374 | "draw(10000, ls, gr)" 375 | ] 376 | }, 377 | { 378 | "cell_type": "code", 379 | "execution_count": 398, 380 | "id": "e8792b72", 381 | "metadata": {}, 382 | "outputs": [ 383 | { 384 | "data": { 385 | "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjQAAAHBCAYAAAB+PCE0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8pXeV/AAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0rUlEQVR4nO3deVxWZf7/8fctBAgii6JjCoJijmsZkaaJ67iMorjlMtM2WTqmYzVDqeVkyyQzOY7TfMu+lIk6Wmm5pKZludaoiQsTgyapKC7lMsSNS3cK1+8Pf95fCUGWe+Hk6/l4nD/Oct3nc1+QvDvnOtexGWOMAAAALKyGtwsAAACoKgINAACwPAINAACwPAINAACwPAINAACwPAINAACwPAINAACwPAINAACwPAINAACwPAINUEWDBg1SVFSUt8uACz3wwAN64IEHvF1Glf1UvgdQHjZefQBUXmFhoerUqaP8/Hzt3btXP//5z71dElwgJydHkhQdHX3N/dOmTdMDDzxQ6n5PWL58uSQpKSmp1GOu9z2AnxKu0ABVsH37duXn58vf31/r1q3zdjlwkejo6DJDwHPPPecMC96yfPlyZ6gpzfW+B/BTQqABqmDdunWKiYlRYmKiPv74Y2+XAwA3LAINUAXr1q1T165d1bVrV23cuFEXL14stn/58uVq3bq1atasqVatWumdd94ptj83N1eDBw9WUFCQGjRooEcffVRnz5517rfZbNq4cWOxNtHR0UpLSyux/q9//Uvdu3cvcdvr66+/1i9/+UuFhISofv36euSRR3ThwgXn/qKiIv3pT39So0aNFBwcrC5dumjnzp3O/c2bN9f48eOLfebo0aN12223VaSr9M9//lO33HKL/P39deedd2rLli3OfQ899JB69+5d7PjU1FRFRETo0qVLkqTz58/rd7/7nerVq6ewsDANHz5cp06dKtbmSn+tWrVK7du3V69evSpU4xXXGnuyceNG2Ww22Ww2SVK3bt1ks9lKXAHZs2ePunfvrpo1a6pJkyaaNWtWsf1paWmKjo6Ww+HQlClT1LhxY82dO7fYMX/729/UpEkTBQYG6rbbbtMnn3zi3BcdHS2bzaZ58+Zp3rx5zpp+/HtS2ve4oqyfx7Rp09S1a1dt3bpVcXFxCgwMVMeOHXXw4EHnMYcPH9bAgQMVHh6usLAwDRkyRN9++20pPQq4H4EGqCS73a7t27erS5cu6tKli86ePautW7c693/44YcaPHiwunbtqrVr12rw4MEaNWqUNmzYIEk6e/asunbtqoMHD2rx4sX6xz/+oWXLlpUID+WxdetWDRgwQHFxcZo0aZJzuzFG/fv31zfffKOlS5cqNTVVq1ev1owZM5zHTJ48WX/605/0hz/8QStXrlR4eLh69+6tM2fOSJLuvfdeLVmyRIWFhZKkixcvatmyZbr//vvLXd+CBQt03333aciQIfrwww8VGxurnj17OoPTiBEjtGnTpmJhbtWqVRoyZIh8fX0lSWPHjtXy5cv12muvadGiRcrMzNTgwYNLnGvJkiUaPXq0evfurbFjx1agF8sWFxenHTt2aMeOHZKk119/XTt27NDKlSudx5w5c0Y9evRQeHi41q5dqyeeeEJ/+MMfNGfOnBKfN2zYMG3evFlPPPGE2rdv79y+aNEiPfHEExo3bpw+/vhj3X333Ro6dKgKCgokSStXrtSOHTvUv39/9e/f31lTXFxcub/L9X4eknTkyBENGTJEDz30kJYsWaLc3Fw9+eSTzv3333+/vv76ay1atEhpaWnav3+/Jk6cWP4OBVzNAKiU5cuXG0kmJyfHFBUVmYiICPP0008793fs2NF069atWJuHH37YLFiwwBhjTGpqqvHx8TEHDx507l+4cKH5zW9+41yXZDZs2FDsMxo3bmzmzp1bbN3Pz89s3bq1RI1nz541s2fPNvv27TPGGFNYWGgGDx5s+vbta4wxpqCgwPj7+5vnnnvO2eb48eNmyJAhZteuXcYYYw4dOmRsNptZu3atMcaYDz/80Pj6+ppvvvmm3H0VHR1tRo0a5VwvLCw0rVu3NklJScYYYy5dumTq1atnli5daowx5sKFCyYwMND53Q8ePGhsNptZtmyZ8zM++OADI6lY/0ky4eHhJjs7u9y1Xcv9999v7r///lL3X+vnYowxzz77rImIiDA//PCDc9vgwYNNQkKCc33u3LlGkhk4cKC5dOlSic/YuHGj+ec//+lc3717t5Fktm/fXqEayzrmej+PZ5991kgy77//vvOYv/zlLyY2Nta53rhxYzN27Fjn+t69e82mTZvKrAdwJ67QAJV0ZRBwdHS0atSooVOnThUbR7N7924lJCQUa5Oamqpf//rXzv2NGjVSTEyMc/+oUaOu+X/zVysq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s9n0zjvvFKuptFtO7733npo3b666detq/Pjx+v777yVJ06ZN0wMPPKDnn39eoaGhaty4sbZs2eJsN2PGDDVo0EC1a9fWyJEji30HAJ5HoAHgcu+//77y8vIUGRmplStXKi8vT48//rgk6cCBAxo4cKAef/xx7dy5Uzt37tTLL79crP3UqVN1/Phxvf3222ratKkk6csvv9T48eM1d+5c7d27VydPntRrr70mSdqxY4fy8vIkSRkZGcrLy9OQIUOuW2d6erruv/9+/fnPf9Znn32m9PR0TZo0ybn/ww8/1Ndff61du3apU6dOevrppyVJ+/bt06RJk/Tuu+9q165d+vrrr5WWllblfgNQedxyAuByQUFBkqQaNWqoVq1axQYMv/3222rXrp1+85vfSJLGjh2rOXPm6JlnnnEeExISUiIgNGvWTN98841uuukmffHFFzLGaP/+/ZKk4OBg53G1a9cu9wDlN954Q7/61a+UlJQkSZo5c6Z69uypv/3tb5IkHx8fpaamKiAgQA888IDGjBkjSQoICJAkORwORUVFafv27eXrGABuQ6AB4FHHjh3Trl27nKHj0qVLqlWrVrFjJkyYUKLdhQsXNHr0aG3atEnt2rWTr6+vCgsLq1RLbm6uEhISnOtNmjTRhQsXdPr0aUnSXXfd5Qwvfn5+uvLqu+joaL355puaNGmS9u/frz59+ujVV19VvXr1qlQPgMrjlhMAt6lRo4Z+/P7bRo0aacCAAdqzZ4/27NmjjIwMrVu3rtgxV67wXO3vf/+7Tp06pW+//Vbr16/XXXfdVeIYm81W4nxliYqK0sGDB53rBw4cUGBgoOrWrSvp8tWeazl69Kjatm2rnTt36siRI8rLy9MLL7xQ7vMCcD0CDQC3iY2N1dq1a3XixAl9+umnkqSRI0dqy5Ytys7OlnQ5qDz44IPX/ayzZ8/KGKPTp09r0aJFmj17donwEhsbq9WrV+vYsWPavHnzdT9z9OjRWrhwoZYvX66vvvpKv//97/XII484BxiXJisrS3379tXnn3+uc+fOyWazqaio6LrnA+A+BBoAbjNjxgytXbtWMTExeu655yRdvq0zb948PfHEE2rVqpUyMzP19ttvX/ezJk6cKGOMbrnlFs2dO1cPPfSQ9uzZU+yY119/XbNmzVJsbKz+93//97qfeccdd2jevHl66qmn1KlTJ8XFxWn69OnXbderVy+NGTNGw4YN0y233CJjjHPAMADvsJmKXJ8FAACohrhCAwAALI9AAwAALI9AAwAALI9AAwAALI9AAwAALI9AAwAALI9AAwAALI9AAwAALI9AAwAALI9AAwAALI9AAwAALO//AUFU4ZvjHzjXAAAAAElFTkSuQmCC", 386 | "text/plain": [ 387 | "
" 388 | ] 389 | }, 390 | "metadata": {}, 391 | "output_type": "display_data" 392 | } 393 | ], 394 | "source": [ 395 | "model_1.plot_accuracy() # 绘制准确率曲线" 396 | ] 397 | }, 398 | { 399 | "cell_type": "markdown", 400 | "id": "8a74cc7a", 401 | "metadata": {}, 402 | "source": [ 403 | "使用Sklearn包验证" 404 | ] 405 | }, 406 | { 407 | "cell_type": "code", 408 | "execution_count": 456, 409 | "id": "00cf077f", 410 | "metadata": {}, 411 | "outputs": [ 412 | { 413 | "name": "stdout", 414 | "output_type": "stream", 415 | "text": [ 416 | "coefficients: [[ 0.93436309 -1.35444543 1.58684153 1.50716883]]\n", 417 | "intercept: [2.25128365]\n", 418 | "预测结果: [1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 1 1 0 0]\n" 419 | ] 420 | } 421 | ], 422 | "source": [ 423 | "from sklearn.linear_model import LogisticRegression\n", 424 | "model_s1 = LogisticRegression()\n", 425 | "model_s1.fit(X_train_1, y_train_1)\n", 426 | "weights = model_s1.coef_\n", 427 | "intercept = model_s1.intercept_\n", 428 | "\n", 429 | "# 输出参数\n", 430 | "print(\"coefficients:\", weights)\n", 431 | "print(\"intercept:\", intercept)\n", 432 | "print(\"预测结果:\", model_1.predict(X_test_1))" 433 | ] 434 | }, 435 | { 436 | "cell_type": "markdown", 437 | "id": "bca8eedc", 438 | "metadata": {}, 439 | "source": [ 440 | "#### 分类器2(setosa vs. virginica)" 441 | ] 442 | }, 443 | { 444 | "cell_type": "code", 445 | "execution_count": 400, 446 | "id": "6591c6db", 447 | "metadata": {}, 448 | "outputs": [], 449 | "source": [ 450 | "indices_02 = (y_train == 0) | (y_train == 2) # 找出类别为0和2的索引\n", 451 | "indices_02_t = (y_test == 0) | (y_test == 2)\n", 452 | "\n", 453 | "X_train_2 = X_train[indices_02]\n", 454 | "X_test_2 = X_test[indices_02_t]\n", 455 | "\n", 456 | "y_train_2 = y_train[indices_02]\n", 457 | "y_test_2 = y_test[indices_02_t]\n", 458 | "\n", 459 | "y_train_2[y_train_2 == 2] = 1\n", 460 | "y_test_2[y_test_2 == 2] = 1" 461 | ] 462 | }, 463 | { 464 | "cell_type": "code", 465 | "execution_count": 401, 466 | "id": "3ea7803b", 467 | "metadata": {}, 468 | "outputs": [ 469 | { 470 | "name": "stdout", 471 | "output_type": "stream", 472 | "text": [ 473 | "[0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1]\n", 474 | "[0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1]\n" 475 | ] 476 | } 477 | ], 478 | "source": [ 479 | "# 实例化和训练逻辑回归模型\n", 480 | "model_2 = LogisticRegression()\n", 481 | "model_2.fit(X_train_2, y_train_2)\n", 482 | "\n", 483 | "print(model_2.predict(X_test_2))\n", 484 | "print(y_test_2)" 485 | ] 486 | }, 487 | { 488 | "cell_type": "markdown", 489 | "id": "fb9a2dec", 490 | "metadata": {}, 491 | "source": [ 492 | "使用sklearn包验证" 493 | ] 494 | }, 495 | { 496 | "cell_type": "code", 497 | "execution_count": 402, 498 | "id": "4db6316f", 499 | "metadata": {}, 500 | "outputs": [ 501 | { 502 | "name": "stdout", 503 | "output_type": "stream", 504 | "text": [ 505 | "coefficients: [[ 0.8224266 -0.7385878 1.33829004 1.39546167]]\n", 506 | "intercept: [0.71541032]\n", 507 | "预测结果: [0 0 0 0 1 1 1 0 1 1 0 1 1 0 1 1 0 0 1 1]\n" 508 | ] 509 | } 510 | ], 511 | "source": [ 512 | "model_s2 = LogisticRegression()\n", 513 | "model_s2.fit(X_train_2, y_train_2)\n", 514 | "weights = model_s2.coef_\n", 515 | "intercept = model_s2.intercept_\n", 516 | "\n", 517 | "# 输出参数\n", 518 | "print(\"coefficients:\", weights)\n", 519 | "print(\"intercept:\", intercept)\n", 520 | "print(\"预测结果:\", model_2.predict(X_test_2))" 521 | ] 522 | }, 523 | { 524 | "cell_type": "markdown", 525 | "id": "8afc7a59", 526 | "metadata": {}, 527 | "source": [ 528 | "#### 分类器3(versicolor vs. virginica)" 529 | ] 530 | }, 531 | { 532 | "cell_type": "code", 533 | "execution_count": 403, 534 | "id": "c21350c2", 535 | "metadata": {}, 536 | "outputs": [], 537 | "source": [ 538 | "indices_03 = (y_train == 1) | (y_train == 2) # 找出类别为0和2的索引\n", 539 | "indices_03_t = (y_test == 1) | (y_test == 2)\n", 540 | "\n", 541 | "X_train_3 = X_train[indices_03]\n", 542 | "X_test_3 = X_test[indices_03_t]\n", 543 | "\n", 544 | "y_train_3 = y_train[indices_03]\n", 545 | "y_test_3 = y_test[indices_03_t]\n", 546 | "\n", 547 | "y_train_3[y_train_3 == 2] = 0\n", 548 | "y_test_3[y_test_3 == 2] = 0" 549 | ] 550 | }, 551 | { 552 | "cell_type": "code", 553 | "execution_count": 404, 554 | "id": "b4c57d13", 555 | "metadata": {}, 556 | "outputs": [ 557 | { 558 | "name": "stdout", 559 | "output_type": "stream", 560 | "text": [ 561 | "[1 1 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0]\n", 562 | "[1 1 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0]\n" 563 | ] 564 | } 565 | ], 566 | "source": [ 567 | "# 实例化和训练逻辑回归模型\n", 568 | "model_3 = LogisticRegression()\n", 569 | "model_3.fit(X_train_3, y_train_3)\n", 570 | "\n", 571 | "print(model_3.predict(X_test_3))\n", 572 | "print(y_test_3)" 573 | ] 574 | }, 575 | { 576 | "cell_type": "markdown", 577 | "id": "be7d1819", 578 | "metadata": {}, 579 | "source": [ 580 | "使用sklearn包验证" 581 | ] 582 | }, 583 | { 584 | "cell_type": "code", 585 | "execution_count": 405, 586 | "id": "39abca1c", 587 | "metadata": {}, 588 | "outputs": [ 589 | { 590 | "name": "stdout", 591 | "output_type": "stream", 592 | "text": [ 593 | "coefficients: [[-0.25269278 0.57601981 -2.14118478 -2.89522098]]\n", 594 | "intercept: [3.57649947]\n", 595 | "预测结果: [1 1 1 1 1 0 0 0 0 0 1 1 0 0 1 1 0 1 0 0 0]\n" 596 | ] 597 | } 598 | ], 599 | "source": [ 600 | "model_s3 = LogisticRegression()\n", 601 | "model_s3.fit(X_train_3, y_train_3)\n", 602 | "weights = model_s3.coef_\n", 603 | "intercept = model_s3.intercept_\n", 604 | "\n", 605 | "# 输出参数\n", 606 | "print(\"coefficients:\", weights)\n", 607 | "print(\"intercept:\", intercept)\n", 608 | "print(\"预测结果:\", model_3.predict(X_test_3))" 609 | ] 610 | }, 611 | { 612 | "cell_type": "markdown", 613 | "id": "a7def043", 614 | "metadata": {}, 615 | "source": [ 616 | "三个分类器均已训练完成,接下来用三个分类器进行分类" 617 | ] 618 | }, 619 | { 620 | "cell_type": "code", 621 | "execution_count": 410, 622 | "id": "60f352c3", 623 | "metadata": {}, 624 | "outputs": [], 625 | "source": [ 626 | "p1 = model_1.predict(X_test)" 627 | ] 628 | }, 629 | { 630 | "cell_type": "code", 631 | "execution_count": 411, 632 | "id": "0866d288", 633 | "metadata": {}, 634 | "outputs": [], 635 | "source": [ 636 | "p2 = model_2.predict(X_test)" 637 | ] 638 | }, 639 | { 640 | "cell_type": "code", 641 | "execution_count": 412, 642 | "id": "3a8b3fdd", 643 | "metadata": {}, 644 | "outputs": [], 645 | "source": [ 646 | "p3 = model_3.predict(X_test)" 647 | ] 648 | }, 649 | { 650 | "cell_type": "code", 651 | "execution_count": 417, 652 | "id": "a4130681", 653 | "metadata": {}, 654 | "outputs": [ 655 | { 656 | "name": "stdout", 657 | "output_type": "stream", 658 | "text": [ 659 | "30\n" 660 | ] 661 | } 662 | ], 663 | "source": [ 664 | "print(X_test.shape[0])" 665 | ] 666 | }, 667 | { 668 | "cell_type": "code", 669 | "execution_count": 420, 670 | "id": "bc7a6f6f", 671 | "metadata": {}, 672 | "outputs": [ 673 | { 674 | "name": "stdout", 675 | "output_type": "stream", 676 | "text": [ 677 | "[1 1 1 0 1 1 0 0 0 1 1 1 0 1 1 0 1 1 1 1 0 1 1 1 1 1 0 0 1 1]\n" 678 | ] 679 | } 680 | ], 681 | "source": [ 682 | "print(p1)" 683 | ] 684 | }, 685 | { 686 | "cell_type": "markdown", 687 | "id": "985feb1a", 688 | "metadata": {}, 689 | "source": [ 690 | "根据二分类结果进行投票" 691 | ] 692 | }, 693 | { 694 | "cell_type": "code", 695 | "execution_count": 437, 696 | "id": "e938c97d", 697 | "metadata": {}, 698 | "outputs": [], 699 | "source": [ 700 | "pre = np.zeros(X_test.shape[0])\n", 701 | "\n", 702 | "for i in range(X_test.shape[0]):\n", 703 | " sp_dict = {'0': 0, '1': 0, '2': 0}\n", 704 | " if p1[i] == 0:\n", 705 | " sp_dict['0'] += 1\n", 706 | " else:\n", 707 | " sp_dict['1'] += 1\n", 708 | " if p2[i] == 0:\n", 709 | " sp_dict['0'] += 1\n", 710 | " else:\n", 711 | " sp_dict['2'] += 1\n", 712 | " if p3[i] == 0:\n", 713 | " sp_dict['2'] += 1\n", 714 | " else:\n", 715 | " sp_dict['1'] += 1\n", 716 | " max_key = max(sp_dict, key=sp_dict.get) \n", 717 | " pre[i] = (max_key)" 718 | ] 719 | }, 720 | { 721 | "cell_type": "code", 722 | "execution_count": 443, 723 | "id": "1cd6104c", 724 | "metadata": {}, 725 | "outputs": [ 726 | { 727 | "data": { 728 | "text/plain": [ 729 | "array([1., 1., 1., 0., 1., 1., 0., 0., 0., 2., 2., 2., 0., 2., 2., 0., 1.,\n", 730 | " 1., 2., 2., 0., 1., 1., 2., 1., 2., 0., 0., 2., 2.])" 731 | ] 732 | }, 733 | "execution_count": 443, 734 | "metadata": {}, 735 | "output_type": "execute_result" 736 | } 737 | ], 738 | "source": [ 739 | "pre" 740 | ] 741 | }, 742 | { 743 | "cell_type": "code", 744 | "execution_count": 444, 745 | "id": "a2a57c59", 746 | "metadata": {}, 747 | "outputs": [ 748 | { 749 | "data": { 750 | "text/plain": [ 751 | "array([1, 1, 1, 0, 1, 1, 0, 0, 0, 2, 2, 2, 0, 2, 2, 0, 1, 1, 2, 2, 0, 1,\n", 752 | " 1, 2, 1, 2, 0, 0, 2, 2])" 753 | ] 754 | }, 755 | "execution_count": 444, 756 | "metadata": {}, 757 | "output_type": "execute_result" 758 | } 759 | ], 760 | "source": [ 761 | "y_test" 762 | ] 763 | }, 764 | { 765 | "cell_type": "markdown", 766 | "id": "ecc9a099", 767 | "metadata": {}, 768 | "source": [ 769 | "对比可见,成功通过二分类解决多分类问题,在测试集上分类结果完全正确!!!" 770 | ] 771 | }, 772 | { 773 | "cell_type": "code", 774 | "execution_count": null, 775 | "id": "58b94c81", 776 | "metadata": {}, 777 | "outputs": [], 778 | "source": [] 779 | } 780 | ], 781 | "metadata": { 782 | "kernelspec": { 783 | "display_name": "Python 3 (ipykernel)", 784 | "language": "python", 785 | "name": "python3" 786 | }, 787 | "language_info": { 788 | "codemirror_mode": { 789 | "name": "ipython", 790 | "version": 3 791 | }, 792 | "file_extension": ".py", 793 | "mimetype": "text/x-python", 794 | "name": "python", 795 | "nbconvert_exporter": "python", 796 | "pygments_lexer": "ipython3", 797 | "version": "3.11.5" 798 | } 799 | }, 800 | "nbformat": 4, 801 | "nbformat_minor": 5 802 | } 803 | --------------------------------------------------------------------------------