BGLL社团划分|DBSCAN密度聚类|Python复杂网络( 二 )


【BGLL社团划分|DBSCAN密度聚类|Python复杂网络】每一次节点移动一个孤立节点到其邻居所在的社团模块度增益为ΔQ:
BGLL社团划分|DBSCAN密度聚类|Python复杂网络文章插图
其中∑in∑in是社区C内部的所有边的权重之和 , ∑tot∑tot是社区C中所有节点相关的边的权重之和 。 ki是发生在节点i上的所有边的权重之和 。 ki,in是节点i到社区C中的所有节点的边的权重和 , m是网络中所有边的权重之和 。
第二步:用第一部分所划分出来的社区当作节点组成一个新的网络 。 新节点之间的边的权重为两个新节点之间(其实是两个社区之间)原本的权重之和 。 处在同一个社区中的节点之间的边导致新网络中该新节点有自环的边 。 然后对于构建的新网络使用第一部分的方法进行迭代 。 当网络不再改变也就是出现了最大模块度的时候停止迭代 。
Python数据分析及代码如下:
BGLL社团划分|DBSCAN密度聚类|Python复杂网络文章插图
中心点 , 以及中心点包含的类点
BGLL社团划分|DBSCAN密度聚类|Python复杂网络文章插图
点及对应的中心点
BGLL社团划分|DBSCAN密度聚类|Python复杂网络文章插图
按照划分结果分类:
BGLL社团划分|DBSCAN密度聚类|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)
准确率计算公式:.
BGLL社团划分|DBSCAN密度聚类|Python复杂网络文章插图
数据如下:
BGLL社团划分|DBSCAN密度聚类|Python复杂网络文章插图
DBSCAN
1.相关介绍
基于密度的聚类方法的主要目标是寻找被低密度区域分离的高密度区域 。 与基于距离的聚类算法不同的是 , 基于距离的聚类算法的聚类结果是球状的簇 , 而基于密度的聚类算法可以发现任意形状的簇 。
基于密度的聚类方法是从数据对象分布区域的密度着手的 。 如果给定类中的数据对象在给定的范围区域中 , 则数据对象的密度超过某一阈值就继续聚类 。 这种方法通过连接密度较大的区域 , 能够形成不同形状的簇 , 而且可以消除孤立点和噪声对聚类质量的影响 , 以及发现任意形状的簇 。 基于密度的聚类方法中最具代表性的是DBSAN算法、OPTICS算法和DENCLUE算法 。
2.DBSCAN
2.1算法描述
DBSCAN(Density-Based Spatial Clustering of Applications with Noise)是一个出现得比较早(1996年) , 比较有代表性的基于密度的聚类算法 。 算法的主要目标是相比基于划分的聚类方法和层次聚类方法 , 需要更少的领域知识来确定输入参数;发现任意形状的聚簇;在大规模数据库上更好的效率 。 DBSCAN能够将足够高密度的区域划分成簇 , 并能在具有噪声的空间数据库中发现任意形状的簇 。