createDataSet = pd.read_excel(r"D:\1.xlsx") createDataSet.head() X = createDataSet[["CODE","FOR_INTEN","YEAR","FUNCTION","SITE","FOUNDATION","MAJ_STOREY"]] y = createDataSet[['DAM_CLASS']] if __name__=='__main__': dataset = createDataSet() centroids, cluster = kmeans(dataset, 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 09:30:37 浏览: 85
CSharpCreateshpsaveshp.rar_GIS编程_C#_
这段代码看起来是进行k-means聚类算法的操作。首先,通过`pd.read_excel()`函数读取了一个Excel文件,并使用`head()`函数查看前几行数据。
接下来,根据代码中的特征列和目标列的名字,将对应的数据分别赋值给变量X和y。
然后,在`if __name__=='__main__':`的条件下,创建了一个`dataset`变量,但是它没有被定义。我推测你可能是想使用之前读取的Excel数据集`createDataSet`,所以将它赋值给了`dataset`变量。
接下来,调用了一个名为`kmeans()`的函数,传入了数据集和聚类数目2。这个函数应该是使用k-means算法实现的,但是在提供的代码中找不到对应的函数实现。
然后,通过循环遍历数据集和质心,并使用`plt.scatter()`函数将原始点和质心进行可视化展示。
最后,调用`plt.show()`函数显示图像。
请注意,这段代码中有一些问题需要解决:
1. 缺少`kmeans()`函数的实现,需要定义一个k-means聚类算法的函数。
2. 在循环中使用`plt.scatter()`函数时,变量`dataset`可能需要改为`createDataSet`。
3. 缺少对数据进行标准化或归一化的步骤,这在使用k-means算法之前是常见的预处理步骤。
希望以上信息对你有所帮助。如果有任何问题,请随时提问。
阅读全文