当前位置:网站首页>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 .
边栏推荐
- Is there a handling charge for spot gold investment
- LeetCode 987. Vertical order transverse of a binary tree - Binary Tree Series Question 7
- 【数据挖掘】任务6:DBSCAN聚类
- High resolution network (Part 1): Principle Analysis
- Dotconnect for PostgreSQL data provider
- 什么是调。调的故事
- [机缘参悟-36]:鬼谷子-飞箝篇 - 面对捧杀与诱饵的防范之道
- Key wizard play strange learning - multithreaded background coordinate recognition
- MySQL - database query - condition query
- C#应用程序界面开发基础——窗体控制(4)——选择类控件
猜你喜欢
[untitled]
CF1617B Madoka and the Elegant Gift、CF1654C Alice and the Cake、 CF1696C Fishingprince Plays With Arr
High resolution network (Part 1): Principle Analysis
[understanding of opportunity -36]: Guiguzi - flying clamp chapter - prevention against killing and bait
【QT】自定义控件的封装
[C language] detailed explanation of pointer and array written test questions
MySQL --- 数据库查询 - 基本查询
MySQL --- 数据库查询 - 条件查询
Basic remote connection tool xshell
[Androd] Gradle 使用技巧之模块依赖替换
随机推荐
The meaning of wildcard, patsubst and notdir in makefile
What are the trading forms of spot gold and what are the profitable advantages?
How is the mask effect achieved in the LPL ban/pick selection stage?
[C language] detailed explanation of pointer and array written test questions
Canvas drawing -- bingdd
电信客户流失预测挑战赛
力扣 204. 计数质数
传输层 TCP主要特点和TCP连接
C#应用程序界面开发基础——窗体控制(4)——选择类控件
[day 29] given an integer, please find its factor number
一位苦逼程序员的找工作经历
测试右移:线上质量监控 ELK 实战
Button wizard play strange learning - go back to the city to buy medicine and add blood
Key wizard hit strange learning - automatic path finding back to hit strange points
并发编程的三大核心问题 -《深入理解高并发编程》
Kivy tutorial - example of using Matplotlib in Kivy app
[self management] time, energy and habit management
Soft exam information system project manager_ Real topic over the years_ Wrong question set in the second half of 2019_ Morning comprehensive knowledge question - Senior Information System Project Man
tail -f 、tail -F、tailf的区别
Related concepts of GDB in embedded system