文档详情

数据挖掘聚类.doc

发布:2018-01-08约5.32千字共10页下载文档
文本预览下载声明
实验报告 课程名称: 数据挖掘实验 实验名称: 实验三 聚类 实验地点: 行远楼 专业班级: 软件1533 学号: 2015005677 学生姓名: 高聪江 指导教师: 王莉 2017年 11月 20日 数据一: 实验代码: # --------------------------------------------------- # # 算法思路:这个聚类程序我采用K-Means这个比较通用的方法 # 分析 : 我认为这一部分的算法原理不是很难,比较麻烦的 # 是对数据的来回转换和读取 # # --------------------------------------------------- from numpy import * import pandas as pd from sklearn.cluster import KMeans as clf import 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,clusterAssment import scipy.io as sio import numpy as np #下面是讲解python怎么读取.mat文件以及怎么处理得到的结果### load_fn
显示全部
相似文档