diff --git a/assets/1606228016281.png b/assets/1606228016281.png new file mode 100644 index 0000000..65f2745 Binary files /dev/null and b/assets/1606228016281.png differ diff --git a/assets/1606228049969.png b/assets/1606228049969.png new file mode 100644 index 0000000..edf4578 Binary files /dev/null and b/assets/1606228049969.png differ diff --git a/必备数学基础.md b/必备数学基础.md index b9764c7..7519075 100644 --- a/必备数学基础.md +++ b/必备数学基础.md @@ -1,3 +1,5 @@ + + # 必备数学基础 ### 高等数学基础 @@ -1307,3 +1309,51 @@ https://www.naftaliharris.com/blog/visualizing-dbscan-clustering/可视化网站 - B,C: 边界点 - N: 离群点 +#### DBSCAN工作流程 + +- 参数D:输入数据集 +- 参数∈:指定半径 +- MinPts:密度阈值 + +1. 标记所有对象为 unvisited; +2. Do; +3. 随机选择一个 unvisited 对象 p; +4. 标记 p 为visited; +5. If p 的∈-领域至少有 MinPts 个对象; +6. ​ 创建一个新簇C,并把 p 添加到C; +7. ​ 令 N 为 p 的∈-领域中的对象集合; +8. ​ For N中每个点p +9. ​ If p 是 unvisited; +10. ​ 标记 p 为 visited; +11. ​ If p 的∈-领域至少有 MinPts 个对象,把这些对象添加到N; +12. ​ 如果p还不是任何簇的成员,把p添加到C; +13. ​ End for; +14. ​ 输出C; +15. Else 标记 p 为噪声; +16. Until 没有标记为 unvisited 的对象; + + + +参数选择: + +- 半径∈,可以根据K距离开设定:找突变点 +- k距离:给定数据集P={p(i);i=0,1,...n},计算点P(i)到集合D的子集S中所有点之间的距离,距离按照从小到大的顺序排序,d(k)就被称为k-距离。 +- MinPts:k-距离中k的值,一般取得小一些,多次尝试 + +优势: + +- 不需要指定簇个数 +- 可以发现任意形状得簇 +- 擅长找到离群点(检测任务) +- 两个参数就够了 + +劣势: + +- 高维数据有些困难(可以降维) +- 参数难以选择(参数对结果得的影响非常大) +- Sklearn中效率慢(数据消减策略) + +如下两图: + +![1606228016281](assets/1606228016281.png)![1606228049969](assets/1606228049969.png) +