人工智能导论实验四 聚类算法

上传人:枫** 文档编号:561933445 上传时间:2023-02-26 格式:DOCX 页数:8 大小:35.91KB
返回 下载 相关 举报
人工智能导论实验四 聚类算法_第1页
第1页 / 共8页
人工智能导论实验四 聚类算法_第2页
第2页 / 共8页
人工智能导论实验四 聚类算法_第3页
第3页 / 共8页
人工智能导论实验四 聚类算法_第4页
第4页 / 共8页
人工智能导论实验四 聚类算法_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《人工智能导论实验四 聚类算法》由会员分享,可在线阅读,更多相关《人工智能导论实验四 聚类算法(8页珍藏版)》请在金锄头文库上搜索。

1、广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室2020年12月3日学院计算机科学 与网络工程学院年级传 业/班姓名学号实验课 程名称人工智能导论实验成绩实验项 目名称聚类算法指导老师范立牛(*报告只能为文字和图片,老师评语将添加到此处,学生请勿作答*)一、实验内容1.针对教师指定的两类公用数据集(纯数值型例如UCI Iris,混杂型数据例 如UCI Bank Market in g),学生至少实现两种聚类算法,并比较分析结果原因。 本次实验主要内容包括数据处理、算法实现和评价方法。鼓励与其他方法尤其是 业界领先算法进行比较分析,鼓励创新设计求解方法。二、实验设备1. 实验设备:计

2、算机;2. 平台:Windows操作系统,Visual C+ 6.0 / Python Anaconda三、实验步骤 读取数据,并做预处理。 至少实现两种聚类算法,选择评价方法比较结果并分析原因 选择适当可视化方法显示结果。四、分析说明(包括核心代码及解释)Kmea ns 算法:import mathfrom collections import defaultdictimport numpy as npdataname = iris.txt#数据预处理def loadlRISdata(filename):data =with open(filename, mode=r, encoding=u

3、tf-8) as rf: for line in rf:if line = n:continuedata.append(list(map(float, line.split( )return datadef generateCenters(data):求解初始聚类中心centers =已知维度为4分三类,取第0, 50, 100的三个向量作为分界centers.append(data0)centers.append(data 50)centers.append(data 10 0)return centersdef distance(a, b):欧式距离sum = 0for i in rang

4、e (4):sq = (ai - bi) * (ai - bi)sum += sqreturn math.sqrt(sum)def point_avg(points):对维度求平均值?new_center =for i in range (4):sum =0for p in points:sum += pinew_center.appendfloat(%.8f % (sum / float(len(points) return new_centerdef updataCenters(data, assigments):new_means = defaultdict (List)centers

5、=for assigment, point in zip(assigments, data): new_meansassigment.append(point)将同一类的数据进行整合for i in range (3):points = new_meansicenters.append(point_avg(points)return centersdef assignment(data, centers):assignments =对应位置显示对应类群for point in data:遍历所有数据shortest = float(inf)shortestindex =0for i in ra

6、nge(3):遍历三个中心向量,与哪个类中心欧氏距离最短就将其归为哪类value = distance(point, centersi)if value 20: print ( n)tag 0=#print(result)print(n)sum, all = acc(result)pri nt (c-means 准确度为:%2f% % (sum / all) * 10 0)第夹S?据有=弓 9 1 2 35710 11 12 15 14 15. 16 17 1S 0 2B21 22 23弟25海27 2&餌抽S1 32弗酣翦話17 3A M烧41 爼百3城45自占47 A目昨弟2土钢抵码=BG

7、5153尉55碍盟 56 &9 6061 62 殆 64柘 6$ 仍 6$2 79 717273“757&7-679 &0 61 &2B3 目百辟関展7 盟卿 9fl叫 92 93如般则97侗酬1SL 136 L1S口4 11* 121125 12* 127133 1 瑚 142146 1 的第H卖豉据甬-52 77 190 102 103 _目耳 L9& 107 10B 19? 119 111 L1Z 115 1U 117 11? 12S 122 12* 12512B 129 130 131 132 1 酹 L35 I隔 137 L3? lAi lL 1.翻 1 和 1 砖 147 14fl

8、 sum.; 134 NIL; L5Bc-meane准融为:辭门歸盟孰Process finished with bxlt code BFCM算法:from pylab import * from numpy import * import pandas as pd import numpy as np import operator import math import matplotlib.pyplot as plt import random#数据预处理 df_full = pd.read_csv( iris.csv ) columns = list(df_full.columns) f

9、eatures = columns:len(columns) 一 1 df = df_fullfeatures#维度num_attr = len(df.columns) 一 1#分类数k = 3#最大迭代数MAX_ITER = 100#样本数n = len (df) # the number of row #模糊参数m = 2.00#初始化模糊矩阵udef initializeMembershipMatrix(): membership_mat =list() for i in range(n):random_num_list = random.random()for i in range(k

10、) summation = sum(random_num_list)temp_list = x / summationfor x in random_num_list # 首先归一 化membership_mat.append(temp_list)return membership_mat#计算类中心点def calculateClusterCenter(membership_mat):cluster_mem_val = zip (*membership_mat)cluster_centers =list()cluster_mem_val_list =list(cluster_mem_val)

11、for j in range (k):x = cluster_mem_val_listj xraised = e * mfor e in x denominator = sum(xraised) t emp_num =lis t()for i in range(n):data_point =ist(df.iloci)prod = xraisedi * vafor val in data_point temp_num.append(prod)numerator =map(sum, zip(*temp_num)center = z / denominatorfor z in numerator # 每一维都要计算。 cluster_centers.append(center)return cluster_centers#更新隶属度def updateMembershipValue(membership_mat, cluster_centers):# p = float(2/(m 1)data =for i in range(n):x =list(df.iloci) #取出文件中的每一彳丁数据data.append(x)distances = np.linalg.normlist(map(operator

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号