优点:精度高,对异常值不敏感,无数据输入假定
缺点:计算复杂度高,空间复杂度高
适用数据范围:数值型和标称型
 
一般流程:
    (1). 收集数据(网络抓取)
    (2).处理数据,将数据处理成结构化的数据格式。
    (3).分析数据
    (4).测试算法(主要是计算模型的出错率)
    (5).使用算法,
 
K-近邻算法采用测量不同特征值之间的距离的方法进行分类
 
工作原理是:存在一个训练样本集,且样本集中每个数据都存在标签(与分类的对应关系)。
当输入没有标签的新数据后,将新数据的每个特征与样本集中的数据对应的特征进行比较,
然后算法提取训练样本集中前k个最相似的数据的分类标签,且k不大于20 。
选择最相似数据中出现次数最多的分类,作为新数据的分类。
 
 
数据归一化的作用,只用在特征数据相差较大且同等重要的条件下
 
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAA3CAYAAACfMEpbAAAKrGlDQ1BJQ0MgUHJvZmlsZQAASImVlgdUFFkWhl9VdQ6kbhCQ0OSM5Cg5NqDkKApNN6EJbdvQJDMyOIJjQEUEFUEHQRRMBBlUxIBpEFDAPCCDgDIOBjCgMgUszc7u2d2z/zu33ndu3bp169V751wAKA9ZfH4yLAFACi9NEODhzAgLj2DgBwCEDgKQA1gWO5Xv5OfnA1DNz3/XZC8ai+q+wUyuf7//XyXJiU1lAwD5oRzDSWWnoHwetVY2X5AGAIIaUMtI489wMcp0AVogyidnOH6OW2c4Zo4fzMYEBbigPAIAgcJiCeIBIH9A/Yx0djyah0JH2YjH4fJQdkXZnp3A4qCci7J+SsrqGT6NsnbMP+WJ/1vOGFFOFitexHPfMiuCKzeVn8zK+j+X438rJVk4/w5V1CgJAs8AdJZF16wqabW3iHkxy33nmcuZjZ/lBKFn8DyzU10i5pnDcvWeZ2FSsNM8swQLz3LTmEHzLFgdIMrPS17uI8ofyxRxbKpb4DzHcd2Z85ydEBQ6z+nckOXznJoU6L0Q4yLyC4QBoprjBO6ib0xJXaiNzVp4V1pCkOdCDWGiejixrm4iPy9YFM9Pcxbl5Cf7LdSf7CHyp6YHip5NQzfYPCeyvPwW8viJ1ge4Ajfggw4GOpugwxiYAU+QnhabObOngctqfpaAG5+QxnBCT00sg8ljG+ozTIyMLQGYOYNzv/j9w9mzBckQFnxJFAAsKlHnmQVfbCIALd8BEHNb8GlGodsjEoCrlmyhIH3Oh5m5YAEJiAM6erqVgBrQBgZodRbAFjiilXoBXxAEwsEqwAYJIAUIQAZYBzaDPFAAdoF9oASUgaOgCpwCZ0EjaAFXwA1wB3SCHvAE9IMh8BqMg0kwBUEQHqJCNEgOUoY0ID3IBLKC7CE3yAcKgMKhaCge4kFCaB20BSqACqESqByqhs5AF6Ar0C2oC3oEDUCj0DvoC4zAFJgOK8Ka8BLYCnaCveEgeCUcD6+Bs+FceAdcDFfAJ+EG+Ap8B+6B++HX8AQCEDIig6ggBogV4oL4IhFIHCJANiD5SBFSgdQizUg7ch/pR8aQzxgchoZhYAwwthhPTDCGjVmD2YDZjinBVGEaMNcw9zEDmHHMdywVq4DVw9pgmdgwbDw2A5uHLcJWYuux17E92CHsJA6Hk8Fp4SxxnrhwXCJuLW477hCuDteK68IN4ibweLwcXg9vh/fFs/Bp+Dz8AfxJ/GV8N34I/4lAJigTTAjuhAgCj5BDKCKcIFwidBOGCVNECaIG0YboS+QQs4g7iceIzcR7xCHiFEmSpEWyIwWREkmbScWkWtJ10lPSezKZrEq2JvuTueRN5GLyafJN8gD5M0WKoktxoURShJQdlOOUVsojynsqlapJdaRGUNOoO6jV1KvU59RPYjQxQzGmGEdso1ipWINYt9gbcaK4hriT+CrxbPEi8XPi98THJIgSmhIuEiyJDRKlEhck+iQmJGmSxpK+kimS2yVPSN6SHJHCS2lKuUlxpHKljkpdlRqkITQ1mguNTdtCO0a7Thui4+hadCY9kV5AP0XvoI9LS0mbSYdIZ0qXSl+U7pdBZDRlmDLJMjtlzsr0ynxZpLjIaVHsom2Lahd1L/oou1jWUTZWNl+2TrZH9oscQ85NLklut1yj3DN5jLyuvL98hvxh+evyY4vpi20XsxfnLz67+LECrKCrEKCwVuGowl2FCUUlRQ9FvuIBxauKY0oySo5KiUp7lS4pjSrTlO2Vucp7lS8rv2JIM5wYyYxixjXGuIqCiqeKUKVcpUNlSlVLNVg1R7VO9ZkaSc1KLU5tr1qb2ri6svoy9XXqNeqPNYgaVhoJGvs12jU+ampphmpu1WzUHNGS1WJqZWvVaD3Vpmo7aK/RrtB+oIPTsdJJ0jmk06kL65rrJuiW6t7Tg/Us9Lh6h/S69LH61vo8/Qr9PgOKgZNBukGNwYChjKGPYY5ho+GbJepLIpbsXtK+5LuRuVGy0TGjJ8ZSxl7GOcbNxu9MdE3YJqUmD0yppu6mG02bTN+a6ZnFmh02e2hOM19mvtW8zfybhaWFwKLWYtRS3TLa8qBlnxXdys9qu9VNa6y1s/VG6xbrzzYWNmk2Z23+tDWwTbI9YTuyVGtp7NJjSwftVO1YduV2/fYM+2j7I/b9DioOLIcKhxeOao4cx0rHYScdp0Snk05vnI2cBc71zh9dbFzWu7S6Iq4ervmuHW5SbsFuJW7P3VXd491r3Mc9zD3WerR6Yj29PXd79jEVmWxmNXPcy9Jrvdc1b4p3oHeJ9wsfXR+BT/MyeJnXsj3Lni7XWM5b3ugLfJm+e3yf+Wn5rfH7xR/n7+df6v8ywDhgXUB7IC0wKvBE4GSQc9DOoCfB2sHC4LYQ8ZDIkOqQj6GuoYWh/WFLwtaH3QmXD+eGN0XgI0IiKiMmVrit2LdiKNI8Mi+yd6XWysyVt1bJr0pedTFKPIoVdS4aGx0afSL6K8uXVcGaiGHGHIwZZ7uw97Nfcxw5ezmjsXaxhbHDcXZxhXEj8Xbxe+JHExwSihLGuC7cEu7bRM/EssSPSb5Jx5Omk0OT61IIKdEpF3hSvCTetdVKqzNXd/H1+Hn8/jU2a/atGRd4CypTodSVqU1pdLTZuSvUFv4gHEi3Ty9N/5QRknEuUzKTl3k3SzdrW9Zwtnv2z2sxa9lr29aprNu8bmC90/ryDdCGmA1tG9U25m4c2uSxqWozaXPS5l9zjHIKcz5sCd3SnKuYuyl38AePH2ryxPIEeX1bbbeW/Yj5kftjxzbTbQe2fc/n5N8uMCooKvi6nb399k/GPxX/NL0jbkfHToudh3fhdvF29e522F1VKFmYXTi4Z9mehr2Mvfl7P+yL2neryKyobD9pv3B/f7FPcdMB9QO7DnwtSSjpKXUurTuocHDbwY+HOIe6Dzseri1TLCso+3KEe+RhuUd5Q4VmRdFR3NH0oy+PhRxr/9nq5+pK+cqCym/Hecf7qwKqrlVbVlefUDixswauEdaMnow82XnK9VRTrUFteZ1MXcFpcFp4+tWZ6DO9Z73Ptp2zOld7XuP8wXpafX4D1JDVMN6Y0NjfFN7UdcHrQluzbXP9L4a/HG9RaSm9KH1x5yXSpdxL05ezL0+08lvHrsRfGWyLantyNezqg2v+1zque1+/ecP9xtV2p/bLN+1uttyyuXXhttXtxjsWdxrumt+t/9X81/oOi46Ge5b3mjqtO5u7lnZd6nbovnLf9f6NB8wHd3qW93T1Bvc+7Ivs63/IeTjyKPnR28fpj6eebHqKfZr/TOJZ0XOF5xW/6fxW12/Rf3HAdeDui8AXTwbZg69/T/3961DuS+rLomHl4eoRk5GWUffRzlcrXg295r+eGsv7Q/KPg2+035z/0/HPu+Nh40NvBW+n321/L/f++AezD20TfhPPJ1Mmpz7mf5L7VPXZ6nP7l9Avw1MZX/Ffi7/pfGv+7v396XTK9DSfJWDNtgIIanBcHADvjgNADQeA1gkASWyuR54VNNfXzxL4TzzXR8/KAoBKRwCCWwHw2wRAOWqaqFFQnx9qQY4ANjUV2T+UGmdqMpeL3Ii2JkXT0+/R3hCvA8C3vunpqcbp6W9or4M8BqB1cq43n5EE2v8fOWLsERDcASHgX/UX2G4FvI6Bn/sAAAGcaVRYdFhNTDpjb20uYWRvYmUueG1wAAAAAAA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJYTVAgQ29yZSA1LjQuMCI+CiAgIDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmV4aWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20vZXhpZi8xLjAvIj4KICAgICAgICAgPGV4aWY6UGl4ZWxYRGltZW5zaW9uPjQ1MDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lvbj41NTwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgql5SaEAAAZ9UlEQVR4Ae1dD1RU15n/dc9oJzmEGneSECJGDSUJGjAnNsTGMEkxiCfO0azTXZFNWDT+Weuf00CNxoVWXaLdQlvFtYFkQ9WDpCeYVTEHQyQRk5VQSIM2kuOciViIwBYaWZyDE5h29rvvvZl5M/NmeMAMM2Tu9eDcd+937/2+3733++7f975lJwfuOAIcAY4AR4AjEKEI/F2Eys3F5ghwBDgCHAGOgIAAN4S8IXAEOAIcAY5ARCPADWFEVz8XniPAEeAIcAS4IeRtgCPAEeAIcAQiGgFuCCO6+rnwHAGOAEeAI8ANIW8DHAGOAEeAIxDRCHBDGNHVz4XnCHAEOAIcAW4IeRvgCHAEOAIcgYhGgBvCiK5+LjxHgCPAEeAIcEPI2wBHgCPAEeAIRDQC3BBGdPVz4TkCHAGOAEeAG0LeBjgCHAGOAEcgohHghjCiq58LzxHgCHAEOALcEPI2wBHgCHAEOAIRjQA3hBFd/Vx4jgBHgCPAEeCGkLcBjgBHgCPAEYhoBLghjOjq58JzBDgCHAGOADeEvA1wBDgCHAGOQEQjwA1hRFc/F54jwBHgCHAEuCHkbYAjwBHgCHAEIhoBTbhJ31q5GRtKL4YbW5wfjgBHgCPAEVBEIB5Fp17HvCjFyAkRGEaG0IbTP12IvfWzsDg7B9O1kxUB7G//Iy582Ycpd8/BQzNvV6Tp/aIJV/96L+Yl3KkYzwLHjeZv1/Hpx58BxO/DPvjF3/6Mpo+v4d7vPYw7J/lgeRxp+ts/xR++BJKJn9t98DNu+KmpK45x8Ns6xzgiMW4mvTTdn17CICyDU3FXGFkSHxrUb/C37OT8UoxXpKUZK5fkAVn7cHRN8niVOmHKsVr6YIUWU6K0E4ZnzmikIWBFX58VGm0UorQTXDNGWtWpkPebrIPCprW2ffAWOqkytmXMVlElEURiNeHAxrWoMksyxxtRfmAjZnJ7GEGNIPxF7Ws9huc3lKBfYjUlpwiF2fMQNgom/CEMXw4jQAeFyWGZXrzzWiMQvw4L4njXkfeIc3vWonbuLlRVHcG2rBTAXIUdR1rlJNzPEQgtAjYTCsgILi86gqryPTDER6OxPA9vmSyh5YuXHhAEIkEHhYUhtJrqUUVDyfTMpzCB91sD0ujcMrG2oupTA97YmAqdLg4Za7YjKxroNH9By6TccQTCAwFLSy0GjPuQPS8OupnzkfvvGwTGLDdt4cEg52L0CESIDgqL6dfvqw9RRSVh2eMxI6gwGywWZg40iAqXfTMb2yPpwQ3cjjhdAEy6dhYKDv8IOicqWpIViI67m3YLw8vZrBZYbRpoqS78NSqRjmpNEwWtHyFCRRdcVG2wsjar0ZLsflES2rZGJd3wfUBtX1FL545S1Jx/xq/nTnEFTrkb8a6n8PNRP7URtv5qwCfTY0nrM1P1EWr7hb8crVbbMO1PlnoC6SAZ1yP2jqotjLgUfwnYiKO6H9GGTCQqKUZbNyp3rEBpxzqcOpopzBgtpjq8nLcbFx0bEtEpyC/KR1pCAIyPP14V42xoa6jB28dPoLpR3MgzbCtHbkYUbN11ePHFSkB3q1fKgYFe3LP437DzmSGszNiCR/LLkJuW4EGnhU6mX2BrRwttpBoeC52a6W6uxIq8UuQcPIXsxChYOxrwy517UGt2Vgb0OXn4SXaqx+zegroDu7G7ipbAJZdkzMcrG9PChM7BVXB+TXWv4We7K4R9cFZCdHw6CvZuxTydvAta0VD5S+wprXXutTG6vB2bkTrTvW2r7QOBoms9tBIb3v0+yso2wqubaae41aHlsw9hRgp2zJY33uDgqpirgs4Q6Gy9aDhxCNtLPqHj/kdHdtx/LGkVmRxpoNr+4zvfvrYG/FfhdnwytwhHN85zEVovTCgd5GI8gD52ajSUrutMoV2v19urLt9UYKPdXmLQU3yh/YoUffPKSYFer99qb7lBSa632LdSer3eYD/pIFLIKShBN6/YS1azstnfVnvNpS63YppKMqU4B4377+rfXhLob0gybTra4pbe86GlxGDXF5yxD3lGjNNzV32JIE9hzRWhxKH2GrtBkJ3kEurJJV9myXkZVzftNQXEO9FulWRsObpVeDYU1NhdNR8qOhmrQfBeOSnKmrm1yF5SJPoZFnp9kd3VYobsZwpFjMQ4F5Z6/Wr7+R4XY2r7QGDpblAdMp6kfudix8PXZS8k2UqaZAx7UAT30Vtn2O037OePinpGxHa1qDtUMTKWtKoKUEGktl8oZ3Wz/by9MNPVnlaXeeuZiaKDlCUceyjGnsVYcrhh/y0zJIYSu3e3YZXPKi9TpgR6JMOot5c1XXcWfL2pjOhYPmV2V6gzOjiem5fsBYIy09szC6q8+af41RS/uuyMvb2nx97V1SX89VzvstcUZgr8nmx3mbSe+iIhrMyHAuk5T0ZIESe14g3Zr9SftNc0uVSv2pSMbkgy1nIDV1/I6qfA3tIlmrKbPZfsRZksjP2RspEsXM95UTZ9prx+rtvLpEFEiVSXoaIbCQ4jppXaQeEZcfDA0g91nbFnShg1scEccz1nBNwKqlqkgcFN+6UaCTfWjqRBExGq7AOBpmNMdtmL2ICH6tG7v7L4IaHPrj4qDvBYyIjd9cv2k0dr7F2urjGCLJR0BktOWNaft1++fMa+ydE2HbgPm/tY0g6buSoCtf3CV2ZD1C/rWy7b68s2CW1MyRCytMHXQb44DH14SA/L2Do+QjmtJqaseUa2DyZOd7vP/Sddrgf0uYWYL22SWdvEQzUUCr1sT2LK3IUUQq6/AnVt43GMxIpjWzeA2ANis3Bw53Iv/q3tF4jNbXh1TRrtF+oQExMj/OmmaGD+jNY3o42YLzshq0tdh3VJQEXeL9DqIYLVdAyr9nyNN09uFMuxdqOt14OI8eLPWS9hR0ExDn78pT8qH3Hd2LelmOL0KFw/X6SxteJwLZB7JB/JMeKatlaXiNz9+aDzPIIbEs5KsOW+auE5JXMhXItlU7BwqVBrqHrrQzr8Eyo6idkg/VjbP8c9WXvwctpMZwmamEewKJY9DjjDTO/REnpSLvKXJ0v7v1okZuRiV7pACAwOCbRq+0Cg6URGY/CjvevotFYFdh0zOXl3eJpfW4+qafvwemaiEGTpMKF7hM209cTPUFx6EF+OMB0rUElniLwRlqnzkZCQgvkj3lUYS1qx9LH9r7Zf+C5FQ/0yNTkBjz7+iG8iigm6DvJbemgjg2YI+0zNaG7r8ytdy+nDFB+PHz7lUhJCAlsbflPAlGc6XjC44q58LJgeSvIAYuVbK5o78IDUwGvOXfZbZiAiLa3/jZKLYk5ZLz6LKXRQxGKxQH5GTpuQidd3ZnhtyNtoT62K7GD88ic8jGcUnt1ISgaN+OXvXNcjbN2nkbG2BDMy56LtXB3q6K941Vqc+7O8NHVSsZ3KqG/7eFWMnyw6qn8D2sYlu/4CZjpxvw3G3CI8LTPmQhZRd2OGPC/rFbwnYZV43x3yGNx9/wPic+MJXO4NEV2QT/hrE5Zj5xpp8OCQvu9zvEttAEkGxEtbf9HfNWLPT572ai+6e8RRoMNkqu0DgaZzsK5NNGATDdgulhzABRl2pmMvIK/CjMX3D6Cujtrp6UNY+1wFbjrbiyOH4X5ZK70TI26lPnTGcKWFfbza/iOrC18yDa8xgq+DfPEW6vARN1M1DLceewUbSmi6QPcCT70uHnDxSkcNt7qCtAHNmua6nwOA5dI5YbYVa1iAOHnCQfEhPiXRbXOe1DuSn6DeaSaNK9HIkwXWb8UHh0qdWVbkGVHhfIqGcVsRNmYkOEM8Pab33xOCFqfe7xkF7axH6IgBmcLyGnRnJyKG7mftXrFXoLtYSoeDHCloFnqcDqqMj+vD+yfYACQWaXQ83uk0dJ3DIHt2RNgGpHnOg5jGWHSO7OMxe7o7z9rYROF0odmRVvgNFZ0bE0F7sPVewL7N24VDM7teyXTOkGPmZSBGodShQdEEzrn/LjF2hH1AbV9RS8f62kN6aqUXG/FOYzeS02LAVizWloi1WFKw3SlF0qYy2cDJGRwUj0+dEZTSQpGp2n4xNt7CUweNTSY1qQNrCOlk1bHdq1BST9MH5syVaOz+IdJivIvpa3pHMHY5/7DAaxTc3vKJkDxuhlw12NB+5aoQrvTfkKR+B752jJ2VqAIRRkfM/+LKR79uG9LumYRrH1WitNaMqr1r8fWtbyI3Vc67g74X7x9j5syAx5VeDaOJxdx4MoTmavxP24+wfGYCdp4960g8xt9JEM6uTh7hWNv6J3wo6Lg4xLjbMUV+ev9QTycGaXyTaxAUu62nHVclSt8lD+BGp0q6ayrpVOY3wAy1CrkkEUb/QycZD+14EeWNbCoouoK1xSg/nOvHWHTjTLWAJoyPsvaktg/cQPuXV6VSvH9cfUUtnXufin2QLX02ora2CS+mGcBmvWfPLvcuaBQhmsmslVJ53irDb27KOsNvkgkRqbb/BKwdB1UHhS/kI2xu/gVpO/ELlFxLR34usLu4ioj7UfmuCWk0u3F3VtRVsvh0LEr21kIDN8SOl/hgrCyZTeb39g5JafC1uJfiTUGTk94OtN+wqVh2GYLmtljlu4BWusIgGAY2mT2CnRnSrChVTws6z2N3bSeqX63G6tQ1ztG+gxdhWZTGCLFZesXRv4OO/X7VzzS00n0SOZVvf29HG0hUyVE1/6VJmFHG9rajreM20qnOSFI6tyEuTqese6ySEoxPROxw7NBVmF+wJe34HPzY4HtW7OCKKTyHih3CX13BXj4XnU0lndr8hoQFbaVuYEVHW5fbcrcXW1IAtRbEzowbxp5qMXfZeuQ/1YPGqkPidZPOahRWLMbrXv1DzNhU+SthSTpn34+RIGAvqzMFZlx94GuFWFeQi461Md/OReejT3V8JUz4h2sWyiXY0NvRIWuj1AxvAT6pYwPFWLRfbsNU2mx2Skws3BZLF/ajlOqKWpKizlAuebxCA6Jv/DLr6he+27HfDPxGjlUH+c08zCKVW9UomZy5/OdwDAyHmmvpsEs/zOXH0UEd3W0Rrff3OETtPWndMgWD0IdPz5sFDgbF0xYSN1pMnzUDqKeECrOa6L9neymduDX6OxK9548FR1Y9hwoyRKqcoQhnc+d5k9LSn2NCOGu6/OsXGqQsWwTUlhMbjTBb1njdU3Isixr0c7zzDWCI1VQJ41rX8q08687qvchh269uzojjZzd6GW5GYvnTZ8IMz2mx3NLJH6yo/ukGmiek4OCvs515ae6YLuwZXmTzUc/WpvmOsE9KtYapsTNV0d1+jzo6tfl9x8fFdsuFI3hui2vRWy6pkn/PqbOY7z2mc5FqpiB5fqrwnJaxFAsOrEcBvUDW/G4T+qh/uA4RiUmsbdVYW0porjuI7GRHrNo+oMN03QwVfeUOlXS++pR3lboEHs5nwZvP5YANh71dJ4q35HgFG4qOI3eeAwt5tC+dIacZb39g9I3a/uOrHY+31BO1PE/VFDA5FvwTLZXUk1FALd6/sJk6s0tLmN6rorki7ac97TlTZMVH4f45NBPs7CR758HeZJE9cyt7xViibL5kxeWWq2Kkz/81eHhNDiZ/NRmTpXx8kQ4ODuKu781Qjo6agbnEntm1wuWki5o+W2HPyxHtWBZNxwJxeO+ICPxv9HeRk0WyRskEHWxDZXktjT7SkTl/pqtMknVw6mwZlq4o5tPeNUs4BdrPVqx8OhsaDqxCcSN9l+z4z+G+femYTVyEud2KZJnstq4vXPueCBWdslCaux4mDKmtyDFUJCX8MA3fHdG0SIPUf1mN2Cpxr9AzW1v3OazKKUZ8VhF+Lp3AdNKo7QOBpnMyIPP4bRMyOkWvFo/l5uA2j/7Y2VCJahrrpmdlQv4OgUHLIGZP8wWyH52hWPZ4BAZI36juF+Mh0ze3DA9LEzhBoxIX0U5YOdjko/ztRmQlp0kTgm5UsQ/vJm3Co2wS5+U00N0j9rBr7dch16qzkucTNaX93AR2HpXtmoiuD6bP+wXvE4/e5wj0+NViniEbCnM8D7rhHqNwL5vekiFs/aLHjT9rz5/E2RPNcG71QNa5LGp8yn12PFxxo4jXxsxD9hoPSem6Qx0zhI8sQ6ancvVThmaKjpZ8aZHbfA3XaZ1KaWWq+dB6bKeh/a43X4V8wN5ragVm3SccWb9Ik/zLHVRrCbJao+P1got/AvfpQkTnGp+5oaCIoRvFGB8cs2F6FZ+beu9rxvoVBbAYdtHnyGR1SHuMF65ocL/KPjBrkrq+opZOUVpa13YuXSoS+AtU7o8mNJAhHMCyHHrTlEcf8p2bb53hO02wY5TlG3GpWpX9wkc7HnF5EZogaNcnmJlazC7GMVdfiRaL6LVceJfmiIAxU++uAMRo4f+p02YJv5+Z/1cWSrOThMek+4LsMIlrf8PW1iTspdCuHVJnB7tFaDH/GYPAV+OJc5DEEp5t/V+J/CY9jVlu2g1wLIsu+sFDbjK5P1hhETbNYjHnXqUlIHfqET3ZxBnXgHQfTXVa7VQ8SHs1wBV8KRdWyqD12EvIo8ugOfv2I1XH3lVJ7xyldxn20md5jGu34ao1CguM4n1BdrjCpThpFvmOuEabspS9ji1UdKqRGCWhDX297FuS7q7v0/eF2XD60sdd/cDSipeW5cFMp63f2PJ9wpHaA/3Z6N7oMXrNYH7tNdV9QG1fUUsn5942cEN4jP3+bK8lXTndaPw26ZTskCdgw2TmS2e4J7PiL0L/cg91PFk7mlF5qBINite+/Kd15BH4X7X9gpVsQfPpSlRWNwgTBU9erP8n1ptnuPtzEHWQe0Fh9RREQ0iTpaeXSperzaj+qEMQvPFttlyagme+p/MJREzKM8ISY+f5T90rVDMTm/ZkCelKdhxBt+DrRvmOYsFn2PWvfk7g+SxuxBG61GxkxVIyczl2H2oWlTt9s2t/vrintGnjUy7lJuTuWBYlQ+31okZZ8Zar+IBmmohfhIcCbAdlpYzQG4eFhnhKY8YnZjYPdznTaXZNRnx3aPkWI55cmIElS5YgI2MhjPRZHqRvEa7GxGVsEvFqLMarDWKt9TaU01Iq5UUvFvixdFc0VHQuiQLvs7ZWYJlxGTKefAHHmjuorbBBQjWeZ1PolE3YQNcPBEft55WVbI+VnLkUxoULCUfCk/4WZqxASWM0NhjpW51q+0Cg6UQuhf/NH7cIv4ueeEAWGlqvT50hY8va1ozzrH9RW/7wj72yGOa14Hcv5aG0vBTbf1XnNXDxn9YjqwA/qu0XFhp85u0tRWnxdtSYPEcSFlz44LzAmfmD38NTeifLYamDnNwFzaN68WFUHOhSkE2TQnb5vP7wR7A8mYzKenZq8of+DVZUMp43xKKgugI1rZnIlG066eavQfm2fuTsrcCKJ6vJ0PbTP7qQsI1eWq14ZWFUnA+TSIc1h48AL9LhG/ru2kJm2wUXj9yDe2HwMHY2xxtx0tP8ym16V/w4cc6mpcOcQHSUNz6/yc8+j+iKAlQdrsML85aLRp5OiB7Yy+b2vt06Y4q0HE54vVGGfvaB4e0rUBtLtdZJtRZvQBl9ZFgyBZRRqOh8yzDmmFumSlmYUZL3HGh4IDjjtoNYn5HoPD/U+rv/QC1ryL5cUjYWSNeQ1PaBQNMJrJHBfot9JZpOBi+V7fv7Ynt04QPOnTHV6f3oDGbkjr20kgYTLoCrthtRFUubN87rK1pMm0NLH6xd3j7FWS/q0qrmcpSE6vqFduo0cT+fSrn9FpdqZ/c8/5FeyuGUnt4MZHyyAun0cYCXM2TnBShduOqgUQKnOtm32FveVFOPgrD3XDGMwltiopGScica6QsN246cQYbnG0k88yZFuzljAy6yy+NHFa4i9HXjyp/76SrEJNxCx6pjlDavPPMMwjO7pvAVrfdNorPfd8fFeMwEpQJtFvRZbPT1HXpLv8eSqZOlvgasXEaHJ9LzceZlx36qM3bsHjbjWJWHbz+/j76M4d741WTeWrkZG2hvN4tO7q2RbwSqSeyksaG77Qp1SKo1wiuO8HJ1VycReUJFJ+chgH5rH7p7buAmu7Lir52MsEibyj4QSLrmAyuRV2VB/ptvK94PHqEIXuSm6leQd+LbKDqQK10Z8SLxHTCMzvCd0BFjRW+3BVExOuV+7CAL2e/w/cJq6YXFFkVfrfGlaPwwH2wd5KfoUEcF3RCCGudLZNDEBTQSl0aSx193Ha/3B4CltRJLNpQiKWcf9mcn+yOd4HG9OLTSiPLOdBw58zKGGyOERlgaVW9eQrP7JOw7tR9BmwyERjheqgoE+ppfw7I8NpM4QjMJtwtRKlKPD0nk6IxA4zkRdFCgZXblF9Q9QqEYbSKW0TKnw6Vn/kD1BntUYiaqinJwsXwLXnDsxTky+sb8duM1wQjqcfBUuBpBBnYUlu9/EzlJF7FlyWY097qOvXxjqoIL4hOB3oYDghHUbzoYtkaQMR8ZOsNnNY0yYqLooFGKpyJZ8GeExARbo2YvjqY7Ezh4er/yB3j9MGvrvoCaS5OwOM21p+KHfGJF2TpwuqYNjxlSVQ8QQiugFRfqzgLJC5Hs9lHZ0HLFSw8uAt3Np2GKfowOe4XNKS6/An+jdYZfyUcROeF00ChkHCbJuBhC0BmlA0/S5nT6Lpx9WXy7xjB88WiOAEeAI8AR4AiMCwLjZAjp+IOF7lLRa6Z8HhYZF3F5IRwBjgBHgCPAEXBHYNwMoXux/IkjwBHgCHAEOALhgUDwD8uEh5ycC44AR4AjwBHgCCgiwA2hIiw8kCPAEeAIcAQiBQFuCCOlprmcHAGOAEeAI6CIADeEirDwQI4AR4AjwBGIFAS4IYyUmuZycgQ4AhwBjoAiAtwQKsLCAzkCHAGOAEcgUhD4f9EKwSrZaJ/pAAAAAElFTkSuQmCC" alt="" name="en-media:image/png:2bdbd1d41ecee133d740c53250e97a8b:none:none" />
 
上面方程中数字差值最大的属性对计算结果的影响最大,仅仅是因为飞行常客里程数远大于其他特征值。然而我们认为这三种特征同样重要,因此作为三个等权重的特征 
 
直接上代码:
from numpy import *
import matplotlib.pyplot as plot
import operator
from os import listdir def classify0(inX, dataSet, labels, k):
dataSetSize = dataSet.shape[0]
# 距离计算公式
diffMat = tile(inX, (dataSetSize,1)) - dataSet
sqDiffMat = diffMat**2
sqDistances = sqDiffMat.sum(axis=1)
distances = sqDistances**0.5 # 距离从大到小排序,返回距离的序号
sortedDistIndicies = distances.argsort()
# 声明一个空的字典,用于存放标签
classCount={}
for i in range(k):
# sortedDistIndicies[0]返回的是距离最小的数据样本的序号
# labels[sortedDistIndicies[0]]距离最小的数据样本的标签
voteIlabel = labels[sortedDistIndicies[i]]
classCount[voteIlabel] = classCount.get(voteIlabel,0) + 1
# 给该字典排序,sortedClassCount[0][0]是K中支持的标签数最大的
sortedClassCount = sorted(classCount.items(), key=operator.itemgetter(1), reverse=True)
print(sortedClassCount[0][0])
return sortedClassCount[0][0] # 创建数据
def createDataSet():
group = array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]])
labels = ['A','A','B','B']
return group, labels # 画图
def draw(xs,ys):
fig = plot.figure()
# 将画布分割成1行1列,图像画在从左到右从上到下的第1块
# 设置画布的大小与图像的位置
ax = fig.add_subplot(221)
# ax.scatter(xs, ys)的两个参数分别是所有点的x坐标,所有点的y坐标
ax.scatter(xs,ys)
plot.show() def firstTest():
test1 = (1.0, 1.2)
test2 = (0.0, 0.4)
dataset, labels = createDataSet()
conclusion1 = classify0(test1, dataset, labels, 3)
conclusion2 = classify0(test2, dataset, labels, 3)
print(str(test1) + "分类后的结果是属于" + conclusion1 + "类")
print(str(test2) + "分类后的结果是属于" + conclusion2 + "类")
# 将32*32的矩阵读为1*1024
def img2vector(filename):
returnVect = zeros((1,1024))
fr = open(filename)
for i in range(32):
lineStr = fr.readline()
for j in range(32):
returnVect[0,32*i+j] = int(lineStr[j])
return returnVect def handwritingClassTest():
hwLabels = []
# 获得训练样本数据集
trainingFileList = listdir('digits/trainingDigits')
# 样本数的个数
m = len(trainingFileList)
# 返回m行1024列的矩阵数据
trainingMat = zeros((m, 1024))
# 文件名下划线_左边的数字是标签
for i in range(m):
fileNameStr = trainingFileList[i]
fileStr = fileNameStr.split(".")[0]
# 分类标签
classNumStr = int(fileStr.split('_')[0])
hwLabels.append(classNumStr)
trainingMat[i, :] = img2vector('digits/trainingDigits/%s' % fileNameStr)
testFileList = listdir('digits/testDigits')
errorCount = 0.0
mTest = len(testFileList)
for i in range(mTest):
fileNameStr = testFileList[i]
fileStr = fileNameStr.split('.')[0] # take off .txt
classNumStr = int(fileStr.split('_')[0])
vectorUnderTest = img2vector('digits/testDigits/%s' % fileNameStr)
classifierResult = classify0(vectorUnderTest, trainingMat, hwLabels, 3)
print("the classifier came back with: %d, the real answer is: %d" % (classifierResult, classNumStr))
if (classifierResult != classNumStr): errorCount += 1.0
print("\nthe total number of errors is: %d" % errorCount)
print("\nthe total error rate is: %f" % (errorCount / float(mTest))) # 主函数调用模块函数
if __name__ == "__main__":
# group,label = createDataSet()
# # group[:, 0] 所有行的第0列
# draw(group[:, 0], group[:, 1])
# # print(group[:, 0])
# firstTest()
handwritingClassTest() 训练数据集合测试集的数据:https://gitee.com/lcl1993213/plist

KNN--用于手写数字识别的更多相关文章

  1. KNN实现手写数字识别

    KNN实现手写数字识别 博客上显示这个没有Jupyter的好看,想看Jupyter Notebook的请戳KNN实现手写数字识别.ipynb 1 - 导入模块 import numpy as np i ...

  2. Softmax用于手写数字识别(Tensorflow实现)-个人理解

    softmax函数的作用   对于分类方面,softmax函数的作用是从样本值计算得到该样本属于各个类别的概率大小.例如手写数字识别,softmax模型从给定的手写体图片像素值得出这张图片为数字0~9 ...

  3. 机器学习(二)-kNN手写数字识别

    一.kNN算法是机器学习的入门算法,其中不涉及训练,主要思想是计算待测点和参照点的距离,选取距离较近的参照点的类别作为待测点的的类别. 1,距离可以是欧式距离,夹角余弦距离等等. 2,k值不能选择太大 ...

  4. 一看就懂的K近邻算法(KNN),K-D树,并实现手写数字识别!

    1. 什么是KNN 1.1 KNN的通俗解释 何谓K近邻算法,即K-Nearest Neighbor algorithm,简称KNN算法,单从名字来猜想,可以简单粗暴的认为是:K个最近的邻居,当K=1 ...

  5. kaggle 实战 (1): PCA + KNN 手写数字识别

    文章目录 加载package read data PCA 降维探索 选择50维度, 拆分数据为训练集,测试机 KNN PCA降维和K值筛选 分析k & 维度 vs 精度 预测 生成提交文件 本 ...

  6. Kaggle竞赛丨入门手写数字识别之KNN、CNN、降维

    引言 这段时间来,看了西瓜书.蓝皮书,各种机器学习算法都有所了解,但在实践方面却缺乏相应的锻炼.于是我决定通过Kaggle这个平台来提升一下自己的应用能力,培养自己的数据分析能力. 我个人的计划是先从 ...

  7. 基于OpenCV的KNN算法实现手写数字识别

    基于OpenCV的KNN算法实现手写数字识别 一.数据预处理 # 导入所需模块 import cv2 import numpy as np import matplotlib.pyplot as pl ...

  8. K近邻实战手写数字识别

    1.导包 import numpy as np import operator from os import listdir from sklearn.neighbors import KNeighb ...

  9. C#中调用Matlab人工神经网络算法实现手写数字识别

    手写数字识别实现 设计技术参数:通过由数字构成的图像,自动实现几个不同数字的识别,设计识别方法,有较高的识别率 关键字:二值化  投影  矩阵  目标定位  Matlab 手写数字图像识别简介: 手写 ...

  10. 利用神经网络算法的C#手写数字识别

    欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 下载Demo - 2.77 MB (原始地址):handwritten_character_recognition.zip 下载源码 - 70. ...

随机推荐

  1. swift 之 namespace

    场景:  项目中类名过长,造成不能根据文件名区分出来,并且如果一个模块的类较多时,很难取一个比较优雅的名字.为了使模块名可读, 我们一般的做法就是添加模块前缀.但是如果模块中还有个子模块,如果还继续按 ...

  2. H5新特性汇总

    H5新特性: 新增选择器 document.querySelector.document.querySelectorAll 拖拽释放(Drag and drop) API 媒体播放的 video 和 ...

  3. ES6 let和const详解及使用细节

    ES6之前javascript只有全局作用域和函数作用域,所以经常会遇到变量提升了或者使用闭包的时候出错的问题. 所有a[i]都会输出10: var arr=[]; for (var i=0;i< ...

  4. Ubuntu配置OpenStack 二:配置时间同步NTP和安装数据库Maridb以及问题总结

    继上一节Ubuntu配置OpenStack 一:配置主机环境,下面继续为安装时间同步,以及配置openstack的安装包源和安装数据库Maridb.(全文截图都是由自己徒手搭建完成并且截图) 一.安装 ...

  5. Assignments

    Assignments Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tota ...

  6. Android 开发笔记___SQLite__基本用法

    SQLiteOpenHelper package com.example.alimjan.hello_world.dataBase; import android.content.ContentVal ...

  7. HTML5 设备上的API

    一.Vibration API ,接受两种类型参数 vibrate (unsigned long time)   当参数是unsigned long的时候 此时参数表示震动时间.  NotSuppor ...

  8. DOM 对象

    DOM  ==  document object model   document 对象是唯一同时属于  BOM 和 DOM  的   rows 是一种DOM集合,不是数组,所以没有sort() 函数 ...

  9. JavaSE高级1

    内部类 内部类概念: 所谓内部类(Inner Class),顾名思义,就是将一个类定义在另一个类的内部.内部的类称之为内部类. 内部类的主要特点: 内部类可以很好的实现隐藏,可以使用protected ...

  10. 【Kafka源码】处理请求

    [TOC] 在KafkaServer中的入口在: apis = new KafkaApis(socketServer.requestChannel, replicaManager, groupCoor ...