基于模拟数据sklearn.datasets.make_classification 生成4个特征,4个簇的模拟数据集,分别使用KMeans聚类、DBSCAN算法对其进行聚类
时间: 2024-03-22 18:39:18 浏览: 72
好的,下面是使用KMeans聚类、DBSCAN算法对4个特征、4个簇的模拟数据进行聚类的示例代码:
```python
# 导入必要的库
from sklearn.datasets import make_classification
from sklearn.cluster import KMeans, DBSCAN
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# 生成模拟数据
X, y = make_classification(n_samples=1000, n_features=4, n_informative=4, n_redundant=0, n_clusters_per_class=1, class_sep=0.5, random_state=42)
# 使用KMeans聚类
kmeans = KMeans(n_clusters=4, random_state=42)
kmeans_labels = kmeans.fit_predict(X)
# 使用DBSCAN算法聚类
dbscan = DBSCAN(eps=0.3, min_samples=5)
dbscan_labels = dbscan.fit_predict(X)
# 绘制聚类结果图像
fig = plt.figure(figsize=(18, 6))
# 绘制KMeans聚类结果
ax1 = fig.add_subplot(1, 2, 1, projection='3d')
ax1.scatter(X[:, 0], X[:, 1], X[:, 2], c=kmeans_labels, cmap='rainbow')
ax1.set_title('KMeans Clustering')
ax1.set_xlabel('Feature 1')
ax1.set_ylabel('Feature 2')
ax1.set_zlabel('Feature 3')
ax1.view_init(elev=20, azim=30)
# 绘制DBSCAN聚类结果
ax2 = fig.add_subplot(1, 2, 2, projection='3d')
ax2.scatter(X[:, 0], X[:, 1], X[:, 2], c=dbscan_labels, cmap='rainbow')
ax2.set_title('DBSCAN Clustering')
ax2.set_xlabel('Feature 1')
ax2.set_ylabel('Feature 2')
ax2.set_zlabel('Feature 3')
ax2.view_init(elev=20, azim=30)
plt.show()
```
在上述代码中,我们使用`make_classification`函数生成了一个包含四个特征、四个簇的模拟数据集。接着,我们分别使用KMeans聚类、DBSCAN算法对数据集进行聚类,并将聚类结果绘制成3D图像。
在图像中,我们可以看到KMeans聚类和DBSCAN算法聚类的结果。其中,KMeans聚类将数据集分成了四个簇,而DBSCAN算法则将数据集中的一些异常点(如图中的蓝色点)作为噪声进行了处理。不同的簇用不同的颜色表示,可以清晰地看出聚类的效果。
阅读全文