数据挖掘聚类.doc
文本预览下载声明
实验报告
课程名称: 数据挖掘实验
实验名称: 实验三 聚类
实验地点: 行远楼
专业班级: 软件1533 学号: 2015005677
学生姓名: 高聪江
指导教师: 王莉
2017年 11月 20日
数据一:
实验代码:
# ---------------------------------------------------## 算法思路:这个聚类程序我采用K-Means这个比较通用的方法# 分析 : 我认为这一部分的算法原理不是很难,比较麻烦的# 是对数据的来回转换和读取## ---------------------------------------------------from numpy import *import pandas as pdfrom sklearn.cluster import KMeans as clfimport matplotlib.pyplot as plt#距离计算,我没有算它的真正距离,没有进行计算比较花费时间和空间的开根号#因为比较未开平方的数值结果是一样的没必要算出欧式距离def distEclud(vecA,vecB): return sum(power(vecA-vecB,2))#这是先随机找出几个点作为初始聚类中心def randCent(dataSet,k): n=shape(dataSet)[1] centroids = mat(zeros((k,n))) for j in range(n): minJ = min(dataSet[:,j]) rangeJ = float(max(dataSet[:,j])-minJ) centroids[:,j] = minJ + rangeJ * random.rand(k,1) return centroids#一边更换聚类中心点一边比较,找到最好的聚类中心#返回聚类中心和聚类的结果,并附加各个点与对应聚类中心的距离def kMeans(dataSet,k,distMeas=distEclud,createCent=randCent): m = shape(dataSet)[0] clusterAssment = mat(zeros((m,2))) centroids = createCent(dataSet,k) clusterChanged = True while clusterChanged: clusterChanged = False for i in range(m): minDist = inf;minIndex = -1 for j in range(k): distJI = distMeas(centroids[j,:],dataSet[i,:]) if distJI minDist: minDist = distJI;minIndex = j if clusterAssment[i,0] != minIndex:clusterChanged = True clusterAssment[i,:] = minIndex,minDist**2 print(centroids) print(-----) for cent in range(k): print(------) ptsInClust = dataSet[nonzero(clusterAssment[:,0].A==cent)[0]] centroids[cent,:] = mean(ptsInClust,axis=0) return centroids,clusterAssmentimport scipy.io as sioimport numpy as np#下面是讲解python怎么读取.mat文件以及怎么处理得到的结果###load_fn
显示全部