如何解决用Python编写KMeans聚类算法时遇到的问题
我试图编写一个基本程序,以使用K-Means将 iris数据集聚类为4个聚类。我不知道为什么它真的不好。谁能告诉我为什么它不起作用。
这是我的代码:
import pandas as pd
import numpy as np
import random
from sklearn.datasets import load_iris
iris= load_iris()
Iris1= pd.DataFrame(iris.data)
Iris= Iris1.copy()
rn= random.sample(range(150),4)
rn.sort()
rn
然后(c1是cluster1,x1是其中心):
x1= iris.data[rn[0]]
x2= iris.data[rn[1]]
x3= iris.data[rn[2]]
x4= iris.data[rn[3]]
c1= np.array(iris.data[rn[0]])
c2= np.array(iris.data[rn[1]])
c3= np.array(iris.data[rn[2]])
c4= np.array(iris.data[rn[3]])
print(c1,c2,c3,c4)
for k in range(146):
d=[]
for j in np.arange(150):
d.append((np.sum((x1- Iris.values[j])**2))**0.5)
for j in np.arange(150):
d.append((np.sum((x2- Iris.values[j])**2))**0.5)
for j in np.arange(150):
d.append((np.sum((x3- Iris.values[j])**2))**0.5)
for j in np.arange(150):
d.append((np.sum((x4- Iris.values[j])**2))**0.5)
s=np.asarray(d)
y= s > 0
x= s[y].argmin()
if x < 150:
c1= np.vstack((c1,iris.data[x]))
x1= np.array([c1[:,0].mean(),c1[:,1].mean(),2].mean(),3].mean()])
Iris.values[x]=np.nan
elif 149 < x < 300:
c2= np.vstack((c2,iris.data[x-150]))
x2= np.array([c2[:,c2[:,3].mean()])
Iris.values[x-150]=np.nan
elif 299 < x < 459:
c3= np.vstack((c3,iris.data[x-300]))
x3= np.array([c3[:,c3[:,3].mean()])
Iris.values[x-300]=np.nan
else:
c4= np.vstack((c4,iris.data[x-450]))
x4= np.array([c4[:,c4[:,3].mean()])
Iris.values[x-450]=np.nan
print(c1)
print(c2)
print(c3)
print(c4)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。