您的当前位置:首页正文

数据挖掘实验报告3

来源:九壹网
实验三 KNN算法

#include #include #define MAX 1000

int m, i, j; int types;

struct str//定义结构体 {

float x; float y; float distance; int type; };

str data[MAX];//输入的已知类别的数据

str point;//需要根据kNN判断类别的未知数据 str temp;

void input_data() {

printf(\"请输入已知点的个数:\"); scanf(\"%d\

for ( i = 1; i <= m; i++) { printf(\"请输入点\"); scanf(\"%d\ printf(\"坐标x , y 和所属类别:\"); scanf(\"%f %f %d\ } }

void Distance()//计算未知类别点与所有已知类别点的距离 {for ( i = 1; i <= m; i++ )

data[i].distance = sqrt ( (data[i].x - point.x) * (data[i].x - point.x) + (data[i].y - point.y) * (data[i].y - point.y) ); /*for(i=1;i<=m;i++) { printf(\" %f \ }*/ }

void sort()//对距离进行从小到大排序 {

for( i = 1; i for(j = i+1; j < m+1; j++) {

if(data[i].distance>data[i+1].distance) {

temp=data[i]; data[i]=data[i+1]; data[i+1]=temp; } }

/*for(i=1;i<=m;i++) { printf(\" %f \ }*/ }

void kNN( )//KNN算法 {

int the_type= 0,

int num,k,a[4],MAX1; num=k;

printf(\"请输入kNN的k值:\"); scanf(\"%d\

for(i=1;iMAX1=a[0]; for(i=0;i<3;i++) { if(a[i]>=MAX1) { MAX1=a[i]; the_type=i; } }

printf(\"属于 %d 类\

}

void main()

{ int m, i, j,the_type; struct str; input_data();

printf(\"请输入未知类别点的坐标x,y(输入0 0退出):\"); scanf(\"%f %f\

Distance(); sort(); kNN(); }

因篇幅问题不能全部显示,请点此查看更多更全内容

Top