python实现从excel表格中使用第二列第三列中的前六个数据为聚类中心,并对通过idle输入的多组二维数据进行聚类,将聚类后的点模糊判断到前六个点上某个聚类中心的k-means聚类,并根据聚类的类别给出对应表格中第四列和第五列的数据,并使其可视化的算法
时间: 2024-02-22 17:55:03 浏览: 73
Kmeans聚类算法,PCA降维,层次聚类算法,用Python实现
好的,这里是实现该功能的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:
# 输入二维数据,进行聚类
x, y = input("请输入二维数据(格式为x,y,输入q结束): ").split(",")
if x == 'q' or y == 'q':
break
label = kmeans.predict([[x, y]])
# 根据聚类的类别给出对应表格中第四列和第五列的数据
result = df[kmeans.labels_ == label[0]].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(float(x), float(y), c='green', marker='o')
plt.show()
```
这个代码与前一个代码的区别在于,它使用了一个while循环来多次输入二维数据,然后进行聚类和可视化。在每次输入二维数据后,程序会输出聚类结果,并将输入的数据和聚类结果可视化。如果输入了q,则程序会退出循环。
阅读全文