当前位置:网站首页>Tâche 6: regroupement DBSCAN
Tâche 6: regroupement DBSCAN
2022-07-03 01:34:00 【Zstar - _】
Exigences
Réalisation de la programmationDBSCANRegroupement des données suivantes
Acquisition de données:https://download.csdn.net/download/qq1198768105/85865302
Bibliothèque de guides et paramètres globaux
from scipy.io import loadmat
import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import DBSCAN
from sklearn import datasets
import pandas as pd
plt.rcParams['font.sans-serif'] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
DBSCAN Description des paramètres de regroupement
eps:ϵ-Seuil de distance pour le voisinage,Distance de l'échantillon supérieure àϵLe point d'échantillonnage n'est pasϵ-Dans le quartier,La valeur par défaut est0.5.
min_samples:Nombre minimum de points formant une zone de haute densité.Le quartier des mots en tant que point central(C'est - à - dire qu'il est centré,epsEst un cercle de rayon, Y compris les points sur le cercle ) Nombre minimal d'échantillons dans ( Y compris le point lui - même ).
Siy=-1, Est le point d'exception
Parce queDBSCAN Catégorie générée incertaine , Ainsi, une fonction est définie pour filtrer les paramètres les plus appropriés qui correspondent à la catégorie spécifiée .
Le critère approprié est le nombre minimum de points anormaux
def search_best_parameter(N_clusters, X):
min_outliners = 999
best_eps = 0
best_min_samples = 0
# Itérer différemmentepsValeur
for eps in np.arange(0.001, 1, 0.05):
# Itérer différemmentmin_samplesValeur
for min_samples in range(2, 10):
dbscan = DBSCAN(eps=eps, min_samples=min_samples)
# Ajustement du modèle
y = dbscan.fit_predict(X)
# Compter le nombre de grappes sous chaque combinaison de paramètres(-1Indique un point d'exception)
if len(np.argwhere(y == -1)) == 0:
n_clusters = len(np.unique(y))
else:
n_clusters = len(np.unique(y)) - 1
# Nombre de points d'exception
outliners = len([i for i in y if i == -1])
if outliners < min_outliners and n_clusters == N_clusters:
min_outliners = outliners
best_eps = eps
best_min_samples = min_samples
return best_eps, best_min_samples
# Importer des données
colors = ['green', 'red', 'blue']
smile = loadmat('data-Regroupement de la densité/smile.mat')
smileDonnées
X = smile['smile']
eps, min_samples = search_best_parameter(3, X)
dbscan = DBSCAN(eps=eps, min_samples=min_samples)
y = dbscan.fit_predict(X)
# Visualisation des résultats du regroupement
plt.figure(figsize=(20, 15))
plt.subplot(2, 2, 1)
for i in range(len(smile['smile'])):
plt.scatter(smile['smile'][i][0], smile['smile'][i][1],
color=colors[int(smile['smile'][i][2])])
plt.title("Données brutes")
plt.subplot(2, 2, 2)
for i in range(len(y)):
plt.scatter(smile['smile'][i][0], smile['smile'][i][1], color=colors[y[i]])
plt.title(" Données après regroupement ")

sizes5Données
# Importer des données
colors = ['blue', 'green', 'red', 'black', 'yellow']
sizes5 = loadmat('data-Regroupement de la densité/sizes5.mat')
X = sizes5['sizes5']
eps, min_samples = search_best_parameter(4, X)
dbscan = DBSCAN(eps=eps, min_samples=min_samples)
y = dbscan.fit_predict(X)
# Visualisation des résultats du regroupement
plt.figure(figsize=(20, 15))
plt.subplot(2, 2, 1)
for i in range(len(sizes5['sizes5'])):
plt.scatter(sizes5['sizes5'][i][0], sizes5['sizes5']
[i][1], color=colors[int(sizes5['sizes5'][i][2])])
plt.title("Données brutes")
plt.subplot(2, 2, 2)
for i in range(len(y)):
if y[i] != -1:
plt.scatter(sizes5['sizes5'][i][0], sizes5['sizes5']
[i][1], color=colors[y[i]])
plt.title(" Données après regroupement ")

square1Données
# Importer des données
colors = ['green', 'red', 'blue', 'black']
square1 = loadmat('data-Regroupement de la densité/square1.mat')
X = square1['square1']
eps, min_samples = search_best_parameter(4, X)
dbscan = DBSCAN(eps=eps, min_samples=min_samples)
y = dbscan.fit_predict(X)
# Visualisation des résultats du regroupement
plt.figure(figsize=(20, 15))
plt.subplot(2, 2, 1)
for i in range(len(square1['square1'])):
plt.scatter(square1['square1'][i][0], square1['square1']
[i][1], color=colors[int(square1['square1'][i][2])])
plt.title("Données brutes")
plt.subplot(2, 2, 2)
for i in range(len(y)):
plt.scatter(square1['square1'][i][0], square1['square1']
[i][1], color=colors[y[i]])
plt.title(" Données après regroupement ")

square4Données
# Importer des données
colors = ['blue', 'green', 'red', 'black',
'yellow', 'brown', 'orange', 'purple']
square4 = loadmat('data-Regroupement de la densité/square4.mat')
X = square4['b']
eps, min_samples = search_best_parameter(5, X)
dbscan = DBSCAN(eps=eps, min_samples=min_samples)
y = dbscan.fit_predict(X)
# Visualisation des résultats du regroupement
plt.figure(figsize=(20, 15))
plt.subplot(2, 2, 1)
for i in range(len(square4['b'])):
plt.scatter(square4['b'][i][0], square4['b']
[i][1], color=colors[int(square4['b'][i][2])])
plt.title("Données brutes")
plt.subplot(2, 2, 2)
for i in range(len(y)):
plt.scatter(square4['b'][i][0], square4['b']
[i][1], color=colors[y[i]])
plt.title(" Données après regroupement ")

spiralDonnées
# Importer des données
colors = ['green', 'red']
spiral = loadmat('data-Regroupement de la densité/spiral.mat')
X = spiral['spiral']
eps, min_samples = search_best_parameter(2, X)
dbscan = DBSCAN(eps=eps, min_samples=min_samples)
y = dbscan.fit_predict(X)
# Visualisation des résultats du regroupement
plt.figure(figsize=(20, 15))
plt.subplot(2, 2, 1)
for i in range(len(spiral['spiral'])):
plt.scatter(spiral['spiral'][i][0], spiral['spiral']
[i][1], color=colors[int(spiral['spiral'][i][2])])
plt.title("Données brutes")
plt.subplot(2, 2, 2)
for i in range(len(y)):
plt.scatter(spiral['spiral'][i][0], spiral['spiral']
[i][1], color=colors[y[i]])
plt.title(" Données après regroupement ")

moonDonnées
# Importer des données
colors = ['green', 'red']
moon = loadmat('data-Regroupement de la densité/moon.mat')
X = moon['a']
eps, min_samples = search_best_parameter(2, X)
dbscan = DBSCAN(eps=eps, min_samples=min_samples)
y = dbscan.fit_predict(X)
# Visualisation des résultats du regroupement
plt.figure(figsize=(20, 15))
plt.subplot(2, 2, 1)
for i in range(len(moon['a'])):
plt.scatter(moon['a'][i][0], moon['a']
[i][1], color=colors[int(moon['a'][i][2])])
plt.title("Données brutes")
plt.subplot(2, 2, 2)
for i in range(len(y)):
plt.scatter(moon['a'][i][0], moon['a']
[i][1], color=colors[y[i]])
plt.title(" Données après regroupement ")

longDonnées
# Importer des données
colors = ['green', 'red']
long = loadmat('data-Regroupement de la densité/long.mat')
X = long['long1']
eps, min_samples = search_best_parameter(2, X)
dbscan = DBSCAN(eps=eps, min_samples=min_samples)
y = dbscan.fit_predict(X)
# Visualisation des résultats du regroupement
plt.figure(figsize=(20, 15))
plt.subplot(2, 2, 1)
for i in range(len(long['long1'])):
plt.scatter(long['long1'][i][0], long['long1']
[i][1], color=colors[int(long['long1'][i][2])])
plt.title("Données brutes")
plt.subplot(2, 2, 2)
for i in range(len(y)):
plt.scatter(long['long1'][i][0], long['long1']
[i][1], color=colors[y[i]])
plt.title(" Données après regroupement ")

2d4cDonnées
# Importer des données
colors = ['green', 'red', 'blue', 'black']
d4c = loadmat('data-Regroupement de la densité/2d4c.mat')
X = d4c['a']
eps, min_samples = search_best_parameter(4, X)
dbscan = DBSCAN(eps=eps, min_samples=min_samples)
y = dbscan.fit_predict(X)
# Visualisation des résultats du regroupement
plt.figure(figsize=(20, 15))
plt.subplot(2, 2, 1)
for i in range(len(d4c['a'])):
plt.scatter(d4c['a'][i][0], d4c['a']
[i][1], color=colors[int(d4c['a'][i][2])])
plt.title("Données brutes")
plt.subplot(2, 2, 2)
for i in range(len(y)):
plt.scatter(d4c['a'][i][0], d4c['a']
[i][1], color=colors[y[i]])
plt.title(" Données après regroupement ")

Résumé
Les expériences ci - dessus prouvent que DBSCAN La méthode de regroupement dépend du degré d'association à l'emplacement des points de données ,Poursmile、spiral L'effet de regroupement des données de distribution égale est meilleur .
边栏推荐
- Do not log in or log in to solve the problem that the Oracle database account is locked.
- MySQL
- Why is it not recommended to use BeanUtils in production?
- MySQL --- 数据库查询 - 基本查询
- [technology development-23]: application of DSP in future converged networks
- QTableWidget懒加载剩内存,不卡!
- Mathematical Knowledge: Steps - Nim Games - Game Theory
- [day 29] given an integer, please find its factor number
- 【数据挖掘】任务4:20Newsgroups聚类
- Installation and use of serial port packet capturing / cutting tool
猜你喜欢

Database SQL language 02 connection query

Wireshark data analysis and forensics a.pacapng

【我的OpenGL学习进阶之旅】关于欧拉角、旋转顺序、旋转矩阵、四元数等知识的整理

Installation and use of serial port packet capturing / cutting tool

MySQL - database query - basic query

MySQL basic usage 02

Detailed explanation of Q-learning examples of reinforcement learning

C#应用程序界面开发基础——窗体控制(3)——文件类控件
![[fh-gfsk] fh-gfsk signal analysis and blind demodulation research](/img/8a/8ca80f51a03341c982d52980c54b01.png)
[fh-gfsk] fh-gfsk signal analysis and blind demodulation research

【数据挖掘】任务5:K-means/DBSCAN聚类:双层正方形
随机推荐
MySQL foundation 06 DDL
[principles of multithreading and high concurrency: 2. Solutions to cache consistency]
Database SQL language 02 connection query
Tp6 fast installation uses mongodb to add, delete, modify and check
Basic concept and implementation of overcoming hash
[system analyst's road] Chapter V double disk software engineering (development model development method)
Canvas drawing -- bingdd
Using tensorboard to visualize the model, data and training process
给你一个可能存在 重复 元素值的数组 numbers ,它原来是一个升序排列的数组,并按上述情形进行了一次旋转。请返回旋转数组的最小元素。【剑指Offer】
MySQL - database query - basic query
High resolution network (Part 1): Principle Analysis
Qtablewidget lazy load remaining memory, no card!
2022 coal mine gas drainage examination question bank and coal mine gas drainage examination questions and analysis
Leetcode 2097 - Legal rearrangement of pairs
海量数据冷热分离方案与实践
dotConnect for PostgreSQL数据提供程序
音程的知识的总结
MySQL foundation 04 MySQL architecture
[fh-gfsk] fh-gfsk signal analysis and blind demodulation research
强化学习 Q-learning 实例详解