资源简介
要求是对鸢尾花数据集IRIS做聚类分析,课上讲了几种算法:系统,分解,c均值及其改进,ISODATA,这里分享一下自己的思路与代码。不过感觉提到聚类首先想到的是k均值、meanshift这些算法,可能课堂上讲的都是些最经典最基础的吧。
代码片段和文件信息
import csv
import numpy as np
dataname = ‘iris.csv‘
# 读数据,构建列表[[][][]]
def loadIRISdata(filename):
data=[]
with open(filename‘r‘) as f:
reader=csv.reader(f)
result=list(reader)
for i in range(1151):
data.append(list(map(floatresult[i][1:5])))
return data
# 计算两个向量的欧氏距离
def eularDist(ab):
return np.sqrt(np.sum((np.array(a)-np.array(b))**2))
# 计算新的聚类中心
def centerGet(datakassignments):
sum = []
tag = 0
for i in range(150):
if assignments[i] == k:
sum.append(data[i])
tag += 1
return np.sum(sum 0) / tag
def c_means_clustering(data assignments c0 c1 c2):
count = 0
while True:
for i in range(150):
# 计算每个样本与三个聚类中心的欧氏距离,并取最小值归类
d = []
d.append(eularDist(data[i] c0))
d.append(eularDist(data[i] c1))
d.append(eularDist(data[i] c2))
d = np.array(d)
assignments[i]=d.argmin()
new_c0=centerGet(data0assignments)
new_c1=centerGet(data1assignments)
new_c2=centerGet(data2assignments)
if all(c0==new_c0) and all(c1==new_c1) and all(c2==new_c2):
return assignments
else:
c0=new_c0
c1=new_c1
c2=new_c2
count+=1
print(‘这是第‘count‘次循环‘)
# 计算聚类的准确度
def acc(result):
sum = 0
all = 0
for i in range(50):
if result[i][0] == 0:
sum += 1
all += 1
for i in range(50):
if result[i + 50][0] == 1:
sum += 1
all += 1
for i in range(50):
if result[i + 100][0] == 2:
sum += 1
all += 1
print(‘正确聚类的结果数量:‘ sum ‘总数:‘ all)
return sum all
if __name__ == “__main__“:
data = loadIRISdata(dataname)
assignments = []
for i in range(150):
assignments.append(0) # 先全部归到 0 类
# 选取 3 个 初始的聚类中心
‘‘‘
c0=[5.04.01.50.3]
c1=[6.03.04.51.5]
c2=[6.03.05.52.0]‘‘‘
# 换一组初始中心
‘‘‘
c0=data[0]
c1=data[1]
c2=data[2]‘‘‘
# 再换一组初始中心
c0=data[60]
c1=data[70]
c2=data[80]
answer=c_means_clustering(data assignments c0 c1 c2)
result = list(zip(answer data))
for i in range(3):
tag = 0
print(‘\n‘)
print(“第%d类数据有:“ % (i + 1))
for tuple in range(len(result)):
if (result[tuple][0] == i):
print(tuple end=‘ ‘)
tag += 1
if tag > 20:
print(‘\n‘)
tag = 0
print(‘\n‘)
sum all = acc(result)
print(‘分解聚类法准确度为:%2f%%‘ % ((sum / all) * 100))
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2020-06-12 16:53 iris_cluster\
目录 0 2020-07-02 00:15 iris_cluster\.idea\
目录 0 2020-05-27 11:02 iris_cluster\.idea\inspectionProfiles\
文件 174 2020-05-27 11:02 iris_cluster\.idea\inspectionProfiles\profiles_settings.xm
文件 361 2020-05-27 11:02 iris_cluster\.idea\iris_cluster.iml
文件 203 2020-05-27 11:02 iris_cluster\.idea\misc.xm
文件 283 2020-05-27 11:02 iris_cluster\.idea\modules.xm
文件 10770 2020-07-02 00:15 iris_cluster\.idea\workspace.xm
文件 3020 2020-05-31 12:55 iris_cluster\cmeans_cluster.py
文件 4946 2020-06-01 22:26 iris_cluster\cmeans_cluster_2.py
文件 4334 2020-05-27 17:12 iris_cluster\fenjie_cluster.py
文件 5912 2020-06-01 20:19 iris_cluster\iosdata_cluster.py
文件 4972 2020-05-27 10:41 iris_cluster\iris.csv
文件 2702 2020-05-27 11:34 iris_cluster\iris.txt
文件 38 2020-06-12 16:53 iris_cluster\test.py
目录 0 2020-05-27 11:00 iris_cluster\venv\
目录 0 2020-07-02 10:01 iris_cluster\venv\Include\
目录 0 2020-05-27 11:00 iris_cluster\venv\Lib\
目录 0 2020-05-29 20:43 iris_cluster\venv\Lib\site-packages\
目录 0 2020-05-29 20:33 iris_cluster\venv\Lib\site-packages\PyYAML-5.3.1.dist-info\
文件 4 2020-05-29 20:33 iris_cluster\venv\Lib\site-packages\PyYAML-5.3.1.dist-info\INSTALLER
文件 1101 2020-05-29 20:33 iris_cluster\venv\Lib\site-packages\PyYAML-5.3.1.dist-info\LICENSE
文件 1690 2020-05-29 20:33 iris_cluster\venv\Lib\site-packages\PyYAML-5.3.1.dist-info\me
文件 3372 2020-05-29 20:33 iris_cluster\venv\Lib\site-packages\PyYAML-5.3.1.dist-info\RECORD
文件 106 2020-05-29 20:33 iris_cluster\venv\Lib\site-packages\PyYAML-5.3.1.dist-info\WHEEL
目录 0 2020-05-29 20:33 iris_cluster\venv\Lib\site-packages\__pycache__\
文件 20763 2020-05-29 20:33 iris_cluster\venv\Lib\site-packages\__pycache__\appdirs.cpython-37.pyc
文件 13303 2020-05-29 20:33 iris_cluster\venv\Lib\site-packages\__pycache__\cfgv.cpython-37.pyc
文件 9556 2020-05-29 20:33 iris_cluster\venv\Lib\site-packages\__pycache__\filelock.cpython-37.pyc
文件 37345 2020-05-29 20:33 iris_cluster\venv\Lib\site-packages\__pycache__\nodeenv.cpython-37.pyc
文件 242445 2020-05-29 20:33 iris_cluster\venv\Lib\site-packages\__pycache__\pyparsing.cpython-37.pyc
............此处省略3198个文件信息
相关资源
- 聚类算法评测数据集 第一部分
- iris网络嗅探器
- weka全部算法源代码
- 基于粒子群的K均值聚类算法
- Iris Pro-0.9.3.2_完美破解版本
- 超像素分割SLIC(简单线性迭代聚类)
- 模糊聚类分析在数据挖掘中的应用研
- SPSS视频教程6——聚类分析
- 不确定性数学方法及其应用
- Data clustering theory algorithms and applicat
- IrisSkin SkinBuilder 皮肤编辑器
- Data clustering algorithms and application
- 机器学习(k - means聚类)
- 模式分类第二版Richard O.Duda
- GeoDa使用手册中文版
- 基于聚类(Kmeans)算法实现的客户价
- 基于谱聚类的金融时间序列数据挖掘
- coil-100.zip
- 基于遗传算法的聚类分析论文
- 小波变换聚类
- Gap Statistic算法研究
- 遗传模拟退火算法在k_means聚类中的应
- CASIA-Iris-Syn 虹膜数据库
- 聚类分析聚类算法综述ppt
- iris.data.txt
- 基于UCI中Car Evaluation数据集的分类、回
- 基于 K-means 聚类算法的图像区域分割
- 论文研究-基于模糊聚类分析的客户分
- 划分聚类分析: K均值和基于中心点的
- 一种基于用户需求的加权模糊聚类分
评论
共有 条评论