试采用 sklearn 中的 KMeans 实现西瓜数据集4.0的k均值算法的学习过程。
时间: 2024-02-15 19:06:00 浏览: 98
好的,首先我们需要载入所需的库和数据集。这里我使用的是自带的西瓜数据集4.0。
```python
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
data = pd.read_csv('watermelon_4.csv')
X = data.iloc[:,1:3].values
```
接下来,我们可以设置 K 值,即聚类的个数。这里我设置为 3。
```python
k = 3
```
然后,我们可以使用 KMeans 函数进行训练。这里我设置了 n_init=10,表示进行 10 次不同的初始化,选择最好的一次结果作为最终结果。同时,设置 random_state=0,保证每次运行的结果相同。
```python
kmeans = KMeans(n_clusters=k, n_init=10, random_state=0).fit(X)
```
训练结束后,我们可以输出每个样本所属的聚类结果。
```python
labels = kmeans.labels_
print(labels)
```
最后,我们可以将聚类结果可视化。不同颜色的点表示不同的聚类结果。
```python
import matplotlib.pyplot as plt
colors = ['r', 'g', 'b']
for i in range(k):
plt.scatter(X[labels==i,0], X[labels==i,1], c=colors[i])
plt.show()
```
完整代码如下:
```python
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
data = pd.read_csv('watermelon_4.csv')
X = data.iloc[:,1:3].values
k = 3
kmeans = KMeans(n_clusters=k, n_init=10, random_state=0).fit(X)
labels = kmeans.labels_
print(labels)
colors = ['r', 'g', 'b']
for i in range(k):
plt.scatter(X[labels==i,0], X[labels==i,1], c=colors[i])
plt.show()
```
阅读全文