k

您所在的位置:网站首页 欧几里德点 k

k

2024-07-01 06:59| 来源: 网络整理| 查看: 265

k-means算法(数据挖掘与分析)------解决聚类的中心问题 参考博客问题来源代码如下结果截图课后习题

参考博客

https://blog.csdn.net/u013611461/article/details/53635835 参考的思想:在这里插入图片描述

问题来源

实验五(这次我要解决的问题) 将8个点聚类为3个簇:A1(2.10),A2(2,5),A3(8,4),B1(5,8),B2(7,5),B3(6,4),C1(1,2),C3(4,9)距离函数是欧几里得距离(然而我并没有使用这个不知道是什么的东西)。假设初始选择A1,B1,C1分别为每个聚类的中心,用k-means算法给出:

在第一次循环执行后的三个聚类中心最后的三个簇

在这里插入图片描述 两个定义的函数没有截图,但有代码,在下面。 第三行的print()没有截图截完全 第三行的print()没有截图截完全,在代码里面有

代码如下 import operator import copy #定义函数求簇所有点的均值,并将均值作为质心 def avg_(alist,blist):#alist为簇的点,blist用ott_avg替换 n=len(alist) x=0.0 y=0.0 for i in range(n): x = x + alist[i][0] / float(n) y = y + alist[i][1] / float(n) blist[0]=x blist[1]=y #定义函数计算质心于数据点之间的距离 def Rx(alist,otg_avg,one,two,three):#将alist换成ott_avg print("每个点的坐标与质心的距离的平方:----------------------------") for i in range(8): R1 = (alist[i][0] - otg_avg[0][0]) ** 2 + (alist[i][1] - otg_avg[0][1]) ** 2 R2 = (alist[i][0] - otg_avg[1][0]) ** 2 + (alist[i][1] - otg_avg[1][1]) ** 2 R3 = (alist[i][0] - otg_avg[2][0]) ** 2 + (alist[i][1] - otg_avg[2][1]) ** 2 blist = [R1, R2, R3] # 将质心于数据点之间的距离保存在blist中 print(alist[i], end=" ") print(blist) # 将最小的保存于one,two,three列表中 a = blist.index(min(blist)) if a == 0: one.append(alist[i]) # 向one中添加坐标 elif a == 1: two.append(alist[i]) # 向two中添加坐标 elif a == 2: three.append(alist[i]) # 向three中添加坐标 print('one:', one, 'two:', two, 'three:', three) adict={'A1':[2,10],'A2':[2,5],'A3':[8,4],'B1':[5,8],'B2':[7,5],'B3':[6,4],'C1':[1,2],'C3':[4,9]} # 后期index使用 alist=[[2,10],[5,8],[1,2],[2,5],[8,4],[7,5],[6,4],[4,9]] # 将8个坐标点以二维列表的形式保存 #创建3个列表保存簇 one=[] two=[] three=[] #创建默认列表保存各个簇的质心 ott_avg=[[2,10],[5,8],[1,2]] ott_avg_one=ott_avg[0] #为了便于avg_()函数调用,故进行了引用 ott_avg_two=ott_avg[1] ott_avg_three=ott_avg[2] #创建1个列表保存各个簇的质心(临时存储) ott_avg_a=[[0,0],[0,0],[0,0]] i=1 while operator.eq(ott_avg,ott_avg_a)==0: print('第{}次循环:------------------------------------------------'.format(i)) ott_avg_a=copy.deepcopy(ott_avg) # (临时存储) # 对每个质心,计算质心于数据点之间的距离(R1,R2,R3), # 将数据点分配到距其最近的簇(one,two,three) Rx(alist,ott_avg,one,two,three) #对于每个簇,计算簇中所有点的均值并将均值作为质心 avg_(one, ott_avg_one) avg_(two, ott_avg_two) avg_(three, ott_avg_three) print('质心---------{}----------:{}'.format(i,ott_avg)) #清空one,two,three列表 one.clear() two.clear() three.clear() i+=1 结果截图

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

课后习题

实验三(或者写书上例子5-6) 根据以下数据集使用Apriori算法找出频繁项集,给商家推荐营销策略,最小支持度和置信度请自己给定。 购物篮1 牛奶 , 洋葱 , 玉米 , 芸豆 , 鸡蛋 , 酸奶 购物篮2 菠萝 , 洋葱 , 玉米 , 芸豆 , 鸡蛋 , 酸奶 , 购物篮3 牛奶 , 苹果 , 芸豆 , 鸡蛋 , 购物篮4 牛奶 , 牛肉 , 玉米 , 芸豆 , 酸奶 , 购物篮5 玉米 , 洋葱 , 洋葱 , 芸豆 , 冰淇淋 , 鸡蛋

实验四 从国家统计局下载小数据做一个简单的ARMA或ARIMA时间序列预测

实验五 将8个点聚类为3个簇:A1(2.10),A2(2,5),A3(8,4),B1(5,8),B2(7,5),B3(6,4),C1(1,2),C3(4,9)距离函数是欧几里得距离。假设初始选择A1,B1,C1分别为每个聚类的中心,用k-means算法给出:

在第一次循环执行后的三个聚类中心最后的三个簇

, 实验六 使用贝叶斯算法实现以下问题: 假设有一家小公司招收机器学习工程师,为了在更广泛的范围内筛选人才,他们写一些爬虫,去各个招聘平台、职场社交平台爬取简历,然后又写了一个简单的分类器筛选他们感兴趣的候选人。这个筛选分类器是朴素贝叶斯分类器,训练数据是现在公司里的机器学习工程师和之前来面试过这一职位,有被录取的人员的简历记录。全部数据集如下,请预测一位985硕士技能会C++的应聘者是否能录取? 编号 毕业学校是否985 学历 技能 是否被录取 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3