[AI]根据葡萄特征聚类

对给定的55种葡萄进行聚类分析,真实数据分为红葡萄和白葡萄两类,要求根据每种葡萄的特征向量x=(x1,x2,…,x6)采用聚类分析这些数据的特点,并根据真实数据验证聚类的准确性。

聚类,简单地说就是把相似的东西分到一组。聚类的时候我们并不关心某一类是什么,需要实现的目标只是把相似的东西聚到一起,因此,一个聚类算法通常只需要知道如何计算相似度就可以开始工作了,聚类因此在Machine Learning中被称作unsupervisedlearning (无监督学习)。本次实验数据虽然给出了结论,但我们假设不知道结论,并且在对实验数据不了解的情况下,尝试用聚类的方式对数据进行分析并同结论对比。具体采用以下两种方式:

1.        K-means:

把n个点(可以是样本的一次观察或一个实例)划分到k个聚类中,使得每个点都属于离它最近的均值(此即聚类中心)对应类别,以之作为聚类的标准。

2.        层次聚类:

1)        自底向上:起初每个元素都是一类,每次将最距离最近的两类聚为一类;

            自顶向下:起初所有元素都在一类中,每次找出最不相似的元素分离出去形成两类。

3. 算法描述:
a) K-means聚类:
Step1: 读入葡萄数据G[GRAPENUM],初始化类数组U[TYPENUM];
Step2: 根据得到的葡萄数据G确定MaxAttr[ATTRNUM]和MinAttr[ATTRNUM],计算Diff[ATTRNUM]并对G进行归一化处理;
Step3: 对每个类的中心进行初始化;
Step4: LOOP:判断当前划分次数是否耗尽或者两次划分类的中心没有发生很大改变,如果是,转Step7:;
Step5: 对每个葡萄计算其到各个类中心的距离,选择距离最小的类加入其中;
Step6: 重新计算各个类的中心,计算新类的中心与旧类的中心的差异Distin,转LOOP;
Step7: 输出各个类中的葡萄,算法结束。
b) 层次聚类(自底向上):
Step1: 读入葡萄数据G[GRAPENUM],初始化类数组U[TYPENUM];
Step2: 根据得到的葡萄数据G确定MaxAttr[ATTRNUM]和MinAttr[ATTRNUM],计算Diff[ATTRNUM]并对G进行归一化处理;
Step3: 将每个葡萄分别作为一类;
Step4: LOOP:判断当前分类数是否达到目标分类数,如果达到,转Step7:;
Step5: 找出中心相距最近的两类并将其合并为一类,计算该类的中心;
Step6: 类数+1,转Step4:;

Step7: 输出各类中的葡萄,算法结束。

4. 结果分析:

1.   K-means聚类结果及分析:

a)   采用欧式距离:

未归一化处理:


归一化处理后:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值