You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

knn_classification.ipynb 126 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415
  1. {
  2. "cells": [
  3. {
  4. "cell_type": "markdown",
  5. "metadata": {},
  6. "source": [
  7. "# kNN Classification\n",
  8. "\n",
  9. "\n",
  10. "kNN最邻近规则,主要应用领域是对未知事物的识别,即判断未知事物属于哪一类,判断思想是,基于欧几里得定理,判断未知事物的特征和哪一类已知事物的的特征最接近;\n",
  11. "\n",
  12. "K最近邻(k-Nearest Neighbor,kNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。KNN算法中,所选择的邻居都是已经正确分类的对象。该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。 KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。\n",
  13. "\n",
  14. "kNN算法不仅可以用于分类,还可以用于回归。通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比(组合函数)。\n",
  15. "\n",
  16. "该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。 该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。无论怎样,数量并不能影响运行结果。可以采用权值的方法(和该样本距离小的邻居权值大)来改进。该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。\n",
  17. "\n",
  18. "k-NN可以说是一种最直接的用来分类未知数据的方法。基本通过下面这张图跟文字说明就可以明白K-NN是干什么的\n",
  19. "![knn](images/knn.png)\n",
  20. "\n",
  21. "简单来说,k-NN可以看成:有那么一堆你已经知道分类的数据,然后当一个新数据进入的时候,就开始跟训练数据里的每个点求距离,然后挑离这个训练数据最近的K个点看看这几个点属于什么类型,然后用少数服从多数的原则,给新数据归类。\n",
  22. "\n",
  23. "\n",
  24. "算法步骤:\n",
  25. "\n",
  26. "* step.1---初始化距离为最大值\n",
  27. "* step.2---计算未知样本和每个训练样本的距离dist\n",
  28. "* step.3---得到目前K个最临近样本中的最大距离maxdist\n",
  29. "* step.4---如果dist小于maxdist,则将该训练样本作为K-最近邻样本\n",
  30. "* step.5---重复步骤2、3、4,直到未知样本和所有训练样本的距离都算完\n",
  31. "* step.6---统计K-最近邻样本中每个类标号出现的次数\n",
  32. "* step.7---选择出现频率最大的类标号作为未知样本的类标号"
  33. ]
  34. },
  35. {
  36. "cell_type": "code",
  37. "execution_count": 1,
  38. "metadata": {},
  39. "outputs": [
  40. {
  41. "name": "stdout",
  42. "output_type": "stream",
  43. "text": [
  44. "(200,)\n"
  45. ]
  46. },
  47. {
  48. "data": {
  49. "image/png": "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\n",
  50. "text/plain": [
  51. "<Figure size 432x288 with 1 Axes>"
  52. ]
  53. },
  54. "metadata": {
  55. "needs_background": "light"
  56. },
  57. "output_type": "display_data"
  58. }
  59. ],
  60. "source": [
  61. "%matplotlib inline\n",
  62. "import numpy as np\n",
  63. "import matplotlib.pyplot as plt\n",
  64. "\n",
  65. "# generate sample data\n",
  66. "n = 100\n",
  67. "x_1_1 = 10 + (np.random.rand(n, 1)*2 -1)*4\n",
  68. "x_1_2 = 15 + (np.random.rand(n, 1)*2 -1)*4\n",
  69. "x1 = np.concatenate((x_1_1, x_1_2), axis=1)\n",
  70. "y1 = np.zeros([n, 1])\n",
  71. "\n",
  72. "x_2_1 = 20 + (np.random.rand(n, 1)*2 -1)*4\n",
  73. "x_2_2 = 5 + (np.random.rand(n, 1)*2 -1)*4\n",
  74. "x2 = np.concatenate((x_2_1, x_2_2), axis=1)\n",
  75. "y2 = np.ones([n, 1])\n",
  76. "\n",
  77. "x = np.concatenate((x1, x2), axis=0)\n",
  78. "y = np.concatenate((y1, y2), axis=0)\n",
  79. "y = y.flatten()\n",
  80. "print(y.shape)\n",
  81. "\n",
  82. "# draw samle data\n",
  83. "plt.scatter(x[:,0], x[:,1], c=y)\n",
  84. "plt.show()\n",
  85. "\n"
  86. ]
  87. },
  88. {
  89. "cell_type": "code",
  90. "execution_count": 3,
  91. "metadata": {},
  92. "outputs": [
  93. {
  94. "name": "stdout",
  95. "output_type": "stream",
  96. "text": [
  97. "[0.0, 0.0, 0.0, 0.0, 0.0]\n",
  98. "[1.0, 1.0, 1.0, 1.0, 1.0]\n"
  99. ]
  100. }
  101. ],
  102. "source": [
  103. "# generate test data\n",
  104. "x_test = np.array([[12.5, 10.0], [15.4, 8.0]])\n",
  105. "\n",
  106. "k = 5\n",
  107. "# do knn\n",
  108. "for s in x_test:\n",
  109. " d = np.sum((s - x)**2, axis=1)\n",
  110. " idx = np.argsort(d)\n",
  111. " ys_5 = list(y[idx[:5]]) \n",
  112. " print(ys_5)\n",
  113. "\n",
  114. " # TODO: you need to implement the vote algorithm"
  115. ]
  116. },
  117. {
  118. "cell_type": "markdown",
  119. "metadata": {},
  120. "source": [
  121. "## Program"
  122. ]
  123. },
  124. {
  125. "cell_type": "code",
  126. "execution_count": 4,
  127. "metadata": {},
  128. "outputs": [],
  129. "source": [
  130. "import numpy as np\n",
  131. "import operator\n",
  132. "\n",
  133. "class KNN(object):\n",
  134. "\n",
  135. " def __init__(self, k=3):\n",
  136. " self.k = k\n",
  137. "\n",
  138. " def fit(self, x, y):\n",
  139. " self.x = x\n",
  140. " self.y = y\n",
  141. "\n",
  142. " def _square_distance(self, v1, v2):\n",
  143. " return np.sum(np.square(v1-v2))\n",
  144. "\n",
  145. " def _vote(self, ys):\n",
  146. " ys_unique = np.unique(ys)\n",
  147. " vote_dict = {}\n",
  148. " for y in ys:\n",
  149. " if y not in vote_dict.keys():\n",
  150. " vote_dict[y] = 1\n",
  151. " else:\n",
  152. " vote_dict[y] += 1\n",
  153. " sorted_vote_dict = sorted(vote_dict.items(), key=operator.itemgetter(1), reverse=True)\n",
  154. " return sorted_vote_dict[0][0]\n",
  155. "\n",
  156. " def predict(self, x):\n",
  157. " y_pred = []\n",
  158. " for i in range(len(x)):\n",
  159. " dist_arr = [self._square_distance(x[i], self.x[j]) for j in range(len(self.x))]\n",
  160. " sorted_index = np.argsort(dist_arr)\n",
  161. " top_k_index = sorted_index[:self.k]\n",
  162. " y_pred.append(self._vote(ys=self.y[top_k_index]))\n",
  163. " return np.array(y_pred)\n",
  164. "\n",
  165. " def score(self, y_true=None, y_pred=None):\n",
  166. " if y_true is None and y_pred is None:\n",
  167. " y_pred = self.predict(self.x)\n",
  168. " y_true = self.y\n",
  169. " score = 0.0\n",
  170. " for i in range(len(y_true)):\n",
  171. " if y_true[i] == y_pred[i]:\n",
  172. " score += 1\n",
  173. " score /= len(y_true)\n",
  174. " return score"
  175. ]
  176. },
  177. {
  178. "cell_type": "code",
  179. "execution_count": 5,
  180. "metadata": {},
  181. "outputs": [
  182. {
  183. "data": {
  184. "image/png": "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\n",
  185. "text/plain": [
  186. "<Figure size 432x288 with 1 Axes>"
  187. ]
  188. },
  189. "metadata": {
  190. "needs_background": "light"
  191. },
  192. "output_type": "display_data"
  193. },
  194. {
  195. "data": {
  196. "image/png": "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\n",
  197. "text/plain": [
  198. "<Figure size 432x288 with 1 Axes>"
  199. ]
  200. },
  201. "metadata": {
  202. "needs_background": "light"
  203. },
  204. "output_type": "display_data"
  205. }
  206. ],
  207. "source": [
  208. "%matplotlib inline\n",
  209. "\n",
  210. "import numpy as np\n",
  211. "import matplotlib.pyplot as plt\n",
  212. "\n",
  213. "# data generation\n",
  214. "np.random.seed(314)\n",
  215. "data_size_1 = 300\n",
  216. "x1_1 = np.random.normal(loc=5.0, scale=1.0, size=data_size_1)\n",
  217. "x2_1 = np.random.normal(loc=4.0, scale=1.0, size=data_size_1)\n",
  218. "y_1 = [0 for _ in range(data_size_1)]\n",
  219. "\n",
  220. "data_size_2 = 400\n",
  221. "x1_2 = np.random.normal(loc=10.0, scale=2.0, size=data_size_2)\n",
  222. "x2_2 = np.random.normal(loc=8.0, scale=2.0, size=data_size_2)\n",
  223. "y_2 = [1 for _ in range(data_size_2)]\n",
  224. "\n",
  225. "x1 = np.concatenate((x1_1, x1_2), axis=0)\n",
  226. "x2 = np.concatenate((x2_1, x2_2), axis=0)\n",
  227. "x = np.hstack((x1.reshape(-1,1), x2.reshape(-1,1)))\n",
  228. "y = np.concatenate((y_1, y_2), axis=0)\n",
  229. "\n",
  230. "data_size_all = data_size_1+data_size_2\n",
  231. "shuffled_index = np.random.permutation(data_size_all)\n",
  232. "x = x[shuffled_index]\n",
  233. "y = y[shuffled_index]\n",
  234. "\n",
  235. "split_index = int(data_size_all*0.7)\n",
  236. "x_train = x[:split_index]\n",
  237. "y_train = y[:split_index]\n",
  238. "x_test = x[split_index:]\n",
  239. "y_test = y[split_index:]\n",
  240. "\n",
  241. "# visualize data\n",
  242. "plt.scatter(x_train[:,0], x_train[:,1], c=y_train, marker='.')\n",
  243. "plt.title(\"train data\")\n",
  244. "plt.show()\n",
  245. "plt.scatter(x_test[:,0], x_test[:,1], c=y_test, marker='.')\n",
  246. "plt.title(\"test data\")\n",
  247. "plt.show()\n",
  248. "\n"
  249. ]
  250. },
  251. {
  252. "cell_type": "code",
  253. "execution_count": 6,
  254. "metadata": {},
  255. "outputs": [
  256. {
  257. "name": "stdout",
  258. "output_type": "stream",
  259. "text": [
  260. "train accuracy: 0.986\n",
  261. "test accuracy: 0.957\n"
  262. ]
  263. }
  264. ],
  265. "source": [
  266. "# data preprocessing\n",
  267. "x_train = (x_train - np.min(x_train, axis=0)) / (np.max(x_train, axis=0) - np.min(x_train, axis=0))\n",
  268. "x_test = (x_test - np.min(x_test, axis=0)) / (np.max(x_test, axis=0) - np.min(x_test, axis=0))\n",
  269. "\n",
  270. "# knn classifier\n",
  271. "clf = KNN(k=3)\n",
  272. "clf.fit(x_train, y_train)\n",
  273. "\n",
  274. "print('train accuracy: {:.3}'.format(clf.score()))\n",
  275. "\n",
  276. "y_test_pred = clf.predict(x_test)\n",
  277. "print('test accuracy: {:.3}'.format(clf.score(y_test, y_test_pred)))"
  278. ]
  279. },
  280. {
  281. "cell_type": "markdown",
  282. "metadata": {},
  283. "source": [
  284. "## sklearn program"
  285. ]
  286. },
  287. {
  288. "cell_type": "code",
  289. "execution_count": 8,
  290. "metadata": {},
  291. "outputs": [
  292. {
  293. "name": "stdout",
  294. "output_type": "stream",
  295. "text": [
  296. "Feature dimensions: (1797, 64)\n",
  297. "Label dimensions: (1797,)\n"
  298. ]
  299. }
  300. ],
  301. "source": [
  302. "% matplotlib inline\n",
  303. "\n",
  304. "import matplotlib.pyplot as plt\n",
  305. "from sklearn import datasets, neighbors, linear_model\n",
  306. "\n",
  307. "# load data\n",
  308. "digits = datasets.load_digits()\n",
  309. "X_digits = digits.data\n",
  310. "y_digits = digits.target\n",
  311. "\n",
  312. "print(\"Feature dimensions: \", X_digits.shape)\n",
  313. "print(\"Label dimensions: \", y_digits.shape)\n"
  314. ]
  315. },
  316. {
  317. "cell_type": "code",
  318. "execution_count": 9,
  319. "metadata": {},
  320. "outputs": [
  321. {
  322. "data": {
  323. "image/png": "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\n",
  324. "text/plain": [
  325. "<Figure size 432x288 with 10 Axes>"
  326. ]
  327. },
  328. "metadata": {
  329. "needs_background": "light"
  330. },
  331. "output_type": "display_data"
  332. }
  333. ],
  334. "source": [
  335. "# plot sample images\n",
  336. "nplot = 10\n",
  337. "fig, axes = plt.subplots(nrows=1, ncols=nplot)\n",
  338. "\n",
  339. "for i in range(nplot):\n",
  340. " img = X_digits[i].reshape(8, 8)\n",
  341. " axes[i].imshow(img)\n",
  342. " axes[i].set_title(y_digits[i])\n"
  343. ]
  344. },
  345. {
  346. "cell_type": "code",
  347. "execution_count": 10,
  348. "metadata": {},
  349. "outputs": [],
  350. "source": [
  351. "# split train / test data\n",
  352. "n_samples = len(X_digits)\n",
  353. "n_train = int(0.4 * n_samples)\n",
  354. "\n",
  355. "X_train = X_digits[:n_train]\n",
  356. "y_train = y_digits[:n_train]\n",
  357. "X_test = X_digits[n_train:]\n",
  358. "y_test = y_digits[n_train:]\n"
  359. ]
  360. },
  361. {
  362. "cell_type": "code",
  363. "execution_count": 11,
  364. "metadata": {},
  365. "outputs": [
  366. {
  367. "name": "stdout",
  368. "output_type": "stream",
  369. "text": [
  370. "KNN score: 0.953661\n",
  371. "LogisticRegression score: 0.908248\n"
  372. ]
  373. }
  374. ],
  375. "source": [
  376. "# do KNN classification\n",
  377. "knn = neighbors.KNeighborsClassifier()\n",
  378. "logistic = linear_model.LogisticRegression()\n",
  379. "\n",
  380. "print('KNN score: %f' % knn.fit(X_train, y_train).score(X_test, y_test))\n",
  381. "print('LogisticRegression score: %f' % logistic.fit(X_train, y_train).score(X_test, y_test))"
  382. ]
  383. },
  384. {
  385. "cell_type": "markdown",
  386. "metadata": {},
  387. "source": [
  388. "## References\n",
  389. "* [Digits Classification Exercise](http://scikit-learn.org/stable/auto_examples/exercises/plot_digits_classification_exercise.html)\n",
  390. "* [knn算法的原理与实现](https://zhuanlan.zhihu.com/p/36549000)"
  391. ]
  392. }
  393. ],
  394. "metadata": {
  395. "kernelspec": {
  396. "display_name": "Python 3",
  397. "language": "python",
  398. "name": "python3"
  399. },
  400. "language_info": {
  401. "codemirror_mode": {
  402. "name": "ipython",
  403. "version": 3
  404. },
  405. "file_extension": ".py",
  406. "mimetype": "text/x-python",
  407. "name": "python",
  408. "nbconvert_exporter": "python",
  409. "pygments_lexer": "ipython3",
  410. "version": "3.5.2"
  411. }
  412. },
  413. "nbformat": 4,
  414. "nbformat_minor": 2
  415. }

机器学习越来越多应用到飞行器、机器人等领域,其目的是利用计算机实现类似人类的智能,从而实现装备的智能化与无人化。本课程旨在引导学生掌握机器学习的基本知识、典型方法与技术,通过具体的应用案例激发学生对该学科的兴趣,鼓励学生能够从人工智能的角度来分析、解决飞行器、机器人所面临的问题和挑战。本课程主要内容包括Python编程基础,机器学习模型,无监督学习、监督学习、深度学习基础知识与实现,并学习如何利用机器学习解决实际问题,从而全面提升自我的《综合能力》。