美文网首页
DBSCAN聚类

DBSCAN聚类

作者: 还闹不闹 | 来源:发表于2020-06-27 21:16 被阅读0次
#!/usr/bin/python
# coding=utf-8
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import datasets
from sklearn.cluster import KMeans, DBSCAN
# 画图支持中文显示
from pylab import *
mpl.rcParams['font.sans-serif'] = ['SimHei']
# 负号
plt.rcParams['axes.unicode_minus'] = False

# 显示所有列
pd.set_option('display.max_columns', None)
# 显示所有行
pd.set_option('display.max_rows', None)
# 设置value的显示长度为10000,默认为50
pd.set_option('display.width',10000)
pd.set_option('display.unicode.ambiguous_as_wide', True)
pd.set_option('display.unicode.east_asian_width', True)
#
np.set_printoptions(linewidth=1000)

# %matplotlib inline

# 造数据
X1, y1 = datasets.make_circles(n_samples=5000, factor=.6, noise=.05, random_state=9) # 非凸
X2, y2 = datasets.make_blobs(n_samples=1000, n_features=2, centers=[[1.2,1.2]], cluster_std=[[.1]], random_state=9) # 凸
'''DBSCAN在非凸数据聚类上有优势'''
print(type(X1), type(y2))
print('X1:\n', X1[0:3], '\ny1:\n', y1[0:3], '\nX2:\n', X2[0:3], '\ny2:\n', y2[0:3])

X = np.concatenate((X1, X2))
Y = np.concatenate((y1, y2))
print('X:\n', X[0:3], '\nY:\n', Y[0:3])
plt.scatter(X[:, 0], X[:, 1], marker='o')
plt.show()

# k-means
y_pred = KMeans(n_clusters=3, random_state=9).fit_predict(X)
plt.figure()
plt.title('k-means聚类')
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.savefig('G:\\rnn\k-means聚类.png')
plt.show()

# DBSCAN
y_pred = DBSCAN(eps=0.1, min_samples=10).fit_predict(X) # 减少ϵ-邻域的大小,默认是0.5,减到0.1
plt.figure()
plt.title('DBSCAN聚类')
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.savefig('G:\\rnn\DBSCAN聚类.png')
plt.show()
G:\rasa_demo\decision_tree\venv\Scripts\python.exe G:/rasa_demo/decision_tree/dbscan.py
<class 'numpy.ndarray'> <class 'numpy.ndarray'>
X1:
 [[-0.86315295  0.47850988]
 [ 0.7739279  -0.72241513]
 [ 0.60629645  0.24250833]] 
y1:
 [0 0 1] 
X2:
 [[1.23974288 1.36597036]
 [1.19910822 1.35391397]
 [1.11447743 1.20255205]] 
y2:
 [0 0 0]
X:
 [[-0.86315295  0.47850988]
 [ 0.7739279  -0.72241513]
 [ 0.60629645  0.24250833]] 
Y:
 [0 0 1]

Process finished with exit code 0

相关文章

  • 13 聚类算法 - 谱聚类

    11 聚类算法 - 密度聚类 - DBSCAN、MDCA12 聚类算法 - 代码案例五 - 密度聚类(DBSCAN...

  • 3 聚类 - DBSCAN

    DBSCAN DBSCAN: 具有噪声的基于密度的空间聚类 DBSCAN理解 Epsilon聚点搜索范围,如果范围...

  • 无监督学习 - 聚类 - DBSCAN

    DBSCAN密度聚类DBSCAN算法是一种基于密度的聚类算法: 聚类的时候不需要预先指定簇的个数 最终的簇个数不定...

  • Clustering

    本文结构安排 经典聚类算法:线性聚类 Kmeans 经典聚类算法:非线性聚类 DBSCAN、谱聚类 新兴聚类算法:...

  • CH8 Clustering

    K-means Cluster 4、DBSCAN算法的聚类过程 DBSCAN算法基于一个事实:一个聚类可以由其中的...

  • DBSCAN聚类

  • DBSCAN 聚类

    以下使用Out[数字]:的方式表示代码输出结果 DBSCAN 密度聚类算法 密度聚类是一类常用并且有效的聚类方法,...

  • 聚类算法总结

    1、K 均值聚类 2、凝聚聚类 3、DBSCAN 算法 4、聚类算法的评估

  • 2019-03-17派森学习第119天

    DBSCAN聚类算法 DBSCAN实验网站 半径设置过小: 半径稍微设置大一些,就比较好了: 各种聚类算法准确度对...

  • 机器学习(七) 聚类之DBSCAN

    针对聚类K-means算法中不能对特定形状的样本进行分类,提出了一种新的聚类算法(DBSCAN)。DBSCAN 是...

网友评论

      本文标题:DBSCAN聚类

      本文链接:https://www.haomeiwen.com/subject/skavfktx.html