From 3e01aa4f731c2fc99cc74bd1507608e47744a491 Mon Sep 17 00:00:00 2001 From: zhang117228 <13198271+zhang117228@user.noreply.gitee.com> Date: Thu, 13 Jul 2023 09:19:58 +0000 Subject: [PATCH] =?UTF-8?q?=E9=B8=A2=E5=B0=BE=E8=8A=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: zhang117228 <13198271+zhang117228@user.noreply.gitee.com> --- .../homeworks/iris.ipynb | 727 ++++++++++++++++++ 1 file changed, 727 insertions(+) create mode 100644 QuickDraw在线交互识别系统/homeworks/iris.ipynb diff --git a/QuickDraw在线交互识别系统/homeworks/iris.ipynb b/QuickDraw在线交互识别系统/homeworks/iris.ipynb new file mode 100644 index 0000000..c99d446 --- /dev/null +++ b/QuickDraw在线交互识别系统/homeworks/iris.ipynb @@ -0,0 +1,727 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "c5c256bf", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "D:\\anaconda\\lib\\site-packages\\scipy\\__init__.py:146: UserWarning: A NumPy version >=1.16.5 and <1.23.0 is required for this version of SciPy (detected version 1.24.3\n", + " warnings.warn(f\"A NumPy version >={np_minversion} and <{np_maxversion}\"\n" + ] + }, + { + "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.2],\n", + " [5. , 3.2, 1.2, 0.2],\n", + " [5.5, 3.5, 1.3, 0.2],\n", + " [4.9, 3.6, 1.4, 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]]),\n", + " array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n", + " 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n", + " 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", + " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,\n", + " 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]))" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "#逻辑回归对鸢尾花数据集\n", + "from sklearn import datasets\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.linear_model import LogisticRegression\n", + "import pandas as pd\n", + "import matplotlib.pyplot as plt\n", + "import matplotlib\n", + "import numpy as np\n", + "from sklearn.datasets import load_iris\n", + "iris=load_iris()\n", + "iris.data,iris.target" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "455a18cd", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#sigmoid函数\n", + "def sigmoid(x):\n", + " return 1/(1+np.exp(-x))\n", + "\n", + "#x为将-10到10分成100份\n", + "x=np.linspace(-10,10,100)\n", + "y=sigmoid(x)\n", + "plt.plot(x,y)\n", + "#[0.5]乘len是为了保持和x的数目一致,有这么多个0.5\n", + "plt.plot(x,[0.5]*len(y),'r--')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "edfd6016", + "metadata": {}, + "outputs": [], + "source": [ + "#手动实现逻辑回归\n", + "class Logistic:\n", + " def __init__(self,lr=0.01,n_iters=101):\n", + " self.lr=lr\n", + " self.n_iters=n_iters\n", + " self.weights=None\n", + " self.bias=None\n", + " \n", + " def fit(self,x,y):\n", + " [m,d]=np.shape(x)\n", + " self.weights=np.zeros(d)\n", + " self.bias=0\n", + " for i in range(self.n_iters):\n", + " linear_model=np.dot(x,self.weights)+self.bias\n", + " y_pred=self.sigmoid(linear_model)\n", + " \n", + " dw=(1/m)*np.dot(x.T,(y_pred-y))\n", + " db=(1/m)*np.sum(y_pred-y)\n", + " \n", + " self.weights-=self.lr*dw\n", + " self.bias-=self.lr*db\n", + " \n", + " if i%100==0:\n", + " loss=self.cross_entropy(y,y_pred)\n", + " print(f'loss at iteration {i} : {loss}')\n", + " \n", + " def predict(self,x):\n", + " linear_model=np.dot(x,self.weights)+self.bias\n", + " y_pred=self.sigmoid(linear_model)\n", + " for i in range(len(y_pred)):\n", + " if y_pred[i]>0.5:\n", + " y_pred[i]=1\n", + " else:\n", + " y_pred[i]=0 \n", + " return y_pred \n", + " \n", + " \n", + " def sigmoid(self,x):\n", + " return 1/(1+np.exp(-x))\n", + " \n", + " def cross_entropy(self,y_true,y_pred):\n", + " return -np.mean(y_true*np.log(y_pred)+(1-y_true)*np.log(1-y_pred))\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "97172fd7", + "metadata": {}, + "outputs": [], + "source": [ + "x=iris.data[:,:2]\n", + "y=iris.target\n", + "\n", + "#括号中代表索引下标 你、\n", + "\n", + " \n", + "x=x[y!=2]\n", + "y=y[y!=2]\n", + "\n", + "x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=0)\n", + "\n", + "clf=LogisticRegression()\n", + "clf.fit(x_train,y_train)\n", + "\n", + "y_pred=clf.predict(x_test)" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "a40fc0f7", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#混淆矩阵\n", + "import seaborn as sns\n", + "from sklearn.metrics import confusion_matrix\n", + "from sklearn.metrics import accuracy_score\n", + "score=accuracy_score(y_test,y_pred)\n", + "plt.title(f\"The accuracy score is {score*100}%\")\n", + "cm=confusion_matrix(y_test,y_pred)\n", + "sns.heatmap(cm,annot=True)\n", + "plt.xlabel('Predicted')\n", + "plt.ylabel('True')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "d67e6803", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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7wPQq1cvRo0aRf/+/RERWrZsyYIFC+jevbtXsaQkoBNBTMwFhg9fRpMmpbn/fmeHGTrUu3+uMdlFfHw8X331FX369AGcaqGGDRteVqZSpUqcPn2aU6dOsWHDBoYMGZLmcp9//nny5cvH+vXrATh+/Hia82zdupVly5YRHBxMQkICn3zyCb1792blypWUL1+eYsWKcffdd/Ovf/2LG264gT179tC+fXs2b9582XJWr15N7dq1E4erV6/OihUrCAkJYdmyZYwYMYJ58+YB8NNPP7Fu3ToKFizIiBEjaN26NbNmzeLEiRM0btyYm2++maJFi7J06VLCwsLYtm0bd911F6tXryYmJoYWLVokuy3vv/8+NWvWTHObAfbt20eZMmUSh0uXLs2+ffs4evQo+fPnJyQk5LLxl0RGRvLdd99ZIrhaX365jYcfXsDevaeYO3cz3bvXsr6BjH9cwS/39HTu3Dnq16/Prl27aNiwIW3btgWc6uKULoy4kgsmli1bxpw5cxKHCxQokOY8d955J8HBwQD06NGD5557jt69ezNnzhx69OiRuNxNmzYlznPq1CliYmKIiIhIHLd//36KFCmSOHzy5El69erFtm3bEBFiY2MTp3n+El+yZAnz589n3LhxgHOZ7549eyhZsiSDBg0iKiqK4OBgtm7dCkBERARRUVFefyYpUf37PiAiKY6/pGjRovz555/XvH6fNhaLSAcR2SIi20VkeDLTRUQmutPXich1vowH4OjRs9x//yd07Pg+e/eeIjKyJEuX3mdJwASc8PBwoqKi2L17NxcvXmTy5MkA1KpVi9WrV19WdseOHeTJk4eIiAhq1arFmjVr0lx+SgnFc1zSO6tz586d+L5Zs2Zs376dw4cP8+mnn/KPf/wDgISEBH766SeioqKIiopi3759lyWBS9vmueynn36aVq1asWHDBj7//PPLpnmuU1WZN29e4rL37NlDjRo1eP311ylWrBhr165l9erViQ22MTEx1K9fP9mXZ7JKS+nSpdm7d2/icHR0NCVLlqRw4cKcOHGCuLi4y8Z7fn7h4eFeryclPksEIhIMTAZuAWoCd4lI0vOkW4Aq7ushYKqv4lGFj9bWpGbNKfzvf+sICwvhlVfa8tNPfahbt5ivVmtMppcvXz4mTpzIuHHjiI2N5Z577uH7779n2bJlgHPm8Oijj/Lvf/8b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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#ROC曲线\n", + "from sklearn.metrics import roc_curve,auc\n", + "\n", + "fpr,tpr,thresholds=roc_curve(y_test,y_pred)\n", + "roc_auc=auc(fpr,tpr)\n", + "plt.figure()\n", + "plt.plot(fpr,tpr,color='darkorange',lw=2,label='ROC curve (area=%0.2f)' % roc_auc) #伪真率为横坐标,真正率为纵坐标\n", + "plt.plot([0,1],[0,1],color='navy',lw=2,linestyle='--') #画对角线\n", + "#x和y的范围\n", + "plt.xlim=([0,1])\n", + "plt.ylim=([0,1.05])\n", + "#横纵坐标的含义\n", + "plt.xlabel('False Positive Rate')\n", + "plt.ylabel('True Positive Rate')\n", + "plt.title('Receiver operating characteristic example')\n", + "#legend表示标签放在右下角\n", + "plt.legend(loc=\"lower right\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "78d77fb7", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\99319\\AppData\\Local\\Temp\\ipykernel_26672\\1895947525.py:14: UserWarning: You passed a edgecolor/edgecolors ('k') for an unfilled marker ('+'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.\n", + " scatter1=plt.scatter(x[y==1,0],x[y==1,1],c='purple',edgecolors='k',marker='+',label='Class 1')\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#定义网格范围,绘制决策边界\n", + "x_min,x_max=x[:,0].min()-1,x[:,0].max()+1\n", + "y_min,y_max=x[:,1].min()-1,x[:,1].max()+1\n", + "xx,yy=np.meshgrid(np.arange(x_min,x_max,0.02),\n", + " np.arange(y_min,y_max,0.02))\n", + "\n", + "#对每个点在模型中预测\n", + "Z=clf.predict(np.c_[xx.ravel(),yy.ravel()])\n", + "#reshape成网格的形状\n", + "Z=Z.reshape(xx.shape)\n", + "#绘制等高线,用不同颜色表示分类区域\n", + "plt.contourf(xx,yy,Z,1,alpha=0.8)\n", + "scatter0=plt.scatter(x[y==0,0],x[y==0,1],c='yellow',edgecolors='k',marker='o',label='Class 0')\n", + "scatter1=plt.scatter(x[y==1,0],x[y==1,1],c='purple',edgecolors='k',marker='+',label='Class 1')\n", + "\n", + "plt.legend(handles=[scatter0,scatter1])\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "268e5dfc", + "metadata": {}, + "outputs": [], + "source": [ + "import numpy as np\n", + "import matplotlib\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.model_selection import train_test_split\n", + "from sklearn.preprocessing import StandardScaler,MinMaxScaler\n", + "from sklearn.metrics import confusion_matrix,accuracy_score,classification_report,mean_squared_error\n", + "from sklearn.svm import SVC\n", + "plt.rcParams['font.sans-serif']=['SimHei']\n", + "plt.rcParams['axes.unicode_minus']=False" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "33757302", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([[-0.91520253, 1.05978084],\n", + " [ 0.32315141, -1.02666268],\n", + " [-0.91520253, 0.82795378],\n", + " [-0.04835477, -0.79483563],\n", + " [-0.54369635, 1.52343495],\n", + " [-0.91520253, 1.52343495],\n", + " [ 0.81849298, -0.09935445],\n", + " [-1.53437949, 0.82795378],\n", + " [-1.03903792, -2.41762503],\n", + " [-0.17219017, -0.09935445],\n", + " [ 1.93301152, -0.56300857],\n", + " [ 2.3045177 , 1.75526201],\n", + " [ 0.19931601, -0.33118151],\n", + " [ 0.81849298, -0.09935445],\n", + " [-0.04835477, -0.79483563],\n", + " [ 0.4469868 , -0.33118151],\n", + " [-0.91520253, -1.25848974],\n", + " [ 0.94232837, -0.09935445],\n", + " [ 0.07548062, -0.09935445],\n", + " [ 1.06616377, 0.1324726 ],\n", + " [-1.16287331, 0.1324726 ],\n", + " [ 0.81849298, -0.56300857],\n", + " [ 1.06616377, 0.59612672],\n", + " [ 1.68534073, 0.36429966],\n", + " [-0.79136713, 1.05978084],\n", + " [ 1.06616377, 0.1324726 ],\n", + " [ 0.07548062, 0.36429966],\n", + " [-0.29602556, -0.09935445],\n", + " [-1.78205028, -0.09935445],\n", + " [-1.4105441 , 0.36429966],\n", + " [-0.04835477, -0.56300857],\n", + " [-0.17219017, -1.25848974],\n", + " [-0.91520253, 1.05978084],\n", + " [-0.91520253, 1.75526201],\n", + " [ 1.06616377, -0.09935445],\n", + " [ 0.32315141, -0.33118151],\n", + " [ 1.06616377, -0.09935445],\n", + " [-1.28670871, -0.09935445],\n", + " [ 0.69465759, 0.1324726 ],\n", + " [-0.17219017, -0.33118151],\n", + " [-1.03903792, -1.72214386],\n", + " [-0.79136713, 0.82795378],\n", + " [-0.17219017, -1.02666268],\n", + " [ 1.06616377, 0.1324726 ],\n", + " [ 0.57082219, -0.56300857],\n", + " [-0.04835477, -0.79483563],\n", + " [-1.03903792, 0.59612672],\n", + " [ 1.18999916, 0.36429966],\n", + " [-1.16287331, -1.4903168 ],\n", + " [ 0.57082219, 0.59612672],\n", + " [-0.29602556, -1.25848974],\n", + " [ 0.4469868 , 0.82795378],\n", + " [ 0.19931601, -0.79483563],\n", + " [ 0.57082219, 0.59612672],\n", + " [ 0.32315141, -0.56300857],\n", + " [ 0.69465759, -0.56300857],\n", + " [ 0.32315141, -0.56300857],\n", + " [-0.04835477, 2.21891612],\n", + " [-1.03903792, 0.82795378],\n", + " [ 0.81849298, 0.36429966],\n", + " [-1.28670871, -0.09935445],\n", + " [-0.54369635, 0.82795378],\n", + " [-0.54369635, 0.82795378],\n", + " [-0.79136713, 2.45074318],\n", + " [ 1.80917613, -0.33118151],\n", + " [ 1.18999916, -0.56300857],\n", + " [ 0.69465759, 0.36429966],\n", + " [ 0.32315141, -0.09935445],\n", + " [ 0.57082219, -1.72214386],\n", + " [-1.16287331, 0.1324726 ],\n", + " [-1.03903792, 0.36429966],\n", + " [ 0.57082219, -0.33118151],\n", + " [ 1.06616377, 0.59612672],\n", + " [ 2.18068231, -0.09935445],\n", + " [-0.04835477, -0.79483563],\n", + " [ 0.19931601, -1.95397092],\n", + " [-1.03903792, 1.05978084],\n", + " [-0.91520253, 1.75526201],\n", + " [-1.90588567, -0.09935445],\n", + " [-1.03903792, 1.05978084],\n", + " [-1.16287331, 1.29160789],\n", + " [ 0.4469868 , -0.56300857],\n", + " [-0.41986095, -1.02666268],\n", + " [ 0.81849298, -0.09935445],\n", + " [-0.41986095, -1.4903168 ],\n", + " [-1.16287331, -1.25848974],\n", + " [-0.29602556, -0.79483563],\n", + " [ 2.3045177 , -1.02666268],\n", + " [-1.78205028, 0.36429966],\n", + " [-1.53437949, 0.1324726 ],\n", + " [ 0.4469868 , -1.95397092],\n", + " [-0.29602556, -0.09935445],\n", + " [ 0.19931601, -0.09935445],\n", + " [-0.41986095, 2.68257024],\n", + " [ 2.3045177 , -0.09935445],\n", + " [ 2.55218849, 1.75526201],\n", + " [-0.54369635, 1.98708907],\n", + " [-0.41986095, -1.72214386],\n", + " [ 1.56150534, -0.09935445],\n", + " [-1.03903792, -0.09935445],\n", + " [-0.29602556, -0.33118151],\n", + " [-0.29602556, -0.56300857],\n", + " [-0.41986095, -1.4903168 ],\n", + " [-0.17219017, 1.75526201],\n", + " [-0.17219017, -0.56300857]])" + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from sklearn.datasets import load_iris\n", + "iris=load_iris()\n", + "x=iris.data[:,:2]\n", + "y=iris.target\n", + "x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3)\n", + "scaler=StandardScaler()\n", + "scaler.fit(x_train)\n", + "x_train_std=scaler.transform(x_train)\n", + "x_test_std=scaler.transform(x_test)\n", + "x_train_std" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "1428bb57", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\99319\\AppData\\Local\\Temp\\ipykernel_26672\\2116216888.py:27: UserWarning: You passed a edgecolor/edgecolors ('black') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.\n", + " plt.scatter(x=X[y == cl, 0],\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from matplotlib.colors import ListedColormap\n", + "import matplotlib.pyplot as plt\n", + "\n", + "#resolution为区间步长\n", + "def plot_decision_regions(X, y, classifier, test_idx=None, resolution=0.02):\n", + "\n", + " # setup marker generator and color map\n", + " markers = ('s', 'x', 'o', '^', 'v')\n", + " colors = ('red', 'blue', 'lightgreen', 'gray', 'cyan')\n", + " #按照标签种类数取图像颜色的种类数\n", + " cmap = ListedColormap(colors[:len(np.unique(y))])\n", + "\n", + " # 图像的横纵坐标取值范围\n", + " x1_min, x1_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n", + " x2_min, x2_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n", + " #将间距分成网格\n", + " xx1, xx2 = np.meshgrid(np.arange(x1_min, x1_max, resolution),\n", + " np.arange(x2_min, x2_max, resolution))\n", + " #ravel的是为了降成1维,然后合并成两个特征的矩阵进行预测\n", + " Z = classifier.predict(np.array([xx1.ravel(), xx2.ravel()]).T)\n", + " Z = Z.reshape(xx1.shape)\n", + " plt.contourf(xx1, xx2, Z, alpha=0.3, cmap=cmap)\n", + " #plt.xlim(xx1.min(), xx1.max())\n", + " #plt.ylim(xx2.min(), xx2.max())\n", + "\n", + " for idx, cl in enumerate(np.unique(y)):\n", + " plt.scatter(x=X[y == cl, 0], \n", + " y=X[y == cl, 1],\n", + " alpha=0.8, \n", + " c=colors[idx],\n", + " marker=markers[idx], \n", + " label=cl, \n", + " edgecolor='black')\n", + "\n", + " # highlight test samples\n", + " if test_idx:\n", + " # plot all samples\n", + " X_test, y_test = X[test_idx, :], y[test_idx]\n", + "\n", + " plt.scatter(X_test[:, 0],\n", + " X_test[:, 1],\n", + " c='',\n", + " edgecolor='black',\n", + " alpha=1.0,\n", + " linewidth=1,\n", + " marker='o',\n", + " s=100, \n", + " label='test set')\n", + " \n", + "svc=SVC(kernel='linear')\n", + "svc.fit(x,y)\n", + "plot_decision_regions(x,y, classifier=svc, test_idx=None, resolution=0.02)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "a990dd86", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\99319\\AppData\\Local\\Temp\\ipykernel_26672\\2116216888.py:27: UserWarning: You passed a edgecolor/edgecolors ('black') for an unfilled marker ('x'). Matplotlib is ignoring the edgecolor in favor of the facecolor. This behavior may change in the future.\n", + " plt.scatter(x=X[y == cl, 0],\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "#核svm\n", + "svm=SVC(kernel='rbf',random_state=1,gamma=0.10,C=10.0)\n", + "svm.fit(x,y)\n", + "plot_decision_regions(x,y,classifier=svm)\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "added54b", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}