模式识别设计(Python编程):IRIS数据集的Kmeans聚类与分解聚类法

这篇博客介绍了如何使用Python进行模式识别,重点是应用Kmeans和分解聚类法对IRIS数据集进行聚类分析。作者提供了Kmeans的代码示例,并分享了自己原创的分解聚类法,虽然在第二次分解时存在简化处理。实验结果显示了两种聚类方法的不同应用效果。
摘要由CSDN通过智能技术生成

题目:本次作业的实验需求是使用分解聚类法与c-means聚类法对IRIS数据集进行聚类,Kmeans聚类代码网上摘录,分解聚类法纯原创,PS:因为时间紧,分解聚类法进行第二次分解时,偷懒了~~有缘人改改吧~~

数据格式:

kmeans代码:

import math
from collections import defaultdict
import numpy as np
dataname = "data.txt"
def loadIRISdata(filename):
    data = []
    with open(filename, mode="r", encoding="utf-8") as rf:
        for line in rf:
            if line == '\n':
                continue
            data.append(list(map(float, line.split(" "))))
    return data

def generateCenters(data):
    '''求解初始聚类中心'''
    centers = []
    '''已知维度为4'''
    '''分三类,取第0,50,100的三个向量作为分界'''
    centers.append(data[0])
    centers.append(data[50])
    centers.append(data[100])
    return centers

def distance(a ,b):
    '''欧式距离'''
    sum = 0
    for i in range(4):
        sq = (a[i]-b[i])*(a[i]-b[i])
        sum += sq
    return math.sqrt(sum)

def point_avg(points):
    '''对维度求平均值'''
    new_center = []
    for i in range(4):
        sum = 0
        for p in points:
            sum += p[i]
        new_center.append(float("%.8f" % (sum/float(len(points)))))
    return new_center

def updataCenters(data, assigments):
    new_means = defaultdict(list)
    centers = []
    for assigment, point in zip(assigments, data):
        new_means[assigment].append(poin
  • 4
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值