python实现求特征选择的信息增益


Posted in Python onDecember 18, 2018

使用python语言,实现求特征选择的信息增益,可以同时满足特征中有连续型和二值离散型属性的情况。

师兄让我做一个特征选择的代码,我在网上找了一下,大部分都是用来求离散型属性的信息益益,但是我的数据是同时包含二值离散型和连续型属性的,所以这里实现了一下。

代码块

import numpy as np
import math

class IG():
  def __init__(self,X,y):

    X = np.array(X)
    n_feature = np.shape(X)[1]
    n_y = len(y)

    orig_H = 0
    for i in set(y):
      orig_H += -(y.count(i)/n_y)*math.log(y.count(i)/n_y)

    condi_H_list = []
    for i in range(n_feature):
      feature = X[:,i]
      sourted_feature = sorted(feature)
      threshold = [(sourted_feature[inde-1]+sourted_feature[inde])/2 for inde in range(len(feature)) if inde != 0 ]

      thre_set = set(threshold)
      if float(max(feature)) in thre_set:
        thre_set.remove(float(max(feature)))
      if min(feature) in thre_set:
        thre_set.remove(min(feature))
      pre_H = 0
      for thre in thre_set:
        lower = [y[s] for s in range(len(feature)) if feature[s] < thre]
        highter = [y[s] for s in range(len(feature)) if feature[s] > thre]
        H_l = 0
        for l in set(lower):
          H_l += -(lower.count(l) / len(lower))*math.log(lower.count(l) / len(lower))
        H_h = 0
        for h in set(highter):
          H_h += -(highter.count(h) / len(highter))*math.log(highter.count(h) / len(highter))
        temp_condi_H = len(lower)/n_y *H_l+ len(highter)/n_y * H_h
        condi_H = orig_H - temp_condi_H
        pre_H = max(pre_H,condi_H)
      condi_H_list.append(pre_H)

    self.IG = condi_H_list


  def getIG(self):
    return self.IG

if __name__ == "__main__":


  X = [[1, 0, 0, 1],
     [0, 1, 1, 1],
     [0, 0, 1, 0]]
  y = [0, 0, 1]


  print(IG(X,y).getIG())

输出结果为:

[0.17441604792151594, 0.17441604792151594, 0.17441604792151594, 0.6365141682948128]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python日期的加减等操作的示例
Aug 15 Python
Python删除Java源文件中全部注释的实现方法
Aug 30 Python
Python实现图片滑动式验证识别方法
Nov 09 Python
Django REST为文件属性输出完整URL的方法
Dec 18 Python
对Python的交互模式和直接运行.py文件的区别详解
Jun 29 Python
Django框架模板用法入门教程
Nov 04 Python
python3 求约数的实例
Dec 05 Python
Tensorflow 实现分批量读取数据
Jan 04 Python
python基于property()函数定义属性
Jan 22 Python
windows、linux下打包Python3程序详细方法
Mar 17 Python
Python3 selenium 实现QQ群接龙自动化功能
Apr 17 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
Nov 02 Python
python实现连续图文识别
Dec 18 #Python
Django ManyToManyField 跨越中间表查询的方法
Dec 18 #Python
Python列表list排列组合操作示例
Dec 18 #Python
python实现二维插值的三维显示
Dec 17 #Python
Python实现分段线性插值
Dec 17 #Python
Python 获取主机ip与hostname的方法
Dec 17 #Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 #Python
You might like
PHP pathinfo()获得文件的路径、名称等信息说明
2011/09/13 PHP
基于PHP array数组的教程详解
2013/06/05 PHP
CI框架入门示例之数据库取数据完整实现方法
2014/11/05 PHP
Laravel5.5 实现后台管理登录的方法(自定义用户表登录)
2019/09/30 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
Javascript String对象扩展HTML编码和解码的方法
2009/06/02 Javascript
jQuery Ajax 实例全解析
2011/04/20 Javascript
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
jquery聚焦文本框与扩展文本框聚焦方法
2012/10/12 Javascript
Javascript 判断是否存在函数的方法
2013/01/03 Javascript
我的Node.js学习之路(三)--node.js作用、回调、同步和异步代码 以及事件循环
2014/07/06 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
JavaScript实现下拉列表框数据增加、删除、上下排序的方法
2015/08/11 Javascript
基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
2015/11/24 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
node简单实现一个更改头像功能的示例
2017/12/29 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
轻量级富文本编辑器wangEditor结合vue使用方法示例
2018/10/10 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
对Python 两大环境管理神器 pyenv 和 virtualenv详解
2018/12/31 Python
Python3 log10()函数简单用法
2019/02/19 Python
Python基于mysql实现学生管理系统
2019/02/21 Python
简单了解python的break、continue、pass
2019/07/08 Python
python 读取数据库并绘图的实例
2019/12/03 Python
flask 框架操作MySQL数据库简单示例
2020/02/02 Python
python 回溯法模板详解
2020/02/26 Python
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
Foot Locker澳洲官网:美国运动服和鞋类零售商
2019/10/11 全球购物
信息专业大学生自我评价分享
2014/01/17 职场文书
党性分析材料格式
2014/12/19 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
结婚仪式主持词
2015/06/29 职场文书
数据结构课程设计心得体会
2016/01/15 职场文书
Anaconda安装pytorch和paddle的方法步骤
2022/04/03 Python