相对简单的模拟。C++11

/* ***********************************************
Author :guanjun
Created Time :2016/6/20 18:22:32
File Name :1.cpp
************************************************ */
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <stdio.h>
#include <algorithm>
#include <map>
#include <string>
#include <math.h>
#include <stdlib.h>
#include <fstream>
#define maxn 10010
using namespace std; int k;
struct node{
double x1,x2,x3,x4,x5;
string s;
}nod[maxn];
pair<double,string>p[maxn];
map<string,int>mp; ifstream fin;
int input(string s){
fin.open(s);
if(!fin){
cout<<"can not open the file "<<s<<endl;
exit();
}
int i=;
while(fin>>nod[i].x1>>nod[i].x2>>nod[i].x3>>nod[i].x4>>nod[i].x5>>nod[i].s){
nod[i].x1*=100.0;nod[i].x2*=100.0;nod[i].x3*=100.0;nod[i].x4*=100.0;nod[i].x5*=100.0;
i++;
}
return i;
}
double mul(double x,double y){
return (x-y)*(x-y);
}
double dis(node a,node b){
double tmp=mul(a.x1,b.x1)+mul(a.x2,b.x2)+mul(a.x3,b.x3)+mul(a.x4,b.x4)+mul(a.x5,b.x5);
return sqrt(tmp);
}
string knn(int n,node x){
for(int i=;i<=n;i++){
p[i]={dis(x,nod[i]),nod[i].s};
}
//for(int i=1;i<=n;i++)cout<<p[i].first<<endl;
sort(p+,p++n);
//for(int i=1;i<=n;i++)cout<<p[i].first<<endl;
mp.clear();
for(int i=;i<=k;i++)mp[p[i].second]++;
int Max=;
string ans;
for(auto x:mp){
if(x.second>Max){
Max=x.second;
ans=x.first;
}
}
return ans;
}
int main()
{
int n,m;
puts("input k");
cin>>k;
n=input("in.txt");
puts("input the test case");
cin>>m;
node tes;
for(int i=;i<=m;i++){
cin>>tes.x1>>tes.x2>>tes.x3>>tes.x4>>tes.x5;
tes.x1*=100.0;tes.x2*=100.0;tes.x3*=100.0;tes.x4*=100.0;tes.x5*=100.0;
cout<<"belong to "<<knn(n,tes)<<endl;
}
return ;
}

训练数据:

0 0 0 0 0 very_low
0.08 0.08 0.1 0.24 0.9 High
0.06 0.06 0.05 0.25 0.33 Low
0.1 0.1 0.15 0.65 0.3 Middle
0.08 0.08 0.08 0.98 0.24 Low
0.09 0.15 0.4 0.1 0.66 Middle
0.1 0.1 0.43 0.29 0.56 Middle
0.15 0.02 0.34 0.4 0.01 very_low
0.2 0.14 0.35 0.72 0.25 Low
0 0 0.5 0.2 0.85 High
0.18 0.18 0.55 0.3 0.81 High
0.06 0.06 0.51 0.41 0.3 Low
0.1 0.1 0.52 0.78 0.34 Middle
0.1 0.1 0.7 0.15 0.9 High
0.2 0.2 0.7 0.3 0.6 Middle
0.12 0.12 0.75 0.35 0.8 High
0.05 0.07 0.7 0.01 0.05 very_low
0.1 0.25 0.1 0.08 0.33 Low
0.15 0.32 0.05 0.27 0.29 Low
0.2 0.29 0.25 0.49 0.56 Middle
0.12 0.28 0.2 0.78 0.2 Low
0.18 0.3 0.37 0.12 0.66 Middle
0.1 0.27 0.31 0.29 0.65 Middle
0.18 0.31 0.32 0.42 0.28 Low
0.06 0.29 0.35 0.76 0.25 Low
0.09 0.3 0.68 0.18 0.85 High
0.04 0.28 0.55 0.25 0.1 very_low
0.09 0.255 0.6 0.45 0.25 Low
0.08 0.325 0.62 0.94 0.56 High
0.15 0.275 0.8 0.21 0.81 High
0.12 0.245 0.75 0.31 0.59 Middle
0.15 0.295 0.75 0.65 0.24 Low
0.1 0.256 0.7 0.76 0.16 Low
0.18 0.32 0.04 0.19 0.82 High
0.2 0.45 0.28 0.31 0.78 High
0.06 0.35 0.12 0.43 0.29 Low
0.1 0.42 0.22 0.72 0.26 Low
0.18 0.4 0.32 0.08 0.33 Low
0.09 0.33 0.31 0.26 0 very_low
0.19 0.38 0.38 0.49 0.45 Middle
0.02 0.33 0.36 0.76 0.1 Low
0.2 0.49 0.6 0.2 0.78 High
0.14 0.49 0.55 0.29 0.6 Middle
0.18 0.33 0.61 0.64 0.25 Middle
0.115 0.35 0.65 0.27 0.04 very_low
0.17 0.36 0.8 0.14 0.66 Middle
0.1 0.39 0.75 0.31 0.62 Middle
0.13 0.39 0.85 0.38 0.77 High
0.18 0.34 0.71 0.71 0.9 High
0.09 0.51 0.02 0.18 0.67 Middle
0.06 0.5 0.09 0.28 0.25 Low
0.23 0.7 0.19 0.51 0.45 Middle
0.09 0.55 0.12 0.78 0.05 Low
0.24 0.75 0.32 0.18 0.86 High
0.18 0.72 0.37 0.29 0.55 Middle
0.1 0.6 0.33 0.42 0.26 Low
0.2 0.52 0.36 0.84 0.25 Middle
0.09 0.6 0.66 0.19 0.59 Middle
0.18 0.51 0.58 0.33 0.82 High
0.08 0.58 0.6 0.64 0.1 Low
0.09 0.61 0.53 0.75 0.01 Low
0.06 0.77 0.72 0.19 0.56 Middle
0.15 0.79 0.78 0.3 0.51 Middle
0.2 0.68 0.73 0.48 0.28 Low
0.24 0.58 0.76 0.8 0.28 Middle
0.25 0.1 0.03 0.09 0.15 very_low
0.32 0.2 0.06 0.26 0.24 very_low
0.29 0.06 0.19 0.55 0.51 Middle
0.28 0.1 0.12 0.28 0.32 Low
0.3 0.08 0.4 0.02 0.67 Middle
0.27 0.12 0.37 0.29 0.58 Middle
0.31 0.1 0.41 0.42 0.75 High
0.29 0.15 0.33 0.66 0.08 very_low
0.3 0.2 0.52 0.3 0.53 Middle
0.28 0.16 0.69 0.33 0.78 High
0.255 0.18 0.5 0.4 0.1 very_low
0.265 0.06 0.57 0.75 0.1 Low
0.275 0.1 0.72 0.1 0.3 Low
0.245 0.1 0.71 0.26 0.2 very_low
0.295 0.2 0.86 0.44 0.28 Low
0.32 0.12 0.79 0.76 0.24 Low
0.295 0.25 0.26 0.12 0.67 Middle
0.315 0.32 0.29 0.29 0.62 Middle
0.25 0.29 0.15 0.48 0.26 Low
0.27 0.1 0.1 0.7 0.25 Low
0.248 0.3 0.31 0.2 0.03 very_low
0.325 0.25 0.38 0.31 0.79 High
0.27 0.31 0.32 0.41 0.28 Low
0.29 0.29 0.4 0.78 0.18 Low
0.29 0.3 0.52 0.09 0.67 Middle
0.258 0.28 0.64 0.29 0.56 Middle
0.32 0.255 0.55 0.78 0.34 Middle
0.251 0.265 0.57 0.6 0.09 very_low
0.288 0.31 0.79 0.23 0.24 Low
0.323 0.32 0.89 0.32 0.8 High
0.255 0.305 0.86 0.62 0.15 Low
0.295 0.25 0.73 0.77 0.19 Low
0.258 0.25 0.295 0.33 0.77 High
0.29 0.25 0.29 0.29 0.57 Middle
0.243 0.27 0.08 0.42 0.29 Low
0.27 0.28 0.18 0.48 0.26 Low
0.299 0.32 0.31 0.33 0.87 High
0.3 0.27 0.31 0.31 0.54 Middle
0.245 0.26 0.38 0.49 0.27 Low
0.295 0.29 0.31 0.76 0.1 Low
0.29 0.3 0.56 0.25 0.67 Middle
0.26 0.28 0.6 0.29 0.59 Middle
0.305 0.255 0.63 0.4 0.54 Middle
0.32 0.27 0.52 0.81 0.3 Middle
0.299 0.295 0.8 0.37 0.84 High
0.276 0.255 0.81 0.27 0.33 Low
0.258 0.31 0.88 0.4 0.3 Low
0.32 0.28 0.72 0.89 0.58 High
0.329 0.55 0.02 0.4 0.79 High
0.295 0.59 0.29 0.31 0.55 Middle
0.285 0.64 0.18 0.61 0.45 Middle
0.265 0.6 0.28 0.66 0.07 very_low
0.315 0.69 0.28 0.8 0.7 High
0.28 0.78 0.44 0.17 0.66 Middle
0.325 0.61 0.46 0.32 0.81 High
0.28 0.65 0.4 0.65 0.13 Low
0.255 0.75 0.35 0.72 0.25 Low
0.305 0.55 0.5 0.11 0.333 Low
0.3 0.85 0.54 0.25 0.83 Middle
0.325 0.9 0.52 0.49 0.76 High
0.312 0.8 0.67 0.92 0.5 High
0.299 0.7 0.95 0.22 0.66 High
0.265 0.76 0.8 0.28 0.28 Low
0.255 0.72 0.72 0.63 0.14 Low
0.295 0.6 0.72 0.88 0.28 Middle
0.39 0.05 0.02 0.06 0.34 Low
0.4 0.18 0.26 0.26 0.67 Middle
0.45 0.04 0.18 0.55 0.07 very_low
0.48 0.12 0.28 0.7 0.71 High
0.4 0.12 0.41 0.1 0.65 Middle
0.41 0.18 0.33 0.31 0.5 Middle
0.38 0.1 0.4 0.48 0.26 Low
0.37 0.06 0.32 0.78 0.1 Low
0.41 0.09 0.58 0.18 0.58 Middle
0.38 0.01 0.53 0.27 0.3 Low
0.33 0.04 0.5 0.55 0.1 very_low
0.42 0.15 0.66 0.78 0.4 Middle
0.44 0.08 0.8 0.22 0.56 Middle
0.39 0.15 0.81 0.22 0.29 Low
0.42 0.21 0.87 0.56 0.48 Middle
0.46 0.2 0.76 0.95 0.65 High
0.365 0.243 0.19 0.24 0.35 Low
0.33 0.27 0.2 0.33 0.1 very_low
0.345 0.299 0.1 0.64 0.13 Low
0.48 0.3 0.15 0.65 0.77 High
0.49 0.245 0.38 0.14 0.86 High
0.334 0.295 0.33 0.32 0.3 Low
0.36 0.29 0.37 0.48 0.13 very_low
0.39 0.26 0.39 0.77 0.14 Low
0.43 0.305 0.51 0.09 0.64 Middle
0.44 0.32 0.55 0.33 0.52 Middle
0.45 0.299 0.63 0.36 0.51 Middle
0.495 0.276 0.58 0.77 0.83 High
0.465 0.258 0.73 0.18 0.59 Middle
0.475 0.32 0.79 0.31 0.54 Middle
0.348 0.329 0.83 0.61 0.18 Low
0.385 0.26 0.76 0.84 0.3 Middle
0.445 0.39 0.02 0.24 0.88 High
0.43 0.45 0.27 0.27 0.89 High
0.33 0.34 0.1 0.49 0.12 very_low
0.4 0.33 0.12 0.3 0.9 High
0.34 0.4 0.38 0.2 0.61 Middle
0.38 0.36 0.46 0.49 0.78 High
0.35 0.38 0.32 0.6 0.16 Low
0.41 0.49 0.34 0.21 0.92 High
0.42 0.36 0.63 0.04 0.25 Low
0.43 0.38 0.62 0.33 0.49 Middle
0.44 0.33 0.59 0.53 0.85 High
0.4 0.42 0.58 0.75 0.16 Low
0.46 0.44 0.89 0.12 0.66 Middle
0.38 0.39 0.79 0.33 0.3 Low
0.39 0.42 0.83 0.65 0.19 Low
0.49 0.34 0.88 0.75 0.71 High
0.46 0.64 0.22 0.22 0.6 Middle
0.44 0.55 0.11 0.26 0.83 High
0.365 0.68 0.1 0.63 0.18 Low
0.45 0.65 0.19 0.99 0.55 High
0.46 0.78 0.38 0.24 0.89 High
0.37 0.55 0.41 0.29 0.3 Low
0.38 0.59 0.31 0.62 0.2 Low
0.49 0.64 0.34 0.78 0.21 Low
0.495 0.82 0.67 0.01 0.93 High
0.44 0.69 0.61 0.29 0.57 Middle
0.365 0.57 0.59 0.55 0.25 Low
0.49 0.9 0.52 0.9 0.47 High
0.445 0.7 0.82 0.16 0.64 Middle
0.42 0.7 0.72 0.3 0.8 High
0.37 0.6 0.77 0.4 0.5 Middle
0.4 0.61 0.71 0.88 0.67 High
0.6 0.14 0.22 0.11 0.66 Middle
0.55 0.1 0.27 0.25 0.29 Low
0.68 0.19 0.19 0.48 0.1 very_low
0.73 0.2 0.07 0.72 0.26 Low
0.78 0.15 0.38 0.18 0.63 Middle
0.55 0.1 0.34 0.3 0.1 very_low
0.59 0.18 0.31 0.55 0.09 very_low

测试数据

0.64 0.09 0.33 0.65 0.5 Middle
0.6 0.19 0.55 0.08 0.1 very_low
0.69 0.02 0.62 0.3 0.29 Low
0.78 0.21 0.68 0.65 0.75 High
0.62 0.14 0.52 0.81 0.15 Low
0.7 0.18 0.88 0.09 0.66 Middle
0.75 0.015 0.78 0.31 0.53 Middle
0.55 0.17 0.71 0.48 0.11 very_low
0.85 0.05 0.91 0.8 0.68 High
0.78 0.27 0.13 0.14 0.62 Middle
0.8 0.29 0.06 0.31 0.51 Middle
0.9 0.26 0.19 0.58 0.79 High
0.76 0.258 0.07 0.83 0.34 Middle
0.72 0.32 0.48 0.2 0.6 Middle
0.6 0.251 0.39 0.29 0.3 Low
0.52 0.288 0.32 0.5 0.3 Low
0.6 0.31 0.31 0.87 0.58 High
0.51 0.255 0.55 0.17 0.64 Middle
0.58 0.295 0.62 0.28 0.3 Low
0.61 0.258 0.56 0.62 0.24 Low
0.77 0.267 0.59 0.78 0.28 Middle
0.79 0.28 0.88 0.2 0.66 Middle
0.68 0.27 0.78 0.31 0.57 Middle
0.58 0.299 0.73 0.63 0.21 Low
0.77 0.29 0.74 0.82 0.68 High
0.71 0.475 0.13 0.23 0.59 Middle
0.58 0.348 0.06 0.29 0.31 Low
0.88 0.335 0.19 0.55 0.78 High
0.99 0.49 0.07 0.7 0.69 High
0.73 0.43 0.32 0.12 0.65 Middle
0.61 0.33 0.36 0.28 0.28 Low
0.51 0.4 0.4 0.59 0.23 Low
0.83 0.44 0.49 0.91 0.66 High
0.66 0.38 0.55 0.15 0.62 Middle
0.58 0.35 0.51 0.27 0.3 Low
0.523 0.41 0.55 0.6 0.22 Low
0.66 0.36 0.56 0.4 0.83 High
0.62 0.37 0.81 0.13 0.64 Middle
0.52 0.44 0.82 0.3 0.52 Middle
0.5 0.4 0.73 0.62 0.2 Low
0.71 0.46 0.95 0.78 0.86 High
0.64 0.55 0.15 0.18 0.63 Middle
0.52 0.85 0.06 0.27 0.25 Low
0.62 0.62 0.24 0.65 0.25 Middle
0.91 0.58 0.26 0.89 0.88 High
0.62 0.67 0.39 0.1 0.66 Middle
0.58 0.58 0.31 0.29 0.29 Low
0.89 0.68 0.49 0.65 0.9 High
0.72 0.6 0.45 0.79 0.45 Middle
0.68 0.63 0.65 0.09 0.66 Middle
0.56 0.6 0.6 0.31 0.5 Middle
0.54 0.51 0.55 0.64 0.19 Low
0.61 0.78 0.69 0.92 0.58 High
0.78 0.61 0.71 0.19 0.6 Middle
0.54 0.82 0.71 0.29 0.77 High
0.5 0.75 0.81 0.61 0.26 Middle
0.66 0.9 0.76 0.87 0.74 High

Knn算法C++实现的更多相关文章

  1. 【Machine Learning】KNN算法虹膜图片识别

    K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...

  2. KNN算法

    1.算法讲解 KNN算法是一个最基本.最简单的有监督算法,基本思路就是给定一个样本,先通过距离计算,得到这个样本最近的topK个样本,然后根据这topK个样本的标签,投票决定给定样本的标签: 训练过程 ...

  3. kNN算法python实现和简单数字识别

    kNN算法 算法优缺点: 优点:精度高.对异常值不敏感.无输入数据假定 缺点:时间复杂度和空间复杂度都很高 适用数据范围:数值型和标称型 算法的思路: KNN算法(全称K最近邻算法),算法的思想很简单 ...

  4. 什么是 kNN 算法?

    学习 machine learning 的最低要求是什么?  我发觉要求可以很低,甚至初中程度已经可以.  首先要学习一点 Python 编程,譬如这两本小孩子用的书:[1][2]便可.   数学方面 ...

  5. 数据挖掘之KNN算法(C#实现)

    在十大经典数据挖掘算法中,KNN算法算得上是最为简单的一种.该算法是一种惰性学习法(lazy learner),与决策树.朴素贝叶斯这些急切学习法(eager learner)有所区别.惰性学习法仅仅 ...

  6. 机器学习笔记--KNN算法2-实战部分

    本文申明:本系列的所有实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. 一案例导入:玛利亚小姐最近寂寞了, ...

  7. 机器学习笔记--KNN算法1

    前言 Hello ,everyone. 我是小花.大四毕业,留在学校有点事情,就在这里和大家吹吹我们的狐朋狗友算法---KNN算法,为什么叫狐朋狗友算法呢,在这里我先卖个关子,且听我慢慢道来. 一 K ...

  8. 学习OpenCV——KNN算法

    转自:http://blog.csdn.net/lyflower/article/details/1728642 文本分类中KNN算法,该方法的思路非常简单直观:如果一个样本在特征空间中的k个最相似( ...

  9. KNN算法与Kd树

    最近邻法和k-近邻法 下面图片中只有三种豆,有三个豆是未知的种类,如何判定他们的种类? 提供一种思路,即:未知的豆离哪种豆最近就认为未知豆和该豆是同一种类.由此,我们引出最近邻算法的定义:为了判定未知 ...

  10. Python 手写数字识别-knn算法应用

    在上一篇博文中,我们对KNN算法思想及流程有了初步的了解,KNN是采用测量不同特征值之间的距离方法进行分类,也就是说对于每个样本数据,需要和训练集中的所有数据进行欧氏距离计算.这里简述KNN算法的特点 ...

随机推荐

  1. functools内置装饰器

    def update_wrapper(wrapper, wrapped, assigned = WRAPPER_ASSIGNMENTS, updated = WRAPPER_UPDATES): def ...

  2. Light OJ-1082 - Array Queries,线段树区间查询最大值,哈哈,水过~~

                                                                                                        ...

  3. FZU-2147-2147 A-B Game,规律题。。

    Problem 2147 A-B Game Time Limit: 1000 mSec Memory Limit : 32768 KB  Problem Description Fat brother ...

  4. [luoguP1866]滑动窗口(单调队列)

    传送门 可以搞2个单调队列. 然后,然后就没有然后了. # include <iostream> # include <cstdio> # include <cstrin ...

  5. BZOJ:[JSOI2009]游戏Game【二分图匹配乱搞】

    题目大意:n*m的棋盘,其中有些区域是禁区,两个人在棋盘上进行博弈,后手选择棋子的初始位置,然后先后手轮流将棋子往上下左右移动,走过的区域不能再走,问能否有一个位置使得后手必胜 Input 输入数据首 ...

  6. Android操作系统架构

    Android操作系统架构   Android操作系统整体应用架构 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高 ...

  7. 通过分析system_call中断处理过程来深入理解系统调用

    通过分析system_call中断处理过程来深入理解系统调用 前言说明 本篇为网易云课堂Linux内核分析课程的第五周作业,上一次作业中我以2个系统调用(getpid, open)作为分析实例来分析系 ...

  8. PHP错误处理函数set_error_handler()的用法[转载]

    定义和用法 set_error_handler() 函数设置用户自定义的错误处理函数. 该函数用于创建运行时期间的用户自己的错误处理方法. 该函数会返回旧的错误处理程序,若失败,则返回 null. 语 ...

  9. 洛谷—— P1536 村村通

    P1536 村村通 题目描述 某市调查城镇交通状况,得到现有城镇道路统计表.表中列出了每条道路直接连通的城镇.市政府“村村通工程”的目标是使全市任何两个城镇间都可以实现交通(但不一定有直接的道路相连, ...

  10. [Poj1185][Noi2001]炮兵阵地(状压dp)

    炮兵阵地 Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 29476   Accepted: 11411 Descriptio ...