python实现从excel表格中使用第二列第三列中的前六个数据为聚类中心,并同时对通过idle输入的多组二维数据进行聚类,将聚类后的点模糊判断到前六个点上某个聚类中心的k-means聚类,并根据聚类的类别给出对应表格中第四列和第五列的数据,并使其可视化的算法
时间: 2024-02-22 08:55:10 浏览: 22
好的,这里是实现该功能的Python代码,它能够同时处理多组二维数据:
```python
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
# 读取Excel表格数据
df = pd.read_excel('data.xlsx', usecols=[1, 2, 3, 4])
# 取前六个数据作为聚类中心
centers = df.head(6).iloc[:, [0, 1]].values
# 进行KMeans聚类
kmeans = KMeans(n_clusters=6, init=centers, n_init=1)
kmeans.fit(df.iloc[:, [0, 1]].values)
while True:
# 输入多组二维数据,进行聚类
data = input("请输入多组二维数据(格式为x1,y1,x2,y2,...,输入q结束): ")
if data == 'q':
break
data = data.split(",")
data = [float(x) for x in data]
data = [data[i:i+2] for i in range(0, len(data), 2)]
data = pd.DataFrame(data, columns=["x", "y"])
labels = kmeans.predict(data.values)
# 根据聚类的类别给出对应表格中第四列和第五列的数据
result = df[df["label"].isin(labels)].iloc[:, [2, 3]]
print("聚类结果:")
print(result)
# 可视化聚类结果
plt.scatter(df.iloc[:, 0], df.iloc[:, 1], c=kmeans.labels_)
plt.scatter(centers[:, 0], centers[:, 1], c='red', marker='x')
plt.scatter(data.iloc[:, 0], data.iloc[:, 1], c=labels, marker='o')
plt.show()
```
这个代码与前一个代码的区别在于,它使用了一个while循环来多次输入二维数据,然后进行聚类和可视化。在每次输入二维数据后,程序会输出聚类结果,并将输入的数据和聚类结果可视化。如果输入了q,则程序会退出循环。