日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

DBSCAN算法理论和Python实现

發布時間:2025/4/16 python 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DBSCAN算法理论和Python实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • https://github.com/Sean16SYSU/MachineLearningImplement

DBSCAN算法

基于密度的聚類方法DBSCAN算法,是相當經典。
算法思路很簡單。
簡述算法思路:

  • 選取密度較高的點作為核心點
  • 通過一個核心點出發,把其領域的點都放入到廣度優先搜索的隊列中。
  • 將所有找到的點歸結為一個類。之后,再從新的沒有被訪問過的點中找其他的核心點開始,又繼續進行廣度優先搜索。一直到所有的點都被訪問過(即分配過了對對應的類別)
  • Python實現

    • 導入數據
    from sklearn import datasets import numpy as np import matplotlib.pyplot as pltiris = datasets.load_iris()
    • 算法實現
    def DBSCAN(X, epsilon=1, MinPts=10):Nx = [0 for i in range(len(X))] core_points = []for i, xi in enumerate(X):temp = np.array([np.linalg.norm(xi - cj) if i != j else np.inf for j, cj in enumerate(X)])Nx[i] = set(np.where(temp < epsilon)[0])if len(Nx[i]) >= MinPts:core_points.append(i)k = 0not_visited = set([i for i in range(len(X))])Ck = [0 for i in range(len(X))] if len(core_points) == 0:print("Not core_points")while len(core_points) > 0:not_visited_temp = not_visitedo = core_points[np.random.randint(0, len(core_points))]Queue = [o]not_visited = not_visited - set(Queue)while len(Queue) > 0:q = Queue[0]Queue = Queue[1:]if len(Nx[q]) >= MinPts:delta = Nx[q] & not_visitedQueue = Queue + list(delta)not_visited = not_visited - deltaCk[k] = not_visited_temp - not_visitedcore_points = list(set(core_points) - Ck[k])k += 1Ans = np.zeros(len(X))for k_i in range(k):Ans[list(Ck[k_i])] = k_ireturn Ans
    • 測試
    test_y = DBSCAN(iris.data,)
    • 畫圖
    from sklearn.decomposition import PCAX_reduced = PCA(n_components=2).fit_transform(iris.data) plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=test_y, cmap=plt.cm.Set1)

    • iris數據集其實是有三個類別的。應該是有些類別的數值數值波動特征不太明顯。
    • 可以先做數據預處理之后,再做聚類,效果會好很多。
    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的DBSCAN算法理论和Python实现的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。