python聚类算法指的是什么
这篇文章主要介绍了python聚类算法指的是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
说明
1、聚类常用于数据探索或挖掘前期,在没有先验经验的背景下进行探索性分析,也适用于样本量大的数据预处理。
2、常用的聚类算法分为基于划分、层次、密度、网格、统计、模型等类型的算法。典型算法包括K均值(经典聚类算法)、DBSCAN、两步聚类、BIRCH、谱聚类等。
聚类分析可以解决的问题包括:数据集可以分为几类,每个类别有多少样本,不同类别中每个变量的强弱关系,不同类别的典型特征是什么。
聚类算法之K均值实例
importnumpyasnp importmatplotlib.pyplotasplt #两点距离 defdistance(e1,e2): returnnp.sqrt((e1[0]-e2[0])**2+(e1[1]-e2[1])**2) #集合中心 defmeans(arr): returnnp.array([np.mean([e[0]foreinarr]),np.mean([e[1]foreinarr])]) #arr中距离a最远的元素,用于初始化聚类中心 deffarthest(k_arr,arr): f=[0,0] max_d=0 foreinarr: d=0 foriinrange(k_arr.__len__()): d=d+np.sqrt(distance(k_arr[i],e)) ifd>max_d: max_d=d f=e returnf #arr中距离a最近的元素,用于聚类 defclosest(a,arr): c=arr[1] min_d=distance(a,arr[1]) arr=arr[1:] foreinarr: d=distance(a,e) ifd<min_d: min_d=d c=e returnc if__name__=="__main__": ##生成二维随机坐标,手上有数据集的朋友注意,理解arr改起来就很容易了 ##arr是一个数组,每个元素都是一个二元组,代表着一个坐标 ##arr形如:[(x1,y1),(x2,y2),(x3,y3)...] arr=np.random.randint(100,size=(100,1,2))[:,0,:] ##初始化聚类中心和聚类容器 m=5 r=np.random.randint(arr.__len__()-1) k_arr=np.array([arr[r]]) cla_arr=[[]] foriinrange(m-1): k=farthest(k_arr,arr) k_arr=np.concatenate([k_arr,np.array([k])]) cla_arr.append([]) ##迭代聚类 n=20 cla_temp=cla_arr foriinrange(n):#迭代n次 foreinarr:#把集合里每一个元素聚到最近的类 ki=0#假定距离第一个中心最近 min_d=distance(e,k_arr[ki]) forjinrange(1,k_arr.__len__()): ifdistance(e,k_arr[j])<min_d:#找到更近的聚类中心 min_d=distance(e,k_arr[j]) ki=j cla_temp[ki].append(e) #迭代更新聚类中心 forkinrange(k_arr.__len__()): ifn-1==i: break k_arr[k]=means(cla_temp[k]) cla_temp[k]=[] ##可视化展示 col=['HotPink','Aqua','Chartreuse','yellow','LightSalmon'] foriinrange(m): plt.scatter(k_arr[i][0],k_arr[i][1],linewidth=10,color=col[i]) plt.scatter([e[0]foreincla_temp[i]],[e[1]foreincla_temp[i]],color=col[i]) plt.show()
感谢你能够认真阅读完这篇文章,希望小编分享的“python聚类算法指的是什么”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!
推荐阅读
-
Python中怎么动态声明变量赋值
这篇文章将为大家详细讲解有关Python中怎么动态声明变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中变量的存储原理是什么
-
Python中怎么引用传递变量赋值
这篇文章将为大家详细讲解有关Python中怎么引用传递变量赋值,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文...
-
python中怎么获取程序执行文件路径
python中怎么获取程序执行文件路径,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的...
-
Python中如何获取文件系统的使用率
Python中如何获取文件系统的使用率,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴...
-
Python中怎么获取文件的创建和修改时间
这篇文章将为大家详细讲解有关Python中怎么获取文件的创建和修改时间,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读...
-
python中怎么获取依赖包
今天就跟大家聊聊有关python中怎么获取依赖包,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据...
-
python怎么实现批量文件加密功能
-
python中怎么实现threading线程同步
小编给大家分享一下python中怎么实现threading线程同步,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!...
-
python下thread模块创建线程的方法
本篇内容介绍了“python下thread模块创建线程的方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来...