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

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

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