相对简单的模拟。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. SHELL十三问[转载自CU论坛]

    原文地址:http://bbs.chinaunix.net/thread-218853-1-1.html 一.为什么称作shell? http://bbs.chinaunix.net/viewthr ...

  2. 三、Oracle常用内置函数

    1. ASCII  返回与指定的字符对应的十进制数;  SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from d ...

  3. Leetcode 239.滑动窗口最大值

    滑动窗口最大值 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口 k 内的数字.滑动窗口每次只向右移动一位. 返回滑动窗口最大值. 示例: ...

  4. C#排序1(冒泡排序、直接排序、快速排序)

    冒泡排序:就是两个两个的这个比较好理解,代码也比较好写出来. 它的原理就是相邻的两个两个的比较,如果前面的数比后面的大,那么交换,它这个在比较完一次的时候可以得到最大的一个数,然后接着循环,每次外循环 ...

  5. 【多校训练2】HDU 6047 Maximum Sequence

    http://acm.hdu.edu.cn/showproblem.php?pid=6047 [题意] 给定两个长度为n的序列a和b,现在要通过一定的规则找到可行的a_n+1.....a_2n,求su ...

  6. 【数学】codeforces B. The Golden Age

    http://codeforces.com/contest/813/problem/B [题意] 满足n=x^a+y^b的数字为不幸运数字,a,b都是非负整数: 求闭区间[l,r]上的最长的连续幸运数 ...

  7. 怎样检查Android网络连接状态

    在发送任何HTTP请求前最好检查下网络连接状态,这样可以避免异常.这个教程将会介绍怎样在你的应用中检测网络连接状态. 创建新的项目 1.在Eclipse IDE中创建一个新的项目并把填入必须的信息.  ...

  8. 从零开始写STL-string类型

    class string { public: typedef size_t size_type; typedef char* iterator; typedef char value_type; pr ...

  9. 如何使用google解决问题

    如何使用google解决问题 redguardtoo著 文章选自2004年<程序员>杂志第8期P56 前面收集了篇如何问问题的文章就是<学会提问>http://blog.pro ...

  10. hdu6109(并查集+set/倍增)

    题目 http://acm.hdu.edu.cn/showproblem.php?pid=6109 分析 对于相同的条件,明显直接并查集 对于不同的条件,可以用set来保存,并查集合并的时候也要对se ...