BGLL社团划分|DBSCAN密度聚类|Python复杂网络( 二 )
【BGLL社团划分|DBSCAN密度聚类|Python复杂网络】每一次节点移动一个孤立节点到其邻居所在的社团模块度增益为ΔQ:
文章插图
其中∑in∑in是社区C内部的所有边的权重之和 , ∑tot∑tot是社区C中所有节点相关的边的权重之和 。 ki是发生在节点i上的所有边的权重之和 。 ki,in是节点i到社区C中的所有节点的边的权重和 , m是网络中所有边的权重之和 。
第二步:用第一部分所划分出来的社区当作节点组成一个新的网络 。 新节点之间的边的权重为两个新节点之间(其实是两个社区之间)原本的权重之和 。 处在同一个社区中的节点之间的边导致新网络中该新节点有自环的边 。 然后对于构建的新网络使用第一部分的方法进行迭代 。 当网络不再改变也就是出现了最大模块度的时候停止迭代 。
Python数据分析及代码如下:
文章插图
中心点 , 以及中心点包含的类点
文章插图
点及对应的中心点
文章插图
按照划分结果分类:
文章插图
DBSCAN密度聚类案例数据集描述:
DataSet.csv: 1024行 , 3列
每一行代表一个样本点 , 前两列表示样本点的两个特征 , 最后一列表示样本点所属类别 。 例如样本点(1.6, 0.8, 1)表示特征一值为1.6 , 特征二值为0.8 , 属于第1类 。
问题:
数据集包含两类样本点 , 请用密度聚类正确划分数据集 。
提交结果:
请在正文(结果汇总.pdf)中详细描述解答过程 , 包括解题思路 , 算法 , 及分析划分的结果 , 并提交以下3个附录文件:
1. 代码;
2. 数据集的划分结果,用DataSet_Cate.csv命名 , 格式如下:
(1.6, 0.8, c_pred), c_pred表示你的划分结果;
3. 数据集上的准确率 , 用Precision.csv命名 , 格式如下:
(DataSet, precision)
准确率计算公式:.
文章插图
数据如下:
文章插图
DBSCAN
1.相关介绍
基于密度的聚类方法的主要目标是寻找被低密度区域分离的高密度区域 。 与基于距离的聚类算法不同的是 , 基于距离的聚类算法的聚类结果是球状的簇 , 而基于密度的聚类算法可以发现任意形状的簇 。
基于密度的聚类方法是从数据对象分布区域的密度着手的 。 如果给定类中的数据对象在给定的范围区域中 , 则数据对象的密度超过某一阈值就继续聚类 。 这种方法通过连接密度较大的区域 , 能够形成不同形状的簇 , 而且可以消除孤立点和噪声对聚类质量的影响 , 以及发现任意形状的簇 。 基于密度的聚类方法中最具代表性的是DBSAN算法、OPTICS算法和DENCLUE算法 。
2.DBSCAN
2.1算法描述
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个出现得比较早(1996年) , 比较有代表性的基于密度的聚类算法 。 算法的主要目标是相比基于划分的聚类方法和层次聚类方法 , 需要更少的领域知识来确定输入参数;发现任意形状的聚簇;在大规模数据库上更好的效率 。 DBSCAN能够将足够高密度的区域划分成簇 , 并能在具有噪声的空间数据库中发现任意形状的簇 。
推荐阅读
- “8+”“12+”“16+”三档,中国游戏分级标准以年龄划分!《网络游戏适龄提示》发布
- Marine and Petroleum Geology:基于机器学习的深层碳酸盐岩的测井相划分
- 了解情绪划分:如何使用机器学习来保持积极心态?