一、基本代码
sklearn.cluster.DBSCAN(eps=0.5, *, min_samples=5, metric='euclidean',metric_params=None, algorithm='auto', leaf_size=30, p=None, n_jobs=None)
参数说明:
(1)eps:邻域半径,默认值为0.5;
(2)min_samples:邻域中至少要包含最小数数目(MinPts),默认值为5;
(3)metric:距离度量,默认为欧几里得距离;
(4)p:闵可夫斯基距离中的参数
属性:
(1) core_sample_indices _: ndarray of shape(n_core_samples,),核心元素的索引
(2) components _: ndarray of shape(n_core_samples,n_features),训练得出的每一个核心元素构成的副本。
(3) labels _: ndarray of shape(n_samples):每一个点对应的标签,噪声点在最后
(4) n features in : int, Number of features seen during fit.
方法:
(1) fit(X[, y, sample_weight])
(2) fit_predict(X[, y, sample_weight])
案例实现
画图对比DBSCAN和kmeans
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_circles, make_blobs
from sklearn.cluster import DBSCAN, KMeans
# 生成数据集
X1, y1 = make_circles(n_samples=5000, factor=0.6, noise=0.05) # 生成圆形数据集
X2, y2 = make_blobs(n_samples=1000, n_features=2, centers=[[1.2, 1.2]], cluster_std=0.1, random_state=9) # 生成高斯分布数据集
# 合并数据集
X = np.r_[X1, X2]
# 绘制生成的数据点
plt.scatter(X[:, 0], X[:, 1], marker='o') # 散点图表示数据点
plt.title("Generated Data") # 设置标题
plt.show()
# 使用KMeans算法进行聚类
kmeans = KMeans(n_clusters=3, random_state=9) # 创建KMeans模型,指定簇数为3
y_pred_kmeans = kmeans.fit_predict(X) # 对数据进行KMeans聚类预测
# 绘制KMeans聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_pred_kmeans) # 根据KMeans聚类结果着色
plt.title("KMeans Clustering") # 设置标题
plt.show()
# 使用DBSCAN算法进行聚类
dbscan = DBSCAN(eps=0.1, min_samples=10) # 创建DBSCAN模型,设置半径和最小样本数
y_pred_dbscan = dbscan.fit_predict(X) # 对数据进行DBSCAN聚类预测
# 绘制DBSCAN聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_pred_dbscan) # 根据DBSCAN聚类结果着色
plt.title("DBSCAN Clustering") # 设置标题
plt.show()
347

被折叠的 条评论
为什么被折叠?



