DBSACN算法的一些應用

以下是 DBSCAN 算法在 Python 中的幾個典型應用示例,涵蓋了基礎使用、參數調優和可視化等方面:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons, make_blobs
from sklearn.preprocessing import StandardScaler# 1. 生成測試數據 - 月牙形數據(展示DBSCAN處理非凸形狀的優勢)
X_moons, y_moons = make_moons(n_samples=500, noise=0.05, random_state=42)
X_moons = StandardScaler().fit_transform(X_moons)# 2. 應用DBSCAN聚類
dbscan = DBSCAN(eps=0.3, min_samples=5)  # 設置核心參數
labels_moons = dbscan.fit_predict(X_moons)# 3. 可視化結果
plt.figure(figsize=(10, 6))
# 繪制聚類結果,噪聲點用黑色表示
unique_labels = set(labels_moons)
colors = [plt.cm.Spectral(each) for each in np.linspace(0, 1, len(unique_labels))]for label, color in zip(unique_labels, colors):if label == -1:  # -1表示噪聲點color = [0, 0, 0, 1]  # 黑色class_member_mask = (labels_moons == label)xy = X_moons[class_member_mask]plt.scatter(xy[:, 0], xy[:, 1], c=[color], s=50, alpha=0.8)plt.title('DBSCAN Clustering on Moon-shaped Data')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()# 4. 生成并處理另一種數據 - 帶異常值的 blob 數據
X_blobs, y_blobs = make_blobs(n_samples=300, centers=3, cluster_std=0.6, random_state=0)
# 添加異常值
X_blobs = np.vstack([X_blobs, np.random.uniform(low=-10, high=10, size=(20, 2))])
X_blobs = StandardScaler().fit_transform(X_blobs)# 應用DBSCAN
dbscan_blobs = DBSCAN(eps=0.5, min_samples=5)
labels_blobs = dbscan_blobs.fit_predict(X_blobs)# 可視化blob數據聚類結果
plt.figure(figsize=(10, 6))
unique_labels_blobs = set(labels_blobs)
colors_blobs = [plt.cm.Spectral(each) for each in np.linspace(0, 1, len(unique_labels_blobs))]for label, color in zip(unique_labels_blobs, colors_blobs):if label == -1:color = [0, 0, 0, 1]  # 噪聲點黑色class_member_mask = (labels_blobs == label)xy = X_blobs[class_member_mask]plt.scatter(xy[:, 0], xy[:, 1], c=[color], s=50, alpha=0.8)plt.title('DBSCAN Clustering on Blob Data with Outliers')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.show()

這些代碼示例展示了 DBSCAN 算法在不同場景下的應用:

基礎應用示例:展示了 DBSCAN 處理非凸形狀數據(月牙形)和帶異常值數據的能力。通過可視化可以清晰看到,相比 K-Means,DBSCAN 能更好地識別自然聚類形狀并標記異常點。

參數調優示例:實現了 K - 距離法來幫助確定最佳的 ε 參數。在實際應用中,我們通常觀察 K - 距離曲線的 "拐點" 來選擇合適的 ε 值,這個點代表了數據密度的突變處。

真實世界應用示例:模擬了客戶分群場景,使用消費頻率、平均消費金額和最近消費時間間隔三個特征進行聚類。通過 PCA 降維可視化聚類結果,并對每個聚類的特征進行統計分析,幫助理解不同客戶群體的行為模式。

使用這些代碼時,需要注意:

DBSCAN 對數據縮放敏感,通常需要先進行標準化處理

參數 ε 和 min_samples 需要根據具體數據集調整

對于高維數據,建議先進行降維處理(如 PCA)

大規模數據集可能需要調整算法參數(如使用 ball_tree 或 kd_tree)來提高效率

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/95045.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/95045.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/95045.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java9學習筆記-part1

G1 成為默認垃圾回收器在 Java 8 的時候,默認垃圾回收器是 Parallel Scavenge(新生代)Parallel Old(老年代)。到了 Java 9, CMS 垃圾回收器被廢棄了,G1(Garbage-First Garbage Collector&#x…

【github.io靜態網頁 怎么使用 github.io 搭建一個簡單的網頁?】

這里是一張展示 GitHub Pages 靜態網站架構與部署流程的示意圖,可以幫助你更直觀理解整個流程。 要使用 github.io(GitHub Pages)搭建一個簡單的網頁,你可以按照以下步驟操作: 快速入門:個人網站&#xff…

記錄一次ubuntu20.04 解決gmock not found問題的過程

在電腦上源碼編譯moveit,系統是ubuntu20.04,有三個電腦,分別叫做A,B,C好了,A和C都可以很順暢地走流程編譯通過,但是B遇到了gmock not found的問題,一開始沒當回事,感覺重裝下庫,或者…

Java基礎編程核心案例:從邏輯到應用

Java編程的核心在于將邏輯思維轉化為可執行的代碼。本專欄通過8個實用案例,覆蓋條件判斷、循環結構、數組操作、用戶交互等基礎知識點,展示如何用Java解決實際問題,從簡單游戲到數據計算,逐步構建編程思維。 案例一:剪…

Starlink衛星終端對星策略是終端自主執行的還是網管中心調度的?

以下文章首先來源于Google Gemini的Deep Research的內容,在Deep Research的報告參考了SpaceX公開信息、FCC技術報告、相關專利(如US9906292B2)以及學術研究的綜合分析,并參考了RFWirelessWorld和APNIC博客等二次來源。 文章完成之后,前后發給了Grok和deepseek,讓Grok和d…

【CDA案例】數據分析案例拆解:解鎖數據分析全流程!

在當今數字化時代,數據如同一座座金礦,蘊含著巨大的價值。企業、組織乃至個人都渴望從海量的數據中挖掘出有用的信息,以指導決策、優化運營、提升競爭力。今天我們以一個實際的數據分析案例為藍本,深入拆解其全過程,帶…

vulnhub-drippingblues靶場攻略

1.打開靶場,我們將網絡連接方式改為NAT模式2.然后使用nmap掃描一下nat的網段3.存在21,22,80端口我們先來看一下21端口的ftp協議,發現可以直接匿名登錄,并且可以下載存在的東西4.但是這個壓縮包被加密了,我們…

afsim2.9_使用QtCreator和VSCode編譯

使用QtCreator和VSCode編譯AFSIM2.9源代碼指南 準備工作 在開始編譯AFSIM2.9源代碼前,需要確保您的開發環境滿足以下條件: 安裝QtCreator安裝Visual Studio Code(最新穩定版)獲取AFSIM2.9源代碼包安裝必要的編譯工具鏈&#xf…

TC39x STM(System Timer)學習記錄

STM有哪些特性?自由運行的 64 位計數器所有 64 位可同步讀取可同步讀取 64 位計數器的不同 32 位部分基于與 STM 部分內容的比較匹配,靈活地產生服務請求在應用復位后自動開始計數若 ARSTDIS.STMxDIS 位清零,應用復位將復位 STM 寄存器&#…

css初學者第四天

<1>snipaste工具的使用snipaste是一個簡單但強大的截圖工具&#xff0c;也可以讓你將截圖貼回屏幕上。常用的快捷方式&#xff1a;1、F1可以截圖&#xff0c;同時測量大小&#xff0c;設置箭頭 書寫文字等2、F3在桌面置頂顯示3、點擊圖片&#xff0c;alt可以取色&#xf…

CompletableFuture實現Excel 多個sheet頁批量導出

CompletableFuture實現Excel 多個sheet頁批量導出 文章目錄 CompletableFuture實現Excel 多個sheet頁批量導出 為什么不能直接合并文件或Sheet? 我的方案合理性 1. 操作實現步驟 1.1、導入所需要的依賴 1.2 、Excel 導入導出對象 1.3、異步生成 Excel 文件到指定路徑 1.4、合并…

搭建本地 Git 服務器

以下是搭建本地 Git 服務器的通用步驟&#xff0c;支持團隊協作或私有倉庫管理&#xff1a;方法 1&#xff1a;基于 SSH 的簡單部署&#xff08;適合小團隊&#xff09; 步驟 1&#xff1a;安裝 Git 在服務器上安裝 Git&#xff08;以 Ubuntu 為例&#xff09;&#xff1a; sud…

【Matplotlib】中文顯示問題

中文顯示問題本地Mac上作圖&#xff0c;可以方便地實現中文字體顯示。比如在Jupter中&#xff0c;通過&#xff1a;方法一&#xff1a;不下載字體庫即可實現中文顯示 (MAC)plt.rcParams[font.family][Arial Unicode MS]方法二&#xff1a;下載指定字體訓即可實現中文顯示plt.rc…

從“單體崩潰”到“穩定如山”:Java 構建高可用、低耦合架構實戰指南

引言&#xff1a; 你是否經歷過這樣的痛苦&#xff1f;某個模塊突然異常&#xff0c;整個系統瞬間崩盤&#xff0c;排查日志堆積如山&#xff0c;客戶投訴不斷。系統耦合嚴重、容錯性差&#xff0c;成了上線最忌憚的“隱雷”。 而今天&#xff0c;我們要帶你深入剖析如何通過事…

人工智能正在學習自我提升的方式

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎&#xff1f;訂閱我們的簡報&#xff0c;深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同&#xff0c;從行業內部的深度分析和實用指南中受益。不要錯過這個機會&#xff0c;成為AI領…

Numpy基礎(廣播機制)

廣播機制 Numpy的Universal functions中要求輸入的數組shape是一致的&#xff0c;當數組的shape不相等 時&#xff0c;則會使用廣播機制。不過&#xff0c;調整數組使得shape一樣&#xff0c;需要滿足一定的規則&#xff0c;否則將 出錯。這些規則可歸納為以下4條。 1&#xff…

reuse: for booting my spring project with mvn in Windows command line

boot.bat echo off setlocal enabledelayedexpansion:: 定義幫助信息 set HELP_MSG使用方法: %0 [選項,可選-m,-j,-h] [參數...]:: 默認啟動方式為 mvn set MODEmvn set ARGS:: 解析命令行參數 :parse_args if "%~1""" goto end_parseif "%~1"&q…

NodeJs學習日志(4):路由合并_環境配置_常用文件目錄

路由合并_環境配置_常用文件目錄 路由合并 // routes/routes.js const express require(express); const router express.Router();// 合并子路由 var indexRouter require(../routes/index); var usersRouter require(../routes/users);router.use(/, indexRouter); route…

?TRAE SOLO + Holopix AI | 輕松實現 “虛假廣告“-轉[特殊字符]割草小游戲

引言 &#x1f636; 兩周前 (7.21) Trae-國際版 正式發布「SOLO」模式&#xff0c;需要 Pro 賬戶&#xff0c;邀請碼一度 “難求”&#xff0c;海鮮市場還有人掛出 500塊的 “天價”&#xff0c;這都能炒&#xff1f;我是無法理解的&#x1f937;?♀?&#xff0c;目前一個月…

redis集群-本地環境

* Linux 本地集群&#xff1a;3主3從yum install -y gccyum install -y wgetyum install -y vimwget http://download.redis.io/releases/redis-7.2.5.tar.gztar -zxvf redis-7.2.5.tar.gzcd redis-7.2.5/makemake PREFIX/usr/local/redis install# 配置系統環境變量vim /etc/p…