Knn算法C++实现
相对简单的模拟。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++实现的更多相关文章
- 【Machine Learning】KNN算法虹膜图片识别
K-近邻算法虹膜图片识别实战 作者:白宁超 2017年1月3日18:26:33 摘要:随着机器学习和深度学习的热潮,各种图书层出不穷.然而多数是基础理论知识介绍,缺乏实现的深入理解.本系列文章是作者结 ...
- KNN算法
1.算法讲解 KNN算法是一个最基本.最简单的有监督算法,基本思路就是给定一个样本,先通过距离计算,得到这个样本最近的topK个样本,然后根据这topK个样本的标签,投票决定给定样本的标签: 训练过程 ...
- kNN算法python实现和简单数字识别
kNN算法 算法优缺点: 优点:精度高.对异常值不敏感.无输入数据假定 缺点:时间复杂度和空间复杂度都很高 适用数据范围:数值型和标称型 算法的思路: KNN算法(全称K最近邻算法),算法的思想很简单 ...
- 什么是 kNN 算法?
学习 machine learning 的最低要求是什么? 我发觉要求可以很低,甚至初中程度已经可以. 首先要学习一点 Python 编程,譬如这两本小孩子用的书:[1][2]便可. 数学方面 ...
- 数据挖掘之KNN算法(C#实现)
在十大经典数据挖掘算法中,KNN算法算得上是最为简单的一种.该算法是一种惰性学习法(lazy learner),与决策树.朴素贝叶斯这些急切学习法(eager learner)有所区别.惰性学习法仅仅 ...
- 机器学习笔记--KNN算法2-实战部分
本文申明:本系列的所有实验数据都是来自[美]Peter Harrington 写的<Machine Learning in Action>这本书,侵删. 一案例导入:玛利亚小姐最近寂寞了, ...
- 机器学习笔记--KNN算法1
前言 Hello ,everyone. 我是小花.大四毕业,留在学校有点事情,就在这里和大家吹吹我们的狐朋狗友算法---KNN算法,为什么叫狐朋狗友算法呢,在这里我先卖个关子,且听我慢慢道来. 一 K ...
- 学习OpenCV——KNN算法
转自:http://blog.csdn.net/lyflower/article/details/1728642 文本分类中KNN算法,该方法的思路非常简单直观:如果一个样本在特征空间中的k个最相似( ...
- KNN算法与Kd树
最近邻法和k-近邻法 下面图片中只有三种豆,有三个豆是未知的种类,如何判定他们的种类? 提供一种思路,即:未知的豆离哪种豆最近就认为未知豆和该豆是同一种类.由此,我们引出最近邻算法的定义:为了判定未知 ...
- Python 手写数字识别-knn算法应用
在上一篇博文中,我们对KNN算法思想及流程有了初步的了解,KNN是采用测量不同特征值之间的距离方法进行分类,也就是说对于每个样本数据,需要和训练集中的所有数据进行欧氏距离计算.这里简述KNN算法的特点 ...
随机推荐
- JSP配置即报错以及解决办法(未更新完)
JSP: JAVA Server Page 使用JAVA语言编写的一种在服务器运行的动态页面 JSP = JAVA + HTML JSP 的执行过程 1: 翻译阶段 把JSP源文件翻译成 java ...
- 调试jz2440生成特定后缀的命令
生成dis命令: arm-linux-objdump -D u-boot> u-boot.dis 版权声明:本文为博主原创文章,未经博主允许不得转载.
- Java基础学习之数组基本属性和方法
数组对于每一门编程语言都是重要的数据结构之一,当然不同语言对数组的实现及处理也不尽相同.Java语言中提供的数组是用来存储固定大小的同类型元素.你可以声明一个数组变量,如 int[100] 来代替直接 ...
- PS小demo
1.打开图像素材. 2.图层 >> 添加调整图层 >> 色相/饱和度. 得到如下效果: 3.创建新图层,将图层混合模式设为“柔光”,选择笔刷工具,硬度100%,按下图所示绘制该 ...
- cf837d Round Subset
设dp[i][j][k]表示前i个数中选j个并且因子含有k个2的能获得的最多的5的个数 则dp[i][j][k]=max(dp[i-1][j][k],dp[i-1][j-1][k-cnt2]+cnt5 ...
- Python内置函数—bytearray
英文文档: class bytearray([source[, encoding[, errors]]]) Return a new array of bytes. The bytearray cla ...
- CodeForces - 750B New Year and North Pole
http://codeforces.com/problemset/problem/750/B 模拟题 审题 在南极点 只能向北走(不能向 南 东 西) 所以也就不存在走过南极点的情况 北极点同样 然后 ...
- 51nod1040 最大公约数之和
求$\sum_{i=1}^{n}(i,n)$.n<=1e9. $\sum_{i=1}^{n}(i,n)=\sum_{d|n}d\sum_{i=1}^{n}[(i,n)=d]=\sum_{d|n} ...
- 【转载】在Javascript中 声明时用"var"与不用"var"的区别
原文链接:http://www.2cto.com/kf/201204/128406.html[侵删] Javascript声明变量的时候,虽然用var关键字声明和不用关键字声明,很多时候运行并没有 ...
- ionic 之 基本布局
目录: 简介 Hybrid vs. Others ionic CSS框架 基本布局 布局模式 定高条块:.bar .bar : 位置 .bar : 嵌入子元素 .bar : 嵌入input 内容:.c ...