写出K值聚类的实验报告及代码
时间: 2024-01-02 21:03:47 浏览: 73
K值聚类(K-means clustering)是一种常见的无监督学习算法,用于将数据点分成多个组或簇。该算法的目标是将数据点分配到距离其最近的中心点(簇心)所代表的簇中。在本文中,我们将介绍如何使用Python实现K值聚类,并给出一个简单的实验报告。
实验数据
我们将使用sklearn中的make_blobs函数生成一个随机数据集。该函数可以生成多个高斯分布的数据集,用于模拟聚类。
```python
from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=1000, centers=3, n_features=2, random_state=42)
```
在这个数据集中,我们生成了1000个数据点,分成3个簇,每个簇有2个特征。这个数据集将用于后面的K值聚类实验。
K值聚类实现
我们将使用Python中的sklearn库实现K值聚类。该库提供了KMeans类,用于实现K值聚类。
```python
from sklearn.cluster import KMeans
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
```
在这个例子中,我们将数据集分成3个簇,并使用KMeans类进行聚类。聚类之后,我们可以使用KMeans类的predict方法来预测新的数据点所属的簇。
```python
new_data = [[-10, -5], [0, 0], [10, 5]]
kmeans.predict(new_data)
```
实验结果
我们可以使用matplotlib库将聚类结果可视化。
```python
import matplotlib.pyplot as plt
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker='x', s=100, linewidths=3, color='r')
plt.show()
```
在这个例子中,我们将数据点可视化并用不同颜色表示不同的簇。在图中,红色的叉号表示簇心。
完整代码
```python
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
X, y = make_blobs(n_samples=1000, centers=3, n_features=2, random_state=42)
kmeans = KMeans(n_clusters=3, random_state=42)
kmeans.fit(X)
new_data = [[-10, -5], [0, 0], [10, 5]]
kmeans.predict(new_data)
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], marker='x', s=100, linewidths=3, color='r')
plt.show()
```
实验报告
在上述实验中,我们使用Python的sklearn库实现了K值聚类算法,并使用matplotlib库可视化了聚类结果。我们生成了1000个数据点,分成3个簇,并使用KMeans类将其聚类。我们还使用predict方法来预测新数据点所属的簇。
在实际应用中,K值聚类可以用于数据挖掘、图像处理和自然语言处理等领域。K值聚类是一种简单但有效的无监督学习算法,可以帮助我们理解数据集的结构和特征。
阅读全文