一、Mini Batch K-Means聚类

Mini Batch K-Means算法是K-Means算法的一种优化变种,采用小规模的数据子集减少计算时间,同时试图优化目标函数。可以减少K-Means算法收敛时间

● 数据导入以及数据抽样

● 导入

from sklearn.cluster import MiniBatchKMeans

● keans定义

kmeans = MiniBatchKMeans(n_clusters=1000, random_state=0).fit(X) n_clusters = 1000 说明有1000个中心点 (为什么设置1000个中心点?)

● 标签赋值

klabel=kmeans.labels_

● 将kLabel和Label互换位置

cols = list(df_major) cols.insert(78, cols.pop(cols.index('Label'))) df_major = df_major.loc[:, cols] #将表格中列的顺序换成cols的顺序#

● 将结果分组并且按照百分比抽样

def typicalSampling(group): name = group.name frac = 0.008 return group.sample(frac=frac) #按照百分比抽样 result = df_major.groupby('klabel', group_keys=False).apply(typicalSampling) # 输出Label标签的计数结果 result['Label'].value_counts()

● 将抽样结果保存

result = result.drop(['klabel'],axis=1) result = result.append(df_minor) #添加之前的少量样本 result.to_csv('./data/CICIDS2017_sample_km.csv',index=0)

● 数据分割(训练集和测试集)

● 读取数据

df=pd.read_csv('./data/CICIDS2017_sample_km.csv')
● X和Y的选择
X = df.drop(['Label'],axis=1).values #返回给定DataFrame的numpy表示形式 y = df.iloc[:, -1].values.reshape(-1,1) y=np.ravel(y)
● 数据分割(训练集0.8, 测试集0.2)
X_train, X_test, y_train, y_test = train_test_split(X,y, train_size = 0.8, test_size = 0.2, random_state = 0,stratify = y)
● 特征选择
● 互信息法相关过滤性 mutual_info_classif
from sklearn.feature_selection import mutual_info_classif importances = mutual_info_classif(X_train, y_train) # 统计每个特征和标签之间的互信息量,值越大说明越相关
● 计算重要性的和
f_list = sorted(zip(map(lambda x: round(x, 4), importances), features), reverse=True)
round(x,4) :保留四位小数
map(function, iterable) : 将序列中的每个元素作为函数的参数进行计算
zip() : 将对象中的元素打包成一个个tuple,也就是说将两个参数一一对应打包到一起,最后返回一个 iterable(可迭代对象) sorted函数可以对可迭代类型的容器内的数据进行排序 Sum = 0 fs = [] for i in range(0, len(f_list)): Sum = Sum + f_list[i][0] fs.append(f_list[i][1])
● 根据特征相关性排序,累加值达到0.9时跳出

Sum2 = 0
fs = [] for i in range(0, len(f_list2)):     Sum2 = Sum2 + f_list2[i][0]     fs.append(f_list2[i][1])     if Sum2>=0.9:         break       ```
●   将提取出来的特征赋值
```X_fs = df[fs].values X_fs.shape```

MTH-IDS 读代码(1)相关推荐

  1. 我为何爱读代码?你为何也应当爱?

    我为何爱读代码?你为何也应当爱? 我恨读代码 我发现,许多程序员都讨厌读代码--拜托别掩饰了,承认吧.差不多每个人都喜欢写代码--写代码乐在其中.可是,读代码真是不容易,而且还很烦人,又无可逃避,其他 ...

  2. 你们这些程序员,真得每天都在读代码吗?

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 近日,外媒上的一篇文章震惊了我,它赤裸裸地写道:你们这些程序员们,真得每天都在读代码吗?多数 ...

  3. SLAM十四讲第三讲实践:useGeometry------小白强行读代码

    SLAM十四讲第三讲实践:useGeometry------小白强行读代码 代码全文及双杠注释来自于<视觉SLAM十四讲–从理论到实践> 大部分带*注释是自己参考Eigen网站及其他博客的 ...

  4. mysql小鸭子_可读代码编写炸鸡十一 - 小黄鸭从你的心里游到脑子里

    可读代码编写炸鸡十一 - 小黄鸭从你的心里游到脑子里 多选参数推荐搜索 数据结构与算法 可读代码编写 Java Redis MySQL 大家好,我是多选参数的大炮. 可读代码编写的炸鸡很快要写到头了, ...

  5. 编写可读代码(二) 如何命名

    记得看到过一个调查,说程序员最头疼的事情是什么,最后票数最高的是Naming things(http://kb.cnblogs.com/page/192017/).从中不难看出,命名这件往往被初学者忽 ...

  6. 读代码比写代码难,真的吗?

    关注+星标公众号,不错过精彩内容 来源 | 综合整理知乎内容 上读代码比写代码难,真的吗?来听听别人都怎么说! wsivoky 很多人不明白代码意味着什么,代码意味着要随时理清这一坨: 读代码:找到图 ...

  7. 读代码比写代码难,真的?

    来源 | 综合整理知乎内容 上读代码比写代码难,真的吗?来听听别人都怎么说! wsivoky 很多人不明白代码意味着什么,代码意味着要随时理清这一坨: 读代码:找到图中两个节点之间的可能路径. 改代码 ...

  8. 编写可读代码,提高工作效率

    本次分享是怎么做到"可读性"的 首先,正在进行的,说明下本文的可读性. 1.背景 根据今年形势996icu,加班加点的情况比较多.与其抱怨,不如改变. 从内因去改变:主题,编写可读 ...

  9. 读代码读的什么代码_您的代码应读得像书

    读代码读的什么代码 There's a pandemic among programmers. Long functions, broad and nondescriptive names for f ...

  10. O’Reilly精品图书系列:编写可读代码的艺术].(鲍斯维尔等).尹哲等

    O'Reilly精品图书系列:编写可读代码的艺术].(鲍斯维尔等).尹哲等 A first Course in Logic An Introduction To Model Theory Proof ...

最新文章

  1. python中文件读写位置的作用-Python中文件的读写
  2. mysql服务启动出错:mysql: unrecognized service
  3. Mac是大脑,iPad是四肢 如何实现的呢?右键而已
  4. MySQL过滤相同binlog_通过Linux命令过滤出binlog中完整的SQL语句
  5. Android开源工具项目集合
  6. boot spring 启动 文本_springboot 选择启动某个配置文件
  7. JS中var与function
  8. 5 万条微信语音升入太空;阿里京东否认停止社招;雷军开怼华为 | 极客头条...
  9. Java生成和操作Excel文件
  10. JavaScript 浮动定位提示效果
  11. java运行环境简称_java程序的运行环境简称为什么?
  12. 上瘾啦,又用 Python 制作销售数据可视化看板
  13. 借助 Lucene.Net 构建站内搜索引擎(上)
  14. micropython esp8266 红外控制小车
  15. 《REWORK》读记
  16. 移动机器人(四)四轴飞行器
  17. java根据word模板导出_java根据模板生成,导出word和pdf(aspose.words实现word转换pdf)...
  18. UOS系统龙芯架构deb安装包打包实践
  19. Office在线预览及PDF在线预览的实现方式
  20. java-集合-set(不重复集合)知识分解——庖丁解牛版

热门文章

  1. 没错是你想知道的——人工智能学习方向
  2. 从零开始学编程之说说培训机构那些事(一)
  3. hc sr04流程图_超声波测距模块工作原理_HC-SR04模块详解
  4. 解决 el-input 密码输入框浏览器自动填充账号密码问题
  5. 从前慢——我希望有一个「慢社区」
  6. 试用期工作总结(官方版)
  7. 临床研究资料收集方法
  8. mysql查询每门功课成绩最好的前两名_用一个SQL查询语句得出每门功课成绩最好的前两名 - SQL Server论坛 - 51CTO技术论坛_中国领先的IT技术社区...
  9. 解读赛力斯年报:华为智选车的B面
  10. [Java 游戏编程]STG类游戏的实现2-Bullet