基于模拟数据sklearn.datasets.make_classification 生成4个特征,4个簇的模拟数据集,分别使用KMeans聚类、DBSCAN算法对其进行聚类,生成二维结果图像
时间: 2024-04-02 19:36:48 浏览: 87
好的,我会根据你的要求来进行操作。
首先,我们需要导入相关的库:sklearn、matplotlib 和 numpy。代码如下所示:
```python
from sklearn.datasets import make_classification
from sklearn.cluster import KMeans, DBSCAN
import matplotlib.pyplot as plt
import numpy as np
```
然后,我们可以使用 make_classification 函数来生成模拟数据集。代码如下所示:
```python
X, y = make_classification(n_features=4, n_clusters_per_class=1, n_samples=400, n_informative=4, n_redundant=0, random_state=42)
```
这里生成了一个包含 400 个样本的数据集,每个样本有 4 个特征,共有 4 个簇。接下来,我们可以使用 KMeans 算法和 DBSCAN 算法来对数据进行聚类。代码如下所示:
```python
kmeans = KMeans(n_clusters=4, random_state=42)
kmeans_labels = kmeans.fit_predict(X)
dbscan = DBSCAN(eps=0.5, min_samples=10)
dbscan_labels = dbscan.fit_predict(X)
```
这里使用 KMeans 算法和 DBSCAN 算法分别对数据进行聚类,并将每个样本所属的簇的标签存储在 kmeans_labels 和 dbscan_labels 中。接下来,我们可以将数据集在二维平面上进行可视化,展示聚类的效果。代码如下所示:
```python
fig, axs = plt.subplots(1, 2, figsize=(12, 6))
# KMeans
axs[0].scatter(X[:, 0], X[:, 1], c=kmeans_labels)
axs[0].set_title("KMeans")
# DBSCAN
axs[1].scatter(X[:, 0], X[:, 1], c=dbscan_labels)
axs[1].set_title("DBSCAN")
plt.show()
```
这里使用 subplots 函数创建了一个 1x2 的图像区域,然后在左边的子图中展示了 KMeans 算法的聚类结果,在右边的子图中展示了 DBSCAN 算法的聚类结果。最后,使用 show 函数展示出整个图像。运行完整的代码可以得到如下的图像结果:
![KMeans and DBSCAN Clustering Results](https://i.imgur.com/10jDw6W.png)
阅读全文