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

编程入门 行业动态 更新时间:2024-10-26 16:23:42

KNN<a href=https://www.elefans.com/category/jswz/34/1770096.html style=算法 C语言实现对鸢尾花的分类 机器学习"/>

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

C语言实现KNN算法

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

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

源码:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#include <time.h>
#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';elseif (strcmp(x, "\"versicolor\"") == 0)*p = 'B';elseif (strcmp(x, "\"virginica\"") == 0)*p = 'C';
}void makerand(TestAndTrain a[],int n){ //函数功能:打乱存放标签后的结构体数组TestAndTrain t;in

更多推荐

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

本文发布于:2024-02-11 19:14:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1682852.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:算法   机器   语言   鸢尾花   KNN

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!