大数跨境
0
0

Python for EV3 均值聚类算法

Python for EV3 均值聚类算法 FaceFuture机器人竞赛TSC
2021-02-02
2
导读:俗话说:“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的分类问题。如何结合我们所学的EV3与Python实现更科学的聚类呢?

什么是聚类?



      俗话说:“物以类聚,人以群分”,在自然科学和社会科学中,存在着大量的分类问题。所谓类,通俗地说,就是指相似元素的集合。

      聚类是一种无监督的学习,他将相似的对象归到一个簇中,将不相似的对象归到不同簇中聚类分析起源于分类学,在古老的分类学中,人们主要依靠经验和专业知识来实现分类,很少利用数学工具进行定量的分类。随着人类科学技术的发展,对分类的要求越来越高,以致有时仅凭经验和专业知识难以确切地进行分类,于是人们逐渐地把数学工具引用到了分类学中,形成了数值分类学,之后又将多元分析的技术引入到数值分类学形成了聚类分析。

       用一个同学们生活中最常遇到的问题来举例子,在考试后学校通常会以考试的成绩作为学生划分的标准。比如满分为100分的试卷,A类90分以上,B类80分以上,C类60分以上,D类60分以下,以此为标准分为4类。这种方式虽然简单易行,又有统一的标准,但存在一些缺陷,比如学生总体成绩因为某些因素导致偏低,再按照这种方法进行评价得到的结果就不太科学,也不能有效评价教师的教学成果。那有没有更科学的办法对成绩进行分类呢?


K-Means均值聚类算法


K-means 是我们最常用的基于距离的聚类算法,其认为两个目标的距离越近,相似度越大。
它是将数据聚类为的 K 个簇的聚类算法, 它可以聚类为 K 个不同的簇, 且每个簇的中心是簇中的数据通过均值计算而得到的.簇个数 K 是用户指定的。

K-means 有一个著名的解释

牧师—村民模型:

有四个牧师去郊区布道,一开始牧师们随意选了几个布道点,并且把这几个布道点的情况公告给了郊区所有的村民,于是每个村民到离自己家最近的布道点去听课。
听课之后,大家觉得距离太远了,于是每个牧师统计了一下自己的课上所有的村民的地址,搬到了所有地址的中心地带,并且在海报上更新了自己的布道点的位置。
牧师每一次移动不可能离所有人都更近,有的人发现A牧师移动以后自己还不如去B牧师处听课更近,于是每个村民又去了离自己最近的布道点……
就这样,牧师每个礼拜更新自己的位置,村民根据自己的情况选择布道点,最终稳定了下来。


Python 与 EV3 实现K-means聚类算法:

step1决定要聚类的数目k(如上例的k=4类),选择初始k个中心,

              例:60,70,80,90(也可随机生成)

step2针对每个数据(学生成绩),找到距离其最近的中心,然后连线,连接到同一个中心的数据为一簇,这样的过程完成了一次聚类。

step3针对每个簇中的数据,计算这些数据的中心点(均值),当做该类的新的中心。

step4判断聚类新的中心是否发生了变化,如果相同,则算法终止,否则进入step2。

上述步骤标红部分如何实现:

1. 找到距离其最近的中心:这时候距离计算需要标准化,比如每个学生的成绩为一维数据,可以 |x1 - x2|的计算方法为标准得到距离,每个数据用for循环遍历每个中心点。通过index和min的组合得到最近的中心点。当然刚接触的同学也可以通过if进行逻辑判断得到最近的中心点。

2. 连线:可以通过 ev3.screen.draw_line(x1,y1,x2,y2)进行连线,因为是一维数据所以y值可以为固定值,中心的y值与学生成绩的y可以不同,使聚类的效果在EV3屏幕上能更直观的展示出来。同时将连接到同一个中心的值存入一个新的list。


3.计算这些数据的中心点(均值):通过sum和len算出list中所有元素的平均值。


代/码/展/示


这时候我们发现程序已经可以成功聚类并连线了
但是显然程序还需要优化和"整形"
接下来我们通过列表解析的方式对程序进行优化和“整形”
有些超纲,同学们可以选择性忽略

P.s"整形医生":金星宇


效//展/示


上图数据来自互联网

拓展与总结

这次聚类的对象是学生的成绩,是一组一维数据。当我们的数据是一组二维数据时我们仍然可以用这种方法进行聚类

这种方法的优点是容易理解,容易实现得到局部最优解,但是缺点也很明显,容易受到异常值的干扰。



我们来回顾一下从发现问题到解决问题的过程
遇到问题→分解问题→找到关键点→突破关键点→编写→调试→修改→成功→优化
对于初学者来说,将问题简化是很重要的,我们将难题分解,找到关键点,很容易找到突破口再逐步解决,反复调试,最终都能发现解决问题的方法。

还有一个多星期就过年啦,在这里提前祝大家新年快乐!

愿今朝所憾皆为翌日之喜。

因为疫情原因暂时无法相见的孩儿们,我们年后再见,希望再见面时不要变成“无忌”。

Respect everyone!




【声明】内容源于网络
0
0
FaceFuture机器人竞赛TSC
FaceFuture是一间关于机器人和创客的小型工作室,在这里我们激发想法,拥抱所有类型的创造。希望我们每个人都能在这里成为终身学习者,我们通过机器人竞赛和交流活动将这种精神传递给每一个真正热爱机器人与制造的人。
内容 36
粉丝 0
FaceFuture机器人竞赛TSC FaceFuture是一间关于机器人和创客的小型工作室,在这里我们激发想法,拥抱所有类型的创造。希望我们每个人都能在这里成为终身学习者,我们通过机器人竞赛和交流活动将这种精神传递给每一个真正热爱机器人与制造的人。
总阅读0
粉丝0
内容36