当前位置:网站首页>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 .
边栏推荐
- Tp6 fast installation uses mongodb to add, delete, modify and check
- Druid database connection pool
- The difference between tail -f, tail -f and tail
- C#应用程序界面开发基础——窗体控制(1)——Form窗体
- 2022 Jiangxi Provincial Safety Officer B certificate reexamination examination and Jiangxi Provincial Safety Officer B certificate simulation examination question bank
- Do not log in or log in to solve the problem that the Oracle database account is locked.
- MySQL foundation 04 MySQL architecture
- 看完这篇 教你玩转渗透测试靶机Vulnhub——DriftingBlues-9
- How is the mask effect achieved in the LPL ban/pick selection stage?
- Create your first Kivy program Hello word (tutorial includes source code)
猜你喜欢

MySQL --- 数据库查询 - 条件查询

leetcode刷题_两数之和 II - 输入有序数组
![[technology development-23]: application of DSP in future converged networks](/img/2e/f39543a18a8f58b1d341ce72cc4427.png)
[technology development-23]: application of DSP in future converged networks

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

How is the mask effect achieved in the LPL ban/pick selection stage?

Niu Ke swipes questions and clocks in

After reading this article, I will teach you to play with the penetration test target vulnhub - drivetingblues-9

MySQL basics 03 introduction to MySQL types

Using tensorboard to visualize the model, data and training process

串口抓包/截断工具的安装及使用详解
随机推荐
C语言课程信息管理系统
tail -f 、tail -F、tailf的区别
openresty 缓存
Vim 9.0正式发布!新版脚本执行速度最高提升100倍
简易分析fgui依赖关系工具
Now that the teenager has returned, the world's fireworks are the most soothing and ordinary people return to work~
CF1617B Madoka and the Elegant Gift、CF1654C Alice and the Cake、 CF1696C Fishingprince Plays With Arr
2022 Jiangxi Provincial Safety Officer B certificate reexamination examination and Jiangxi Provincial Safety Officer B certificate simulation examination question bank
GDB 在嵌入式中的相关概念
[understanding of opportunity -36]: Guiguzi - flying clamp chapter - prevention against killing and bait
看疫情之下服装企业如何顺势而为
JDBC courses
一比特苦逼程序員的找工作經曆
What are the trading forms of spot gold and what are the profitable advantages?
Button wizard play strange learning - automatic return to the city route judgment
英语常用词汇
2022 Jiangxi Provincial Safety Officer B certificate reexamination examination and Jiangxi Provincial Safety Officer B certificate simulation examination question bank
[shutter] animation animation (the core class of shutter animation | animation | curvedanimation | animationcontroller | tween)
Do not log in or log in to solve the problem that the Oracle database account is locked.
[Androd] Gradle 使用技巧之模块依赖替换