python如何用kmeans实现正态分布
时间: 2024-10-20 11:05:39 浏览: 33
在Python中,我们可以使用scikit-learn库来实现K-means聚类算法,这是一个常见的用于无监督学习的数据分群方法。对于正态分布的数据,K-means通常可以工作得很好,因为它能够发现数据集中的自然聚集点。
以下是一个简单的步骤来使用K-means对正态分布数据进行聚类:
1. **导入所需的库**:
```python
import numpy as np
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
```
2. **生成正态分布数据**:
```python
# 定义随机数生成器,设置随机状态以便复现结果
np.random.seed(0)
# 生成二维正态分布数据
n_samples = 500
mean = [0, 0]
cov = [[1, 0], [0, 1]] # 简单的方差为1的协方差矩阵
data = np.random.multivariate_normal(mean, cov, n_samples)
```
3. **初始化并运行K-means**:
```python
# 设定想要找到的簇的数量,这里是3个簇
kmeans = KMeans(n_clusters=3, random_state=0)
kmeans.fit(data)
```
4. **可视化聚类结果**:
```python
# 绘制原始数据以及聚类后的中心点
plt.scatter(data[:, 0], data[:, 1], c=kmeans.labels_)
centroids = kmeans.cluster_centers_
plt.scatter(centroids[:, 0], centroids[:, 1], s=300, c='red')
plt.title('K-means Clustering of Gaussian Data')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()
```
在这个例子中,如果你的数据确实服从正态分布,K-means应该能找到接近原数据分布的聚类中心。
阅读全文