无监督机器学习 K-Means算法python测试
最近在自学吴恩达老师的机器学习视频,学到无监督机器学习K-means算法,自己用python写一些代码加深对此算法的理解
import numpy as np
import matplotlib.pyplot as plt
array=np.random.randn(2,100)
x=array[0]
y=array[1]
x0=np.random.randn()
y0=np.random.randn()
x1=np.random.randn()
y1=np.random.randn()
x2=np.random.randn()
y2=np.random.randn()
while True:
class0x=[]
class0y=[]
class1x=[]
class1y=[]
class2x=[]
class2y=[]
x00=x0
y00=y0
x11=x1
y11=y1
x11=x1
y11=y1
for i in range(len(x)):
d0=((x0-x[i])**2+(y0-y[i])**2)
d1=((x1-x[i])**2+(y1-y[i])**2)
d2=((x2-x[i])**2+(y2-y[i])**2)
if d0==min(d0,d1,d2):
class0x.append(x[i])
class0y.append(y[i])
if d1==min(d0,d1,d2):
class1x.append(x[i])
class1y.append(y[i])
if d2==min(d0,d1,d2):
class2x.append(x[i])
class2y.append(y[i])
x0=np.mean(class0x+[0])
y0=np.mean(class0y+[0])
x1=np.mean(class1x+[0])
y1=np.mean(class1y+[0])
x2=np.mean(class2x+[0])
y2=np.mean(class2y+[0])
if x00==x0 and y00==y0 and x11==x1 and y11==y1:
break
plt.scatter(x0,y0,c='r',marker='x')
plt.scatter(x1,y1,c='b',marker='x')
plt.scatter(x2,y2,c='g',marker='x')
plt.scatter(class0x,class0y,c='r',marker='o')
plt.scatter(class1x,class1y,c='g',marker='o')
plt.scatter(class2x,class2y,c='b',marker='o')
plt.show()
![Alt](https://img-blog.csdnimg.cn/20191228175326777.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDU5NDM0OA==,size_16,color_FFFFFF,t_70)