暑期第三次作业
这个作业属于哪个课程 | |
---|---|
这个作业要求在哪里 | |
这个作业的目标 | 学习判断是否存在heavy-hitters(大流),并找到频数最大的k条流(Top-k问题) |
1.检测出数据集中的heavy-hitters并解决Top-k问题
我首先定义了一个Count-Min Sketch类,用于创建Count-Min Sketch。Count-Min Sketch使用一个二维矩阵来存储计数信息,其中宽度和深度由参数width和depth指定。
接着打开捕获文件(题目的数据集有两个文件,我这里就选取第一个文件来作为数据集。),并创建Count-Min Sketch实例。然后,遍历每个数据包,检查是否具有IP层,并获取源IP地址。接下来,调用Count-Min Sketch的update方法来更新计数。在遍历结束后,关闭捕获文件。
然后,进行重要元素的检测。设置了top_k变量来指定要获取的前k个重要元素,count_threshold变量来设置计数的阈值,暂定为1000。使用Counter对象来存储重要元素及其计数。再次遍历捕获文件中的数据包,检查是否具有IP层,并获取源IP地址。然后,调用Count-Min Sketch的query
代码如下:
结果显示: