From 4f3db13ba9a4c07d1a4d3bd2bf013af5989f6876 Mon Sep 17 00:00:00 2001 From: junyao123123 <13190753+junyao123123@user.noreply.gitee.com> Date: Fri, 14 Jul 2023 08:35:04 +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: junyao123123 <13190753+junyao123123@user.noreply.gitee.com> --- .../第七组实践代码/机器学习KNN实践—鸢尾花分类.ipynb | 275 ++++++++++++++++++ 1 file changed, 275 insertions(+) create mode 100644 大众点评数据集分析/第七组/第七组实践代码/机器学习KNN实践—鸢尾花分类.ipynb diff --git a/大众点评数据集分析/第七组/第七组实践代码/机器学习KNN实践—鸢尾花分类.ipynb b/大众点评数据集分析/第七组/第七组实践代码/机器学习KNN实践—鸢尾花分类.ipynb new file mode 100644 index 0000000..1e74e13 --- /dev/null +++ b/大众点评数据集分析/第七组/第七组实践代码/机器学习KNN实践—鸢尾花分类.ipynb @@ -0,0 +1,275 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "5dc878f1", + "metadata": {}, + "outputs": [], + "source": [ + "import sklearn" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "931537f0", + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'torch'", + "output_type": "error", + "traceback": [ + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Input \u001b[1;32mIn [2]\u001b[0m, in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[0m \u001b[38;5;28;01mimport\u001b[39;00m \u001b[38;5;21;01mtorch\u001b[39;00m\n", + "\u001b[1;31mModuleNotFoundError\u001b[0m: No module named 'torch'" + ] + } + ], + "source": [ + "import torch" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f1f935b5", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "类别 0\n", + "查准率 1.0\n", + "查全率 1.0\n", + "F1值 1.0\n", + "-------------------------------\n", + "类别 1\n", + "查准率 0.6666666666666666\n", + "查全率 0.5\n", + "F1值 0.5555555555555555\n", + "-------------------------------\n", + "类别 2\n", + "查准率 0.5\n", + "查全率 0.6666666666666666\n", + "F1值 0.5555555555555555\n", + "-------------------------------\n", + "宏查准率 0.7222222222222222\n", + "宏查全率 0.7222222222222222\n", + "宏F1值 0.7037037037037036\n", + "总体预测正确率 0.9666666666666667\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "C:\\Users\\Administrator\\anaconda3\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1318: UndefinedMetricWarning: Recall is ill-defined and being set to 0.0 in labels with no true samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "C:\\Users\\Administrator\\anaconda3\\lib\\site-packages\\sklearn\\metrics\\_classification.py:1318: UndefinedMetricWarning: Precision is ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.\n", + " _warn_prf(average, modifier, msg_start, len(result))\n", + "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_2580\\2351535453.py:94: UserWarning: FixedFormatter should only be used together with FixedLocator\n", + " ax.set_xticklabels([''] + labels)\n", + "C:\\Users\\Administrator\\AppData\\Local\\Temp\\ipykernel_2580\\2351535453.py:95: UserWarning: FixedFormatter should only be used together with FixedLocator\n", + " ax.set_yticklabels([''] + labels)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import random\n", + "from matplotlib.colors import ListedColormap\n", + "from sklearn.metrics import confusion_matrix\n", + "from sklearn import neighbors, datasets\n", + "import sklearn.preprocessing\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "from sklearn.metrics import precision_score,recall_score,f1_score\n", + "\n", + "# 获取鸢尾花数据集的后两个特征,形成原始数据集D\n", + "iris = datasets.load_iris()\n", + "X = iris.data[:, -2:]\n", + "y = iris.target\n", + "\n", + "# 将原始数据集D按照类别分层随机打乱,以hold-out方式划分为训练集(80%),以及测试集(20%)\n", + "list1 =[]\n", + "list2 =[]\n", + "list3 =[]\n", + "\n", + "for i in range(len(y)):\n", + " if y[i] == 0:\n", + " list1.append(X[i])\n", + " elif y[i] == 1:\n", + " list2.append(X[i])\n", + " else:\n", + " list3.append(X[i])\n", + "\n", + "for i in [list1,list2,list3]:\n", + " random.shuffle(i)\n", + "\n", + "test_radio = 0.2\n", + "test_size = int(len(X)*test_radio)\n", + "category1 = int(len(list1)*test_radio)\n", + "category2 = int(len(list2)*test_radio)\n", + "category3 = int(len(list3)*test_radio)\n", + "\n", + "train_set = list1[category1:]+list2[category2:]+list3[category3:]\n", + "train_true = [0]*len(list1[category1:])+[1]*len(list2[category2:])+[2]*len(list3[category3:])\n", + "test_set = list1[:category1]+list2[:category2]+list3[:category3]\n", + "test_true = [0]*len(list1[:category1])+[1]*len(list2[:category2])+[2]*len(list3[:category3])\n", + "\n", + "\n", + "# 规范化预处理\n", + "stdsc = sklearn.preprocessing.StandardScaler()\n", + "train_std = stdsc.fit_transform(train_set)\n", + "test_std = stdsc.fit_transform(test_set)\n", + "\n", + "# 训练模型\n", + "K = 7\n", + "clf = neighbors.KNeighborsClassifier(K, weights='uniform')\n", + "clf.fit(train_std,train_true)\n", + "\n", + "# 预测类别\n", + "test_predict = clf.predict(test_std)\n", + "\n", + "\n", + "\n", + "# 生成混淆矩阵\n", + "labels = [0,1,2]\n", + "C = confusion_matrix(test_true,test_predict,labels = labels)\n", + "# 估计每个类别的查准率、查全率、F1值,以及宏查准率、宏查全率、宏F1值;估计总体预测正确率.\n", + "precision = []\n", + "recall = []\n", + "f1score = []\n", + "for i in range(len(labels)):\n", + " x_true = C[i]\n", + " x_predict = C[:,[i]].reshape(3)\n", + " precision.append(precision_score(x_true,x_predict,average = 'macro'))\n", + " recall.append(recall_score(x_true,x_predict,average = 'macro'))\n", + " f1score.append(f1_score(x_true,x_predict,average = 'macro'))\n", + " print('类别',i)\n", + " print('查准率',precision[i])\n", + " print('查全率',recall[i])\n", + " print('F1值',f1score[i])\n", + " print('-------------------------------')\n", + "\n", + "m_precision = sum(precision) / 3\n", + "m_recall = sum(recall) / 3\n", + "m_f1score = sum(f1score) / 3\n", + "print('宏查准率',m_precision)\n", + "print('宏查全率',m_recall)\n", + "print('宏F1值',m_f1score)\n", + "\n", + "accuracy = sum([(C[i][i]) for i in range(3)])/ C.sum()\n", + "print('总体预测正确率',accuracy)\n", + "\n", + "# 可视化\n", + "fig = plt.figure()\n", + "ax = fig.add_subplot(111)\n", + "cax = ax.matshow(C)\n", + "plt.title('Confusion matrix of the classifier')\n", + "fig.colorbar(cax)\n", + "ax.set_xticklabels([''] + labels)\n", + "ax.set_yticklabels([''] + labels)\n", + "plt.xlabel('Predicted')\n", + "plt.ylabel('True')\n", + "plt.show()\n", + "\n", + "'''待决策样本集D1的产生:在原始二维特征空间,基于该数据集的两种特征取值的最小值、最大值,获取该数据集的矩形包围盒,\n", + "并在该的矩形区域上下左右各个方向扩充1的基础上,以step=0.02为两种特征的采样间隔,在该矩形区域等间隔抽取离散位置,\n", + "构成原始待决策的样本集D1。'''\n", + "step = 0.02\n", + "feature1_min, feature1_max = X[:, 0].min() - 1, X[:, 0].max() + 1\n", + "feature2_min, feature2_max = X[:, 1].min() - 1, X[:, 1].max() + 1\n", + "feature1 = list(np.arange(feature1_min, feature1_max, step))\n", + "feature2 = list(np.arange(feature2_min,feature2_max, step))\n", + "D1 = []\n", + "i=j=0\n", + "while i