数据挖掘原理与算法 kNN算法
用于在不清楚具体分组的情况下,给待分配数据分一个组,遍历一遍所有数据即可实现,先选择前面的k个元素作为训练基础,再用后面的数据和待分配数据结合,根据距离不断替换集合里面的元素,最后得到分组,代码并不难,完全按照课本思路走即可。
代码如下:
#include<bits/stdc++.h>
using namespace std;
int k,n;
struct Node{char name[100];double height;char sex;double dis;
};
struct Node nodes[1005];
vector<struct Node> v;
double GetDis(struct Node x,struct Node y)
{return abs(x.height-y.height);
}
int main()
{while(scanf("%d %d",&k,&n)!=EOF){FILE *fp=fopen("Test.txt", "r");struct Node tar;scanf("%s %c %lf",tar.name,&tar.sex,&tar.height);for(int i=0;i<n;i++){fscanf(fp,"%s",nodes[i].name);fscanf(fp," %c",&nodes[i].sex);fscanf(fp,"%lf",&nodes[i].height);nodes[i].dis=GetDis(nodes[i],tar);//printf("%.2lf\n",nodes[i].dis);}for(int i=0;i<k;i++)v.push_back(nodes[i]);for(int i=k;i<n;i++){double maxx=-1;int goal;for(int j=0;j<v.size();j++){if(maxx<v[j].dis){maxx=v[j].dis;goal=j;}}//cout<<maxx<<endl;if(nodes[i].dis<maxx)v[goal]=nodes[i];}for(int i=0;i<v.size();i++)printf("%s %c %lf\n",v[i].name,v[i].sex,v[i].height);}return 0;}
Test.txt如下:
Lily F 1.50
Jim M 1.92
MaDahua F 1.70
WangXiaohua F 1.73
LiuMinjie F 1.60
BaoBo M 1.75
ZhangYe F 1.50
DaiWei M 1.60
MaTianyu M 2.05
ZhangXiaoxiao M 1.90
LiuBingbing F 1.68
TaoDede M 1.78
GaoJiejie F 1.70
ZhangXiaoyi F 1.68
XuTiantian F 1.65
由于中文在C中是由两个字符表示的,如果TXT文档中写的是中文,会在fsanf的时候出现编码错误,这里涉及到文字编码的问题,解决方案参考大神
https://blog.csdn.net/jjunjoe/article/details/6458764
数据挖掘原理与算法 kNN算法相关推荐
- 分类算法matlab实例,数据挖掘之分类算法---knn算法(有matlab例子)
knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法.注意,不是聚类算法.所以这种分类算法 必然包括了训练过程. 然而和一般性的分类算法不同,knn算法是一种懒 ...
- 机器学习算法—KNN算法原理
机器学习算法-KNN算法原理 概述: KNN算法一般也会经常被称为K邻近算法,其核心思想是根据训练集中的样本分类计算测试集中样本与训练集中所有样本的距离,根据所设定的K值选取前K个测试样本与训练样本最 ...
- 基于KD树的K近邻算法(KNN)算法
文章目录 KNN 简介 KNN 三要素 距离度量 k值的选择 分类决策规则 KNN 实现 1,构造kd树 2,搜索最近邻 3,预测 用kd树完成最近邻搜索 K近邻算法(KNN)算法,是一种基本的分类与 ...
- 邻近算法(KNN算法)
邻近算法 锁定 本词条由"科普中国"百科科学词条编写与应用工作项目 审核 . 邻近算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简 ...
- 最近邻算法(KNN算法)
原理:找到k个与新数据最近的样本取样本中最多的一个类别作为新数据的类别 距离最近的那个类就是新数据属于的类别 最近距离计算(欧式距离,曼哈顿距离,切比雪夫距离,马氏距离) 优点:简单易实习,对于边界不 ...
- 人工智能算法--KNN算法(C++实现)
# 上面的图片是在网上随手翻到的-很符合主题-侵权删 # 蹭热度ing Knn算法,用于分类. 通过得到逻辑上的相近程度实现判断,K值的大小体现的是一个容错的过程. 提高预测准确度的方法: 调整K值, ...
- 【基础机器学习算法原理与实现】使用感知器算法LDA、最小二乘法LSM、Fisher线性判别分析与KNN算法实现鸢尾花数据集的二分类问题
本文设计并实现了PerceptronLA.PseudoIA.LeastSM.LinearDA.KNN等五个算法类,以及DataProcessor的数据处理类.对感知器算法LDA.最小二乘法LSM的伪逆 ...
- 详细的KNN算法原理步骤
KNN算法原理详解 KNN算法 1.1 解决监督学习中分类问题的一般步骤 1.2 什么是消极(惰性)的学习方法 2 首先从一个实例讲起 3 KNN分类算法入门 3.1.1算法综述 3.1.2算法思想 ...
- knn算法python代码_KNN 算法原理及代码实现
在本文中,我们将讨论一种广泛使用的分类技术,称为K最近邻(KNN).我们的重点主要集中在算法如何工作以及输入参数如何影响预测结果. 内容包括: 何时使用KNN算法? KNN算法原理 如何选择K值 KN ...
最新文章
- leetcode 785. Is Graph Bipartite? | 785. 判断二分图(DFS,地图着色)
- wpf文本框限制输入长度_Excel办公实操,限制输入日期,手机号码,不重复数据的使用...
- 斐波那契数列及其优化
- 物理搬砖问题_全职业通用,搬砖市场装备
- 计算机网络校园网络设计方案,毕业论文--《计算机网络》校园网设计方案
- ReactNative设置字体不随系统字体大小变化
- 器械传递的方法_天津304不锈钢传递窗报价_碧海云天
- win8计算机休眠的区别,win8系统的休眠和睡眠有什么区别?如何用?
- diamond java_Diamond语法何时在Java 8中不起作用?
- 微信公众平台iPhone版开始内测了
- Fedora 10安装Compiz-fusion 3D效果方法
- cv2显示图片显蓝色
- qt creator在高分辨率笔记本上控件运行显示不全的问题解决方法
- linux c开多线程算质数,C语言判断素数(质数)
- Android中切换Activity的动画
- 常用颜色及其RGB值
- 日期 计算器(代码打开)
- 互联网、创新创业、的思路。之什么是高端粉丝?
- Github的加速访问
- 外卖小程序源码带后台和数据库