小面包 面包多
简介
评论
作品封面
永久回看

[003]STM32单片机C语言程序使用KNN算法对乳腺肿瘤进行分类

¥30 已有60人购买Ta的作品
投诉
头像 认证用户
软件开发,嵌入式软件开发,常用单片机程序开发,智能控制算法。
作品简介


本例程硬件使用的是STM32F103C8T6最小系统板,IAR开发环境,STM32CubeMX进行配置并生成工程文件。该数据集描述中共有569组,但下载后实际有699组(仔细观察,实际上病例ID有相同的,可能是569是ID的数量,这点不做深究);虽然描述说没有缺失值,但实际有16组数据有缺失值,数据中以“?”代替,将这些数据剔除,还有683组,其中良性肿瘤(benign)444例,恶性肿瘤(malignant)239例。每组数据11列,但ID和最终的分类不算是数据的特种,因此KNN算法需要处理的数据为9维。

在Excel中,将可用数据做如下处理:

① 将数据按照良性、恶性,分成两类;

② 为使程序简单,因ID不参与计算,去掉ID列;

③ 将两组数据,均随机排列;

④ 每组数据各取前40%作为训练集,剩余60%作为测试集,即良性肿瘤取178组作为训练集,恶性肿瘤取96组作为训练集。

程序逻辑清晰,注释详细,并有欧氏距离、切比雪夫距离、曼哈顿距离三种距离。训练集和测试集可增删、修改、互换。

分类结果使用printf输出到串口,以下为运行效果;

最后打印出失败数量是12个,测试集共409组,因此分类正确397组,准确率97.07%。

其他距离公式,k取其他值,改变训练集、测试集,都会影响效果,本文不再编程尝试。另外,由于数据量巨大,需要将配置中的Stack Size设置的大一些;程序运行较慢,409组数据,大约10秒才全部计算完成。本文是将数据保存为数组在ROM中,如果在实际应用中,可以通过串口接收、内存卡读取等方式实现。



付费30元可获得

购买该全家桶含此作品及其他作品共2件

STM32单片机C语言程序KNN算法应用实例 全家桶

STM32单片机C语言程序KNN算法应用实例

¥60 仅需 ¥45

评论 100% 推荐

暂时还没有评论


头像 认证用户
软件开发,嵌入式软件开发,常用单片机程序开发,智能控制算法。
关注
0 喜欢 0 关注 22 粉丝 6 作品

在您购买本平台付费作品前,请您认真阅读本声明内容。如果您对这份声明没有异议,则可以继续购买 >>>

  • 主页
  • 私信
登录或购买

[003]STM32单片机C语言程序使用KNN算法对乳腺肿瘤进行分类

作品简介


本例程硬件使用的是STM32F103C8T6最小系统板,IAR开发环境,STM32CubeMX进行配置并生成工程文件。该数据集描述中共有569组,但下载后实际有699组(仔细观察,实际上病例ID有相同的,可能是569是ID的数量,这点不做深究);虽然描述说没有缺失值,但实际有16组数据有缺失值,数据中以“?”代替,将这些数据剔除,还有683组,其中良性肿瘤(benign)444例,恶性肿瘤(malignant)239例。每组数据11列,但ID和最终的分类不算是数据的特种,因此KNN算法需要处理的数据为9维。

在Excel中,将可用数据做如下处理:

① 将数据按照良性、恶性,分成两类;

② 为使程序简单,因ID不参与计算,去掉ID列;

③ 将两组数据,均随机排列;

④ 每组数据各取前40%作为训练集,剩余60%作为测试集,即良性肿瘤取178组作为训练集,恶性肿瘤取96组作为训练集。

程序逻辑清晰,注释详细,并有欧氏距离、切比雪夫距离、曼哈顿距离三种距离。训练集和测试集可增删、修改、互换。

分类结果使用printf输出到串口,以下为运行效果;

最后打印出失败数量是12个,测试集共409组,因此分类正确397组,准确率97.07%。

其他距离公式,k取其他值,改变训练集、测试集,都会影响效果,本文不再编程尝试。另外,由于数据量巨大,需要将配置中的Stack Size设置的大一些;程序运行较慢,409组数据,大约10秒才全部计算完成。本文是将数据保存为数组在ROM中,如果在实际应用中,可以通过串口接收、内存卡读取等方式实现。



创作时间: