




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室 2020年12月3日学院计算机科学与网络工程学院年级传业/班姓名学号实验课程名称人工智能导论实验成绩实验项目名称聚类算法指导老师范立牛(***报告只能为文字和图片,老师评语将添加到此处,学生请勿作答***)一、实验内容1.针对教师指定的两类公用数据集(纯数值型例如UCIIris,混杂型数据例如UCIBankMarketing),学生至少实现两种聚类算法,并比较分析结果原因。本次实验主要内容包括数据处理、算法实现和评价方法。鼓励与其他方法尤其是业界领先算法进行比较分析,鼓励创新设计求解方法。二、实验设备实验设备:计算机;平台:Windows操作系统,VisualC++6.0/PythonAnaconda三、实验步骤读取数据,并做预处理。至少实现两种聚类算法,选择评价方法比较结果并分析原因选择适当可视化方法显示结果。四、分析说明(包括核心代码及解释)Kmeans算法:importmathfromcollectionsimportdefaultdictimportnumpyasnpdataname="iris.txt"#数据预处理defloadlRISdata(filename):data=[]withopen(filename,mode="r",encoding="utf-8")asrf:forlineinrf:ifline=='\n':continuedata.append(list(map(float,line.split(""))))returndatadefgenerateCenters(data):'''求解初始聚类中心’’centers=[]'''已知维度为4'''''分三类,取第0,50,100的三个向量作为分界'''centers.append(data[0])centers.append(data50])centers.append(data100])returncentersdefdistance(a,b):'''欧式距离'''sum=0foriinrange(4):sq=(a[i]-b[i])*(a[i]-b[i])sum+=sqreturnmath.sqrt(sum)defpoint_avg(points):'''对维度求平均值?’’new_center=[]foriinrange(4):sum=0forpinpoints:sum+=p[i]new_center.appendfloat("%.8F"%(sum/float(len(points)))))returnnew_centerdefupdataCenters(data,assigments):new_means=defaultdict(List)centers=[]forassigment,pointinzip(assigments,data):new_means[assigment].append(point)'''将同一类的数据进行整合'''foriinrange(3):points=new_means[i]centers.append(point_avg(points))returncentersdefassignment(data,centers):assignments=[]对应位置显示对应类群'''forpointindata:'''遍历所有数据'''shortest=float('inF')shortestindex=0foriinrange(3):'''遍历三个中心向量,与哪个类中心欧氏距离最短就将其归为哪类'''value=distance(point,centers[i])ifvalue<shortest:shortest=valueshortestindex=iassignments.append(shortestindex)returnassignmentsdefkmeans(data):k_data=generateCenters(data)assigments=assignment(data,k_data)old_assigments=Nonewhileassigments!=old_assigments:new_centers=updataCenters(data,assigments)old_assigments=assigmentsassigments=assignment(data,new_centers)result=list(zip(assigments,data))returnresultdefacc(result):sum=0all=0foriinrange(50):ifresult[i][0]==0:sum+1all+=1foriinrange(50):ifresult[i+50][0]==1:sum+1all+=1foriinrange(50):ifresult[i+100][0]==2:sum+1all+=1print('sum:',sum,'all:',all)returnsum,allif name ==" ain ":data=loadIRISdata(dataname)result=kmeans(data)foriinrange(3):tag=0print('\n')print("第%d类数据有:"%(i+1))fortupleinrange(len(result)):if(result[tuple][0]==i):print(tuple,end=' ')tag1=iftag>20:print('\n')tag0=#print(result)print('\n')sum,all=acc(result)print('c-means准确度为:%2f%%'%((sum/all)*100))第]■夹S?据有=弓9123 5 7 101112151415.16171S02B~ 212223弟25海272&餌抽S132弗酣翦話173AM烧41■爼百3城45自占47A目昨弟2土钢抵码=BG 51 53 尉 55 碍盟56&960 6162殆64 柘6$仍6$ 2797172 73 “ 75 7& 7-6 79&061&2 B3目百辟関展7盟卿9fl 叫9293如般则 97 侗酬 1SL136L1S 口411*121 12512*127 1331瑚142 1461的第H卖豉据甬-5277190102103]_目耳L9&10710B19?119111L1Z1151U11711?12S12212*12512B1291301311321酹L35I隔137L3?lAil^L1.翻1和1砖14714flsum.;134NIL;L5Bc-meane准融为:辭门歸盟孰ProcessfinishedwithbxltcodeBFCM算法:frompylabimport*fromnumpyimport*importpandasaspdimportnumpyasnpimportoperatorimportmathimportmatplotlib.pyplotaspltimportrandom#数据预处理df_full=pd.read_csv("iris.csv")columns=list(df_full.columns)features=columns[:len(columns)一1]df=df_full[features]#维度num_attr=len(df.columns)一1#分类数k=3#最大迭代数MAX_ITER=100#样本数n=len(df)#thenumberofrow#模糊参数m=2.00#初始化模糊矩阵udefinitializeMembershipMatrix():membership_mat=list()foriinrange(n):random_num_list=[random.random()foriinrange(k)]summation=sum(random_num_list)temp_list=[x/summationforxinrandom_num_list]#首先归一化membership_mat.append(temp_list)returnmembership_mat#计算类中心点defcalculateClusterCenter(membership_mat):cluster_mem_val=zip(*membership_mat)cluster_centers=list()cluster_mem_val_list=list(cluster_mem_val)forjinrange(k):x=cluster_mem_val_list[j]xraised=[e**mforeinx]denominator=sum(xraised)temp_num=list()foriinrange(n):data_point=ist(df.iloc[i])prod=[xraised[i]*vaforvalindata_point]temp_num.append(prod)numerator=map(sum,zip(*temp_num))center=[z/denominatorforzinnumerator]#每一维都要计算。cluster_centers.append(center)returncluster_centers#更新隶属度defupdateMembershipValue(membership_mat,cluster_centers):#p=float(2/(m—1))data=[]foriinrange(n):x=list(df.iloc[i])#取出文件中的每一彳丁数据data.append(x)distances=[np.linalg.normlist(map(operator.sub,x,cluster_centers[j])))forjinrange(k)]forjinrange(k):densum([math.pow(float(distances[j]/distances[c]),2)forcinrange(k)])membership_mat[i][j]=loat(1/den)returnmembership_mat,data#得到聚类结果defgetClusters(membership_mat):cluster_labels=list()foriinrange(n):max_val,idx=max((val,idx)for(idx,val)inenumerate(membership_mat[i]))cluster_labels.append(idx)returncluster_labelsdeffuzzyCMeansClustering():#主程序membership_mat=initializeMembershipMatrix()curr=0whilecurr<=MAX_ITER:#最大迭代次数cluster_centers=calculateClusterCenter(membership_mat)membership_mat,data=updateMembershipValue(membership_mat,cluster_centers)cluster_labels=getClusters(membership_mat)curr+=1print(membership_mat)returncluster_labels,cluster_centers,data,membership_matdefxie_beni(membership_mat,center,data):sum_cluster_distance=0min_cluster_center_distance=infforiinrange(k):forjinrange(n):sum_cluster_distance=sum_cluster_distance+membership_mat[j][i] **2*sum(power(data[j,:]-center[i,:2)) #计算类致性foriinrange(k一1):forjinrange(i+1,k):cluster_center_distance=sum(power(center[i,:]一center[j,:],2)) #计算类间距离ifcluster_center_distance<min_cluster_center_distance:min_cluster_center_distance=cluster_center_distancereturnsumclusterdistance/(n*minclustercenterdistance)labels,centers,data,membership=fuzzyCMeansClustering()print(labels)print(centers)center_array=array(centers)label=array(labels)datas=array(data)#Xie-Beni聚类有效性print("聚类有效性:",xie_beni(membership,center_array,datas))xlim(0, 10)ylim(0, 10)#做散点图fig=plt.gcf()fig.set_size_inches(16.5,12.5)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高中美术结业考试题目及答案
- 2025年信息系统项目管理考试题及答案
- 四川泸州科一试题及答案
- java软件研发面试题及答案
- 股票投资策略与实战试题
- 电子竞技赛事组织作业指导书
- 机电工程实操练习试题及答案
- 项目资源优化配置策略试题及答案
- 西方政治考试的技能提升路径试题及答案
- 机电工程考试试题及答案解析分享
- 部编版语文六年级下册第五单元教材解读大单元集体备课
- 乒乓球的起源与发展
- 工程造价咨询服务入围供应商招标文件模板
- 服装表演音乐游戏课程设计
- 理工英语3-01-国开机考参考资料
- 头颅常见病影像
- 漫画解读非煤地采矿山重大事故隐患判定标准
- 2024年建筑业10项新技术
- 《客舱安全与应急处置》-课件:颠簸的原因及种类
- 《养老护理员》-课件:老年人卫生、环境、食品安全防护知识
- 健康体检科(中心)规章制度汇编
评论
0/150
提交评论