KNN算法 C语言实现对鸢尾花的分类 机器学习 您所在的位置:网站首页 BP神经网络分类器C语言 KNN算法 C语言实现对鸢尾花的分类 机器学习

KNN算法 C语言实现对鸢尾花的分类 机器学习

2024-07-13 01:26| 来源: 网络整理| 查看: 265

C语言实现KNN算法

步骤: ①读取数据,打乱数据(或者随机读取数据),并把标签(花名)别换成A,B,C ②分割数据(共150组,分50组为测试集,100组为训练集) ③遍历计算每一个测试数据对100个训练数据的距离(用欧几里得距离) ④排序距离,取前K个距离(即距离最近的三个邻居,K值是邻居数)统计三种标签中每种出现的次数,则出现次数最多的标签种类为预测标签的种类。 ⑤检查最终每一个预测标签结果与每一个测试集标签的结果是否正确相等,统计相等的数量。 ⑥计算正确的概率(预测标签正确的数量/测试集总数),计算每一个K值对应的每一个概率。

特征值的类别数:即花萼长度、花萼宽度、花瓣长度、花瓣宽度。 三种鸢尾花名:setosa、versicolor、virginica。 150组数据集(数据集来源于网络): 在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

源码:

#include #include #include #include #include #define NUM 150 //总数据的数量 #define NUM1 50 //测试数据的数量 #define NUM2 100 //训练数据的数量 #define N 4 //特征数据的数量(维数) #define KN 15//K的最大取值 typedef struct { double data;//距离 char trainlabel;//用于链接训练标签 }Distance; typedef struct { double data[N];//每种花的4个特征数据 char label; //标签(花的种类) char name[20];//存放花的名字 }TestAndTrain; TestAndTrain test[NUM1];//测试数据结构体数组 TestAndTrain train[NUM2];//训练数据结构体数组 TestAndTrain temp[NUM]; //临时存放数据结构体数组 Distance distance[NUM2];//存放距离结构体数组 void labelABC(char x[], char* p) { //把不同种类花的名字分别转化成 A B C 标签 if (strcmp(x, "\"setosa\"") == 0) *p = 'A'; else if (strcmp(x, "\"versicolor\"") == 0) *p = 'B'; else if (strcmp(x, "\"virginica\"") == 0) *p = 'C'; } void makerand(TestAndTrain a[],int n){ //函数功能:打乱存放标签后的结构体数组 TestAndTrain t; in


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有