一、 实验目的:
1、 用KNN算法对未知样本进行分类
二、 实验内容:
实验题目:设某公司现有15名员工的基本信息,包括其个子为高个、中等、矮个的分类标识。
公司现刚招进一位名叫刘萍的新员工Z1,令k=5,试采用k-最近邻分类算法判断员工刘萍的个子属于哪一类?
过程代码
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#define M 15
#define N 1
//定义一个字符的结构体
struct letter{
char c;
int array[1];
float distance;};
//定义训练字符结构体数组,共有M个训练样本
letter letters[M];
//识别字符类数组,共有N个对比样本
letter nletters[N];
float t;
//定义欧式距离函数,计算一个测试样本与各个训练样本之间的距离
void Distance(letter *p){
int i,j;
float s=0.0;
for(i=0; i<M; i++)
{
for(j=0; j<16; j++)
{
s+=((letters[i].array[j]-(*p).array[j])*(letters[i].array[j]-(*p).array[j]));
}
letters[i].distance=sqrt(s);
//恢复到原始值
s=0.0;
}
}
//排序函数将letters距离按由小到大排列
void Sort(){
int i,j;
letter t;
for(i=0; i