相对简单的模拟。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. LeetCode 304. Range Sum Query 2D – Immutable

    Given a 2D matrix matrix, find the sum of the elements inside the rectangle defined by its upper lef ...

  2. 大数据学习——yarn集群启动

    启动yarn命令: start-yarn.sh 验证是否启动成功 jps查看进程 http://192.168.74.100:8088页面 关闭 stop-yarn.sh

  3. CodeForces 606C--Sorting Railway Cars,思路题~~~

    C - Sorting Railway Cars   Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d &am ...

  4. bzoj 1703 [Usaco2007 奶牛排名 传递闭包

    [Usaco2007 Mar]Ranking the Cows 奶牛排名 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 504  Solved: 343[ ...

  5. html5的新通讯技术socket.io,实现一个聊天室

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  6. 常见的 Android 新手误区

    在过去十年的移动开发平台中,作为资深的移动开发人员,我们认为Android平台是一个新手最广为人知的平台.它不仅是一个廉价的工具,而且有着良好的 开发社区,以及从所周知的编程语言(Java),使得开发 ...

  7. PatentTips - Solid State Disk (SSD) Device

    BACKGROUND OF THE INVENTION A SSD apparatus is a large-capacity data storage device using a nonvolat ...

  8. CSS介绍&选择器&选择器优先级

    CSS介绍 CSS(Cascading Style Sheet,层叠样式表)定义如何显示HTML元素. 当浏览器读到一个样式表,它就会按照这个样式表来对文档进行格式化(渲染). CSS语法 '''se ...

  9. 解决WIN7下VMWARE虚拟机无法上网问题

    一.Win7 虚拟机centos NAT联网 链接地址:http://www.cr173.com/html/19808_1.html,也不知道是哪位大神弄的,实践过,可以使用,但是重启之后却不能用了, ...

  10. struts2 自己定义表单

    自己定义表单一定会涉及<s:iterator/>迭代,一个复杂的自己定义表单可能会嵌套n多层迭代. 比方一个自己定义一个问卷调查页面涉及3个模型:一个Survey代表一个调查.一个Page ...