{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# kNN Classification\n", "\n", "\n", "K最近邻(k-Nearest Neighbor,kNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。\n", "\n", "kNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比(组合函数)。\n", "\n", "该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。 该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。\n", "\n", "k-NN可以说是一种最直接的用来分类未知数据的方法。基本通过下面这张图跟文字说明就可以明白K-NN是干什么的\n", "![knn](images/knn.png)\n", "\n", "简单来说,k-NN可以看成:有那么一堆你已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑离这个训练数据最近的K个点看看这几个点属于什么类型,然后用少数服从多数的原则,给新数据归类。\n", "\n", "\n", "算法步骤:\n", "\n", "* step.1---初始化距离为最大值\n", "* step.2---计算未知样本和每个训练样本的距离dist\n", "* step.3---得到目前K个最临近样本中的最大距离maxdist\n", "* step.4---如果dist小于maxdist,则将该训练样本作为K-最近邻样本\n", "* step.5---重复步骤2、3、4,直到未知样本和所有训练样本的距离都算完\n", "* step.6---统计K-最近邻样本中每个类标号出现的次数\n", "* step.7---选择出现频率最大的类标号作为未知样本的类标号" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# generate sample data\n", "n = 100\n", "x_1_1 = 10 + (np.random.rand(n, 1)*2 -1)*4\n", "x_1_2 = 15 + (np.random.rand(n, 1)*2 -1)*4\n", "x1 = np.concatenate((x_1_1, x_1_2), axis=1)\n", "y1 = np.zeros([n, 1])\n", "\n", "x_2_1 = 20 + (np.random.rand(n, 1)*2 -1)*4\n", "x_2_2 = 5 + (np.random.rand(n, 1)*2 -1)*4\n", "x2 = np.concatenate((x_2_1, x_2_2), axis=1)\n", "y2 = np.ones([n, 1])\n", "\n", "x = np.concatenate((x1, x2), axis=0)\n", "y = np.concatenate((y1, y2), axis=0)\n", "y = y.flatten()\n", "\n", "# draw sample data\n", "plt.scatter(x[:,0], x[:,1], c=y)\n", "plt.show()\n", "\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[0.0, 0.0, 0.0, 0.0, 0.0]\n", "[1.0, 1.0, 1.0, 1.0, 1.0]\n" ] } ], "source": [ "# generate test data\n", "x_test = np.array([[12.5, 10.0], [15.4, 8.0]])\n", "\n", "k = 5\n", "# do knn\n", "for s in x_test:\n", " d = np.sum((s - x)**2, axis=1)\n", " idx = np.argsort(d)\n", " ys_5 = list(y[idx[:5]]) \n", " print(ys_5)\n", "\n", " # TODO: you need to implement the vote algorithm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Program" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import operator\n", "\n", "class KNN(object):\n", "\n", " def __init__(self, k=3):\n", " self.k = k\n", "\n", " def fit(self, x, y):\n", " self.x = x\n", " self.y = y\n", "\n", " def _square_distance(self, v1, v2):\n", " return np.sum(np.square(v1-v2))\n", "\n", " def _vote(self, ys):\n", " ys_unique = np.unique(ys)\n", " vote_dict = {}\n", " for y in ys:\n", " if y not in vote_dict.keys():\n", " vote_dict[y] = 1\n", " else:\n", " vote_dict[y] += 1\n", " sorted_vote_dict = sorted(vote_dict.items(), key=operator.itemgetter(1), reverse=True)\n", " return sorted_vote_dict[0][0]\n", "\n", " def predict(self, x):\n", " y_pred = []\n", " for i in range(len(x)):\n", " dist_arr = [self._square_distance(x[i], self.x[j]) for j in range(len(self.x))]\n", " sorted_index = np.argsort(dist_arr)\n", " top_k_index = sorted_index[:self.k]\n", " y_pred.append(self._vote(ys=self.y[top_k_index]))\n", " return np.array(y_pred)\n", "\n", " def score(self, y_true=None, y_pred=None):\n", " if y_true is None and y_pred is None:\n", " y_pred = self.predict(self.x)\n", " y_true = self.y\n", " score = 0.0\n", " for i in range(len(y_true)):\n", " if y_true[i] == y_pred[i]:\n", " score += 1\n", " score /= len(y_true)\n", " return score" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "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": [ "%matplotlib inline\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "\n", "# data generation\n", "np.random.seed(314)\n", "data_size_1 = 300\n", "x1_1 = np.random.normal(loc=5.0, scale=1.0, size=data_size_1)\n", "x2_1 = np.random.normal(loc=4.0, scale=1.0, size=data_size_1)\n", "y_1 = [0 for _ in range(data_size_1)]\n", "\n", "data_size_2 = 400\n", "x1_2 = np.random.normal(loc=10.0, scale=2.0, size=data_size_2)\n", "x2_2 = np.random.normal(loc=8.0, scale=2.0, size=data_size_2)\n", "y_2 = [1 for _ in range(data_size_2)]\n", "\n", "x1 = np.concatenate((x1_1, x1_2), axis=0)\n", "x2 = np.concatenate((x2_1, x2_2), axis=0)\n", "x = np.hstack((x1.reshape(-1,1), x2.reshape(-1,1)))\n", "y = np.concatenate((y_1, y_2), axis=0)\n", "\n", "data_size_all = data_size_1+data_size_2\n", "shuffled_index = np.random.permutation(data_size_all)\n", "x = x[shuffled_index]\n", "y = y[shuffled_index]\n", "\n", "split_index = int(data_size_all*0.7)\n", "x_train = x[:split_index]\n", "y_train = y[:split_index]\n", "x_test = x[split_index:]\n", "y_test = y[split_index:]\n", "\n", "# visualize data\n", "plt.scatter(x_train[:,0], x_train[:,1], c=y_train, marker='.')\n", "plt.title(\"train data\")\n", "plt.show()\n", "plt.scatter(x_test[:,0], x_test[:,1], c=y_test, marker='.')\n", "plt.title(\"test data\")\n", "plt.show()\n", "\n" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "train accuracy: 0.986\n", "test accuracy: 0.957\n" ] } ], "source": [ "# data preprocessing\n", "x_train = (x_train - np.min(x_train, axis=0)) / (np.max(x_train, axis=0) - np.min(x_train, axis=0))\n", "x_test = (x_test - np.min(x_test, axis=0)) / (np.max(x_test, axis=0) - np.min(x_test, axis=0))\n", "\n", "# knn classifier\n", "clf = KNN(k=3)\n", "clf.fit(x_train, y_train)\n", "\n", "print('train accuracy: {:.3}'.format(clf.score()))\n", "\n", "y_test_pred = clf.predict(x_test)\n", "print('test accuracy: {:.3}'.format(clf.score(y_test, y_test_pred)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## sklearn program" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Feature dimensions: (1797, 64)\n", "Label dimensions: (1797,)\n" ] } ], "source": [ "% matplotlib inline\n", "\n", "import matplotlib.pyplot as plt\n", "from sklearn import datasets, neighbors, linear_model\n", "\n", "# load data\n", "digits = datasets.load_digits()\n", "X_digits = digits.data\n", "y_digits = digits.target\n", "\n", "print(\"Feature dimensions: \", X_digits.shape)\n", "print(\"Label dimensions: \", y_digits.shape)\n" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# plot sample images\n", "nplot = 10\n", "fig, axes = plt.subplots(nrows=1, ncols=nplot)\n", "\n", "for i in range(nplot):\n", " img = X_digits[i].reshape(8, 8)\n", " axes[i].imshow(img)\n", " axes[i].set_title(y_digits[i])\n" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# split train / test data\n", "n_samples = len(X_digits)\n", "n_train = int(0.4 * n_samples)\n", "\n", "X_train = X_digits[:n_train]\n", "y_train = y_digits[:n_train]\n", "X_test = X_digits[n_train:]\n", "y_test = y_digits[n_train:]\n" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "KNN score: 0.953661\n", "LogisticRegression score: 0.908248\n" ] } ], "source": [ "# do KNN classification\n", "knn = neighbors.KNeighborsClassifier()\n", "logistic = linear_model.LogisticRegression()\n", "\n", "print('KNN score: %f' % knn.fit(X_train, y_train).score(X_test, y_test))\n", "print('LogisticRegression score: %f' % logistic.fit(X_train, y_train).score(X_test, y_test))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## References\n", "* [Digits Classification Exercise](http://scikit-learn.org/stable/auto_examples/exercises/plot_digits_classification_exercise.html)\n", "* [knn算法的原理与实现](https://zhuanlan.zhihu.com/p/36549000)" ] } ], "metadata": { "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.5.2" } }, "nbformat": 4, "nbformat_minor": 2 }