博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
10.25作业
阅读量:7090 次
发布时间:2019-06-28

本文共 2592 字,大约阅读时间需要 8 分钟。

 

import numpy as npx = np.random.randint(1,100,[20,1])y = np.zeros(20)k = 3 #选取数据空间中的K个对象作为初始中心,每个对象代表一个聚类中心;def initcenter(x,k):    #初始聚类中心数组    return x[0:k].reshape(k)#对于样本中的数据对象,根据它们与这些聚类中心的欧氏距离,按距离最近的准则将它们分到距离它们最近的聚类中心(最相似)所对应的类;def nearest(kc,i):       #数组中的值,与聚类中心最小距离所在类别的索引号    d = (abs(kc-i))    w = np.where(d == np.min(d))    return w[0][0]def xclassify(x,y,kc):    for i in range(x.shape[0]):       #对数组的每个值进行分类,shape[0]读取矩阵第一维度的长度        y[i] = nearest(kc,x[i])    return y# 更新聚类中心:将每个类别中所有对象所对应的均值作为该类别的聚类中心,计算目标函数的值;def kcmean(x,y,kc,k):     #计算各聚类新均值    l = list(kc)    flag = False    for c in range(k):        print(c)        m = np.where(y == c)        n=np.mean(x[m])        if l[c] != n:            l[c] = n            flag = True     #聚类中心发生变化            print(l,flag)    return (np.array(l),flag)k = 3kc = initcenter(x,k)flag = Trueprint(x,y,kc,flag)#判断聚类中心和目标函数的值是否发生改变,若不变,则输出结果,若改变,则返回2while flag:    y = xclassify(x,y,kc)    kc, flag = kcmean(x,y,kc,k)    print(y,kc,type(kc))    print(x,y)import matplotlib.pyplot as pltplt.scatter(x,x,c=y,s=50,cmap="rainbow");plt.show()

#鸢尾花花瓣长度数据做聚类并用散点图显示。import numpy as npfrom sklearn.datasets import load_iris    iris = load_iris()x = iris.data[:,1]y = np.zeros(150)def initcenter(x,k):    #初始聚类中心数组    return x[0:k].reshape(k)def nearest(kc,i):       #数组中的值,与聚类中心最小距离所在类别的索引号    d = (abs(kc-i))    w = np.where(d == np.min(d))    return w[0][0]def xclassify(x,y,kc):    for i in range(x.shape[0]):       #对数组的每个值进行分类,shape[0]读取矩阵第一维度的长度        y[i] = nearest(kc,x[i])    return ydef kcmean(x,y,kc,k):     #计算各聚类新均值    l = list(kc)    flag = False    for c in range(k):        print(c)        m = np.where(y == c)        n=np.mean(x[m])        if l[c] != n:            l[c] = n            flag = True     #聚类中心发生变化            print(l,flag)    return (np.array(l),flag)k = 3kc = initcenter(x,k)flag = Trueprint(x,y,kc,flag)#判断聚类中心和目标函数的值是否发生改变,若不变,则输出结果,若改变,则返回2while flag:    y = xclassify(x,y,kc)    kc, flag = kcmean(x,y,kc,k)    print(y,kc,type(kc))    print(x,y)import matplotlib.pyplot as pltplt.scatter(x,x,c=y,s=50,cmap="Paired");plt.show()

 

#用sklearn.cluster.KMeans,鸢尾花花瓣长度数据做聚类并用散点图显示import matplotlib.pyplot as pltimport numpy as npfrom sklearn.datasets import load_irisiris = load_iris()X = iris.dataXfrom sklearn.cluster import KMeansest = KMeans(n_clusters = 3)est.fit(X)kc = est.cluster_centers_y_kmeans = est.predict(X)   #预测每个样本的聚类索引print(y_kmeans,kc)print(kc.shape,y_kmeans.shape,np.shape)plt.scatter(X[:,0],X[:,1],c=y_kmeans,s=50,cmap='rainbow');plt.show()

 

转载于:https://www.cnblogs.com/Tlzlykc/p/9848884.html

你可能感兴趣的文章
TCP/IP协议碎碎念
查看>>
Rss订阅
查看>>
Mac - gdb配置
查看>>
ART世界探险(16) - 快速编译器下的方法编译
查看>>
ubuntu安装经典的Gnome桌面
查看>>
Nginx unknown directive "xxxx" 错误解决办法
查看>>
Windows下查看文件MD5值
查看>>
CentOS 6.3下Samba服务器的安装与配置
查看>>
JAVA网络编程:一站式学习Wireshark系列教程
查看>>
Spring 异步消息
查看>>
杭电2017
查看>>
ElasticSearch5.* 删除index/type 数据restful API调用
查看>>
建立共享存储实验记录
查看>>
笨方法学python VII
查看>>
myeclipse控制台不显示tomcat信息
查看>>
cent os 下载地址
查看>>
SyntaxNet 中文模型的使用
查看>>
对libevent+多线程服务器模型的C++封装类
查看>>
iOS本地数据保存
查看>>
windows下mysql忘记root密码的解决办法
查看>>