相对简单的模拟。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. Oracle中exit,return,continue

    记录exit和return的用法 exit用来跳出循环 loop IF V_KBP IS NULL THEN           EXIT;    END IF; end loop; return跳出 ...

  2. winfor应用程序打印报表清单

    最近一周竟然有2位以前的同事问我在winfor应用程序里面打印怎么搞,所以才有了写这篇文章的打算,索性现在没事就写出来 在窗体上简单的布局设置一下如图 定义一个Model 我在里面放了属性之外还从写了 ...

  3. JSP指令学习

    JSP 指令 JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言.语法格式: <%@ page attribute="value"%> 指令可以有很 ...

  4. [luoguP1273] 有线电视网(DP)

    传送门 f[i][j]表示节点i选j个用户的最大收益 #include <cstdio> #include <cstring> #include <iostream> ...

  5. 【BZOJ4736】温暖会指引我们前行(LCT)

    题意:有一张图,每条边有一个不同的编号,长度和权值,维护以下操作: 1.加边 2.修改边长 3.询问两点之间在最小权值最大的前提下的唯一路径长度 n<=100000 m<=300000 思 ...

  6. web移动端小tip,box-flex

    1,移动端页面 最重要的标签: <meta content="width=device-width,initial-scale=1.0,minimum-scale=1,maximum- ...

  7. 利用PHP SOAP实现WEB SERVICE[转载]

    php有两个扩展可以实现web service,一个是NuSoap,一个是php 官方的soap扩展,由于soap是官方的,所以我们这里以soap来实现web service.由于默认是没有打开soa ...

  8. nagios+logstash实时监控java日志(一)

    https://blog.csdn.net/yanggd1987/article/details/64121459

  9. Delphi控件大全

    首先来大体上为控件分一下类,以方便我们后面的讨论.   但因为控件的种类太多,所以就粗略的分为如下几个类别∶   ---界面风格类   ---Shell外观类   ---Editor类   ---Gr ...

  10. BZOJ 1798:

    6:       LAZY 线段树有乘法的更新    #include <cstdio> #include <cstring> #include <algorithm&g ...