题目:本次作业的实验需求是使用分解聚类法与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