西瓜数据集(watermelon.txt)各个特征的含义如下: 使用Python将聚类结果表示在二维平面上。完整代码
时间: 2023-11-22 20:52:29 浏览: 169
西瓜数据集,用于判断西瓜好坏
以下是使用Python对西瓜数据集进行聚类并在二维平面上表示结果的完整代码:
```python
import numpy as np
import matplotlib.pyplot as plt
# 加载数据
data = np.loadtxt('watermelon.txt', delimiter=',', skiprows=1, usecols=(1, 2, 3, 4, 5, 6))
# 定义KMeans算法
class KMeans:
def __init__(self, k=2, max_iter=100):
self.k = k
self.max_iter = max_iter
def fit(self, data):
# 初始化聚类中心
self.centers = data[np.random.choice(len(data), size=self.k, replace=False)]
for _ in range(self.max_iter):
# 计算聚类结果
labels = np.argmin(np.sqrt(np.sum((data - self.centers[:, np.newaxis])**2, axis=2)), axis=0)
# 更新聚类中心
new_centers = np.array([data[labels == i].mean(axis=0) for i in range(self.k)])
# 如果聚类中心没有变化,则退出循环
if np.allclose(self.centers, new_centers):
break
self.centers = new_centers
return labels
# 运行KMeans算法
kmeans = KMeans(k=3, max_iter=100)
labels = kmeans.fit(data)
# 将聚类结果表示在二维平面上
colors = ['red', 'green', 'blue']
for i in range(kmeans.k):
plt.scatter(data[labels == i, 0], data[labels == i, 1], c=colors[i])
plt.show()
```
运行以上代码,将会得到聚类结果在二维平面上的可视化图像。其中,不同颜色的点表示不同的聚类簇。
阅读全文