creatDataSet = pd.read_excel(r"D:\1.xlsx") creatDataSet.head() X = creatDataSet[["CODE","FOR_INTEN","YEAR","FUNCTION","SITE","FOUNDATION","MAJ_STOREY"]] y = creatDataSet[['DAM_CLASS']] if __name__=='__main__': dataset = creatDataSet centroids, cluster = kmeans(list(dataset.values),2) print('质心为:%s' % centroids) print('集群为:%s' % cluster) for i in range(len(dataset)): plt.scatter(dataset[i][0],dataset[i][1], marker = 'o',color = 'green', s = 40 ,label = '原始点') # 记号形状 颜色 点的大小 设置标签 for j in range(len(centroids)): plt.scatter(centroids[j][0], centroids[j][1],marker='x',color='red',s=50,label='质心') plt.show()
时间: 2024-04-10 08:35:09 浏览: 98
根据你提供的代码,你想使用k-means算法对Excel数据进行聚类,并使用散点图可视化聚类结果。请注意,在你提供的代码中,`kmeans`函数并没有定义,所以在这里我假设你已经定义了这个函数。以下是一个修改后的示例代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.cluster import KMeans
# 读取Excel数据
creatDataSet = pd.read_excel(r"D:\1.xlsx")
# 提取特征列和标签列
X = creatDataSet[["CODE","FOR_INTEN","YEAR","FUNCTION","SITE","FOUNDATION","MAJ_STOREY"]]
y = creatDataSet[['DAM_CLASS']]
# 使用K-means进行聚类
kmeans = KMeans(n_clusters=2)
kmeans.fit(X)
# 获取质心和标签
centroids = kmeans.cluster_centers_
labels = kmeans.labels_
# 绘制散点图
plt.scatter(X.iloc[:, 0], X.iloc[:, 1], c=labels)
plt.scatter(centroids[:, 0], centroids[:, 1], marker='x', color='red', s=50, label='Centroids')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('K-means Clustering')
plt.legend()
plt.show()
```
在上述代码中,我们首先读取了Excel数据,并提取了特征列`X`和标签列`y`。然后,使用`KMeans`类创建一个K-means对象,并指定聚类的数量为2个。
接下来,使用`fit`方法对特征数据进行聚类,得到质心`centroids`和每个样本的标签`labels`。
最后,使用`matplotlib`库绘制散点图,其中x轴和y轴分别对应特征列中的第一个和第二个特征。通过使用聚类标签作为散点颜色,可以将不同聚类结果可视化。质心用红色的"X"标记表示。
请确保已安装pandas、sklearn和matplotlib库,并将Excel文件路径更改为你实际的文件路径。运行上述代码后,你将得到一个展示K-means聚类结果的散点图。
阅读全文