#coding=utf-8
import numpy as np
from sklearn.cluster import DBSCAN
import matplotlib.pyplot as plt
#国家面积和人口
X = [
[9670250, 1392358258], # 中国
[2980000, 1247923065], # 印度
[9629091, 317408015], # 美国
[8514877, 201032714], # 巴西
[377873, 127270000], # 日本
[7692024, 23540517], # 澳大利亚
[9984670, 34591000], # 加拿大
[17075400, 143551289], # 俄罗斯
[513115, 67041000], # 泰国
[181035, 14805358], # 柬埔寨
[99600, 50400000], # 韩国
[120538, 24052231]] # 朝鲜
#转换成numpy array
X = np.array(X)
#做归一化
a = X[:, :1] / 17075400.0 * 10000
b = X[:, 1:] / 1392358258.0 * 10000
X = np.concatenate((a, b), axis=1) # 合并数组a,b 按横轴方向
#现在把训练数据和对应的分类放入分类器中进行训练,这里没有出现噪点是因为把min_samples#设置成了1
cls = DBSCAN(eps=2000, min_samples=1).fit(X) # min_samples 聚簇最小应该拥有的向量个数
'''
eps的含义是设置一个阈值,在根据密度向外扩展的过程中如果发现在这个阈值距离范围内找不到向量,
那么就认为这个聚簇已经查找完毕。在这个例子中设置的是2000,
因为归一化以后所有的变量都落在一个10000×10000的区间单位
密度聚类sklearn.cluster包DBSCAN
最新推荐文章于 2024-06-03 17:20:08 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)