国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

DBSCAN聚類算法——MATLAB實(shí)現(xiàn)

這篇具有很好參考價(jià)值的文章主要介紹了DBSCAN聚類算法——MATLAB實(shí)現(xiàn)。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

? ? 聲明:本文修改自《數(shù)學(xué)建模清風(fēng)》老師的代碼

???DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一個(gè)比較有代表性的基于密度的聚類算法。與劃分和層次聚類方法不同,它將簇定義為密度相連的點(diǎn)的最大集合,能夠把具有足夠高密度的區(qū)域劃分為簇,并可在噪聲的空間數(shù)據(jù)庫中發(fā)現(xiàn)任意形狀的聚類。?

? ? ? ? 作為經(jīng)典的聚類算法,DBSCAN聚類在數(shù)學(xué)建模競賽中用到的概率很大。本文不詳細(xì)展開講解DBSCAN的原理,只介紹相關(guān)代碼的使用步驟。

DBSCAN函數(shù)代碼:

function [IDX, isnoise]=DBSCAN(X,epsilon,MinPts)

    C=0;
    
    n=size(X,1);
    IDX=zeros(n,1);  % 初始化全部為0,即全部為噪音點(diǎn)
    
    D=pdist2(X,X);
    
    visited=false(n,1);
    isnoise=false(n,1);
    
    for i=1:n
        if ~visited(i)
            visited(i)=true;
            
            Neighbors=RegionQuery(i);
            if numel(Neighbors)<MinPts
                % X(i,:) is NOISE
                isnoise(i)=true;
            else
                C=C+1;
                ExpandCluster(i,Neighbors,C);
            end
            
        end
    
    end
    
    function ExpandCluster(i,Neighbors,C)
        IDX(i)=C;
        
        k = 1;
        while true
            j = Neighbors(k);
            
            if ~visited(j)
                visited(j)=true;
                Neighbors2=RegionQuery(j);
                if numel(Neighbors2)>=MinPts
                    Neighbors=[Neighbors Neighbors2];   %#ok
                end
            end
            if IDX(j)==0
                IDX(j)=C;
            end
            
            k = k + 1;
            if k > numel(Neighbors)
                break;
            end
        end
    end
    
    function Neighbors=RegionQuery(i)
        Neighbors=find(D(i,:)<=epsilon);
    end

end

繪制聚類圖的代碼:
?

function PlotClusterinResult(X, IDX)

    k=max(IDX);

    Colors=hsv(k);

    Legends = {};
    for i=0:k
        Xi=X(IDX==i,:);
        if i~=0
            Style = 'x';
            MarkerSize = 8;
            Color = Colors(i,:);
            Legends{end+1} = ['Cluster #' num2str(i)];
        else
            Style = 'o';
            MarkerSize = 6;
            Color = [0 0 0];
            if ~isempty(Xi)
                Legends{end+1} = 'Noise';
            end
        end
        if ~isempty(Xi)
            plot(Xi(:,1),Xi(:,2),Style,'MarkerSize',MarkerSize,'Color',Color);
        end
        hold on;
    end
    hold off;
    axis equal;
    grid on;
    legend(Legends);
    legend('Location', 'NorthEastOutside');

end

接下來是主函數(shù):

clc;
clear;
close all;

load mydata;
%%注意,此處Data.mat用于導(dǎo)入自己的數(shù)據(jù),數(shù)據(jù)名字要用X,或者在下方改變量名也可以

if size(X,2)==2
    %%如果列數(shù)=2才可以運(yùn)算
    epsilon=0.5;
    %%規(guī)定聚類半徑
    MinPts=10;
    %%規(guī)定半徑內(nèi)最小數(shù)目點(diǎn)

    %%上面兩個(gè)參數(shù)對聚類的結(jié)果很敏感,可以多次修改得出最好的結(jié)果

    IDX=DBSCAN(X,epsilon,MinPts);
    %%調(diào)用DBSCAN函數(shù),輸入?yún)?shù)有三個(gè),分別是原始數(shù)據(jù),聚類半徑,最小數(shù)目點(diǎn)
    %%IDX用于保存每一項(xiàng)數(shù)據(jù)所屬的聚類類別數(shù)目

    PlotClusterinResult(X, IDX);
    %%畫出聚類結(jié)果圖
    title(['DBSCAN Clustering (\epsilon = ' num2str(epsilon) ', MinPts = ' num2str(MinPts) ')']);
else 
    disp("請修改數(shù)據(jù),DBCASN對二維聚類最佳!")
end

如下是聚類結(jié)果:

DBSCAN聚類算法——MATLAB實(shí)現(xiàn)

?使用要點(diǎn):

????????前兩個(gè)函數(shù)分別保存為獨(dú)立的m文件,將其與主函數(shù)放置同一文件夾目錄之下即可。此外,自己的數(shù)據(jù)要獨(dú)立保存為.mat文件,也在同一目錄之下。最后直接運(yùn)行main函數(shù)即可。文章來源地址http://www.zghlxwxcb.cn/news/detail-504806.html

到了這里,關(guān)于DBSCAN聚類算法——MATLAB實(shí)現(xiàn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 人工智能|機(jī)器學(xué)習(xí)——DBSCAN聚類算法(密度聚類)

    人工智能|機(jī)器學(xué)習(xí)——DBSCAN聚類算法(密度聚類)

    DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一種基于密度的聚類算法,簇集的劃定完全由樣本的聚集程度決定。聚集程度不足以構(gòu)成簇落的那些樣本視為噪聲點(diǎn),因此DBSCAN聚類的方式也可以用于異常點(diǎn)的檢測。 算法的關(guān)鍵在于樣本的‘聚集程度’,這個(gè)程度的刻畫

    2024年04月10日
    瀏覽(22)
  • 密度聚類算法(DBSCAN)實(shí)驗(yàn)案例

    密度聚類算法(DBSCAN)實(shí)驗(yàn)案例

    DBSCAN是一種強(qiáng)大的基于密度的聚類算法,從直觀效果上看,DBSCAN算法可以找到樣本點(diǎn)的全部密集區(qū)域,并把這些密集區(qū)域當(dāng)做一個(gè)一個(gè)的聚類簇。DBSCAN的一個(gè)巨大優(yōu)勢是可以對任意形狀的數(shù)據(jù)集進(jìn)行聚類。 本任務(wù)的主要內(nèi)容: 1、 環(huán)形數(shù)據(jù)集聚類 2、 新月形數(shù)據(jù)集聚類 3、

    2024年02月08日
    瀏覽(23)
  • 毫米波雷達(dá)點(diǎn)云 DBSCAN聚類算法

    毫米波雷達(dá)點(diǎn)云 DBSCAN聚類算法

    聚類的目的是將一組數(shù)據(jù)點(diǎn)劃分為具有相似特征或?qū)傩缘慕M或簇。通過聚類分析,我們可以識別出數(shù)據(jù)中的內(nèi)在模式、結(jié)構(gòu)和關(guān)聯(lián)關(guān)系,從而獲得對數(shù)據(jù)的更深入理解。 具體來說,聚類的目的可以分為以下三部分: 發(fā)現(xiàn)數(shù)據(jù)的內(nèi)在結(jié)構(gòu): 聚類可以將數(shù)據(jù)分成簇,這些簇可能

    2024年02月06日
    瀏覽(24)
  • 基于密度的聚類算法(1)——DBSCAN詳解

    基于密度的聚類算法(1)——DBSCAN詳解

    基于密度的聚類算法(1)——DBSCAN詳解 基于密度的聚類算法(2)——OPTICS詳解 基于密度的聚類算法(3)——DPC詳解 1. DBSCAN簡介 DBSCAN(Density-Based Spatial Clustering of Applications with Noise, 具有噪聲的基于密度的聚類方法 )是一種典型的基于密度的空間聚類算法。和K-Means,BIR

    2024年01月24日
    瀏覽(22)
  • 深度解讀DBSCAN聚類算法:技術(shù)與實(shí)戰(zhàn)全解析

    深度解讀DBSCAN聚類算法:技術(shù)與實(shí)戰(zhàn)全解析

    探索DBSCAN算法的內(nèi)涵與應(yīng)用,本文詳述其理論基礎(chǔ)、關(guān)鍵參數(shù)、實(shí)戰(zhàn)案例及最佳實(shí)踐,揭示如何有效利用DBSCAN處理復(fù)雜數(shù)據(jù)集,突破傳統(tǒng)聚類限制。 關(guān)注TechLead,分享AI全維度知識。作者擁有10+年互聯(lián)網(wǎng)服務(wù)架構(gòu)、AI產(chǎn)品研發(fā)經(jīng)驗(yàn)、團(tuán)隊(duì)管理經(jīng)驗(yàn),同濟(jì)本復(fù)旦碩,復(fù)旦機(jī)器人智

    2024年02月05日
    瀏覽(24)
  • 【機(jī)器學(xué)習(xí)】聚類算法-DBSCAN基礎(chǔ)認(rèn)識與實(shí)戰(zhàn)案例

    【機(jī)器學(xué)習(xí)】聚類算法-DBSCAN基礎(chǔ)認(rèn)識與實(shí)戰(zhàn)案例

    在機(jī)器學(xué)習(xí)中,聚類是一種常見的無監(jiān)督學(xué)習(xí)方法,它的目標(biāo)是將數(shù)據(jù)集中的數(shù)據(jù)點(diǎn)分成不同的組,每個(gè)組之間具有相似的特征。聚類可以用于各種應(yīng)用程序,如圖像分割,社交媒體分析,醫(yī)療數(shù)據(jù)分析等。DBSCAN是一種聚類算法,它被廣泛應(yīng)用于各種領(lǐng)域。 DBSCAN(Density-Bas

    2024年04月15日
    瀏覽(31)
  • 【詳解算法流程+程序】DBSCAN基于密度的聚類算法+源碼-用K-means和DBSCAN算法對銀行數(shù)據(jù)進(jìn)行聚類并完成用戶畫像數(shù)據(jù)分析課設(shè)源碼資料包

    【詳解算法流程+程序】DBSCAN基于密度的聚類算法+源碼-用K-means和DBSCAN算法對銀行數(shù)據(jù)進(jìn)行聚類并完成用戶畫像數(shù)據(jù)分析課設(shè)源碼資料包

    DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一個(gè)比較有代表性的基于密度的聚類算法。 與劃分和層次聚類方法不同,它將簇定義為密度相連的點(diǎn)的最大集合,能夠把具有足夠高密度的區(qū)域劃分為簇, 并可在噪聲的空間數(shù)據(jù)庫中發(fā)現(xiàn)任意形狀的聚類。 ????????選

    2024年04月11日
    瀏覽(31)
  • Matlab實(shí)現(xiàn)Kmeans聚類算法

    Matlab實(shí)現(xiàn)Kmeans聚類算法

    kmeans聚類算法是一種迭代求解的聚類分析算法。其實(shí)現(xiàn)步驟如下: (1) 隨機(jī)選取K個(gè)對象作為初始的聚類中心 (2) 計(jì)算每個(gè)對象與各個(gè)種子聚類中心之間的距離,把每個(gè)對象分配給距離它最近的聚類中心。 (3) 聚類中心以及分配給它們的對象就代表一個(gè)聚類。每分配一個(gè)樣本,聚

    2024年02月02日
    瀏覽(29)
  • 聚類算法綜述及Matlab實(shí)現(xiàn)

    聚類算法綜述及Matlab實(shí)現(xiàn)

    聚類算法是一種無監(jiān)督學(xué)習(xí)方法,它將數(shù)據(jù)集中的對象分組成不同的簇(cluster),使得同一簇內(nèi)的對象相似度高,而不同簇之間的相似度低。聚類算法在數(shù)據(jù)挖掘、圖像處理、模式識別等領(lǐng)域都有廣泛應(yīng)用。 常用的聚類算法包括K-Means、層次聚類(Hierarchical Clustering)、DBSCAN、Mea

    2024年02月11日
    瀏覽(17)
  • 聚類分析 | MATLAB實(shí)現(xiàn)基于AHC聚類算法可視化

    聚類分析 | MATLAB實(shí)現(xiàn)基于AHC聚類算法可視化

    效果一覽 基本介紹 AHC聚類算法,聚類結(jié)果可視化,MATLAB程序。 Agglomerative Hierarchical Clustering(自底向上的層次聚類)是一種經(jīng)典的聚類算法,它的主要思想是將每個(gè)數(shù)據(jù)點(diǎn)視為一個(gè)簇,然后將距離最近的兩個(gè)簇合并,直到達(dá)到預(yù)設(shè)的聚類個(gè)數(shù)或者所有數(shù)據(jù)點(diǎn)都被合并為一個(gè)簇

    2024年02月11日
    瀏覽(48)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包