python聚类算法指的是什么

这篇文章主要介绍了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聚类算法指的是什么”这篇文章对大家有帮助,同时也希望大家多多支持恰卡编程网,关注恰卡编程网行业资讯频道,更多相关知识等着你来学习!

发布于 2021-07-29 21:58:56
收藏
分享
海报
0 条评论
208
上一篇:python中threading实现线程的示例分析 下一篇:国内好用的ip地址有哪些特点
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码