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中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
低版本中Python除法运算小技巧
Apr 05 Python
python爬虫headers设置后无效的解决方法
Oct 21 Python
python中for循环输出列表索引与对应的值方法
Nov 07 Python
python sklearn库实现简单逻辑回归的实例代码
Jul 01 Python
Python使用sklearn库实现的各种分类算法简单应用小结
Jul 04 Python
Django 迁移、操作数据库的方法
Aug 02 Python
Python 脚本拉取 Docker 镜像问题
Nov 10 Python
python应用Axes3D绘图(批量梯度下降算法)
Mar 25 Python
jupyter实现重新加载模块
Apr 16 Python
Python中三维坐标空间绘制的实现
Sep 22 Python
Python人工智能之混合高斯模型运动目标检测详解分析
Nov 07 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 实用代码收集
2010/01/22 PHP
深入php define()函数以及defined()函数的用法详解
2013/06/05 PHP
destoon官方标签大全
2014/06/20 PHP
php生成excel列名超过26列大于Z时的解决方法
2014/12/29 PHP
基于PHP实现简单的随机抽奖小程序
2016/01/05 PHP
用js来解决ajax读取页面乱码
2010/11/28 Javascript
Javascript中的异步编程规范Promises/A详细介绍
2014/06/06 Javascript
js实现简易的单数字随机抽奖(0-9)
2020/03/19 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
jQuery EasyUI datagrid在翻页以后仍能记录被选中行的实现代码
2016/08/15 Javascript
Vue监听数据对象变化源码
2017/03/09 Javascript
JavaScript中offsetWidth的bug及解决方法
2017/05/17 Javascript
jQuery 循环遍历改变a标签的href(实例讲解)
2017/07/12 jQuery
基于jquery.page.js实现分页效果
2018/01/01 jQuery
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
Layui点击图片弹框预览的实现方法
2019/09/16 Javascript
JS对日期操作封装代码实例
2019/11/08 Javascript
Vue中函数防抖节流的理解及应用实现
2020/04/24 Javascript
ant design中upload组件上传大文件,显示进度条进度的实例
2020/10/29 Javascript
[50:34]VGJ.T vs Fnatic 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
python爬虫_自动获取seebug的poc实例
2017/08/05 Python
python 搭建简单的http server,可直接post文件的实例
2019/01/03 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
pytorch标签转onehot形式实例
2020/01/02 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
美国豪华的多品牌精品店:The Webster
2019/07/31 全球购物
Helly Hansen工作服美国官方网上商店:为最恶劣的环境
2019/09/04 全球购物
Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别?
2014/07/27 面试题
演讲稿怎么写
2014/01/07 职场文书
汽修专业自荐信
2014/07/07 职场文书
环卫工人节活动总结
2014/08/29 职场文书
赵氏孤儿观后感
2015/06/09 职场文书
2016党员干部反腐倡廉心得体会
2016/01/13 职场文书
2019年“红色之旅”心得体会1000字(3篇)
2019/09/27 职场文书