225_中国戏剧节

在机器学习中,当咱们要处理一个未符号的数据集时,称为“无监督学习”。有时咱们仅仅想知道咱们的数据是怎么组织起来的这样咱们就能知道数据是怎么组织起来的。聚类意味着对一组方针进行分组。

K-means聚类是无监督学习的一部分,咱们运用的是未符号的数据集,这个算法会主动为咱们将数据分组成聚类。它是现在最盛行、运用最广泛的聚类算法之一。它用于各种运用程序,例如商场细分,图画细分等。

该算法将承受两个输入:

a)K(它是您想要的群聚类数)

b)练习数据集

表明方式:K=聚类数C称为聚类质心m=练习示例数idxC(i)=已将实例X(i)分配给聚类的聚类质心

看一个示例,使您能够清楚地看到此符号

聚类分配过程:

在此过程中,咱们将依据数据会集最接近的聚类质心向数据会集分配一个聚类质心,并为分配的数据集上色。这是经过核算欧式间隔来完成的。

经过随机界说的聚类质心和聚类分配过程后,将如下图所示:

随机初始化

在聚类分配过程之后

移动质心的过程:

咱们要做的是获取两个聚类质心,即红x和蓝x,然后将它们移动到相同色彩点的平均值。因而,咱们要做的是检查一切赤色点并核算平均值,实际上,平均值是一切赤色点的方位,然后将赤色聚类质心移到那里。蓝色x也是如此。

核算出运动质心后,咱们能够从上图看到质心的方位发生了改变

K-均值的优化方针:

这称为distortion函数

部分最优:

不幸的是,经过随机初始化K-means算法也或许被卡在不同的部分最优值上,在左面的图中,蓝色的聚类捕获了很多的点,而赤色、绿色的聚类则对相对具有较少的点。

为了得到如图所示的最佳大局最优解,咱们能够屡次测验对聚类质心进行随机初始化,并屡次运转K-means算法,然后得到尽或许好的部分最优解或大局最优解。

挑选聚类数:

咱们一般知道K的值,不然咱们用肘部法。

咱们针对不同的K值(例如K=10到1)运转算法,并制作K值与distortion的联系。如图所示,挑选elbow点的K值。

运用Python完成:

导入Python库

importnumpyasnp\nimportpandasaspd\nimportmatplotlib.pyplotasplt

导入机器学习数据集

X=pd.read_csv("data1.csv")

可视化数据集

a=X['0'].values\nb=X['1'].values\nX=np.array(list(zip(a,b)))\nplt.scatter(a,b,c='black',s=7)

界说K值并随机初始化点

K=3\nc_x=np.random.randint(0,np.max(X),size=K)\nc_y=np.random.randint(0,np.max(X),size=K)\nc=np.array(list(zip(c_x,c_y)),dtype=np.float32)

咱们的聚类质心在这些点上,它们是随机挑选的

[[6.1.][4.5.][5.4.]]

聚类分配

将每个输入值分配给最近的中心

m=X.shape[0]\nidx=np.zeros(m)\nforiinrange(m):\ntemp=np.zeros(K)\nforjinrange(K):\ntemp[j]=np.sum((X[i,:]-c[j,:])**2)\nidx[i]=np.argmin(temp)

核算质心

咱们经过获取分配给该聚类的一切点的平均值来找到新质心。

foriinrange(K):\npoints=[X[j]forjinrange(len(X))ifidx[j]==i]\nc[i]=np.mean(points,axis=0)

进行可视化

colors=['r','g','b']\nfig,ax=plt.subplots()\nforiinrange(K):\npoints=np.array([X[j]forjinrange(len(X))ifidx[j]==i])\nax.scatter(points[:,0],points[:,1],c=colors[i])\nax.scatter(c[:,0],c[:,1],marker='*',s=200,c='#050505')

发布于 2023-12-28 09:12:49
收藏
分享
海报
4
目录

    推荐阅读