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 获取文件列表(或是目录例表)
Mar 25 Python
Python中的数据对象持久化存储模块pickle的使用示例
Mar 03 Python
使用Python实现简单的服务器功能
Aug 25 Python
python使用pil库实现图片合成实例代码
Jan 20 Python
TensorFlow实现创建分类器
Feb 06 Python
python 读取视频,处理后,实时计算帧数fps的方法
Jul 10 Python
python模块之subprocess模块级方法的使用
Mar 26 Python
用python建立两个Y轴的XY曲线图方法
Jul 08 Python
Django的Modelforms用法简介
Jul 27 Python
利用OpenCV和Python实现查找图片差异
Dec 19 Python
Pytorch数据拼接与拆分操作实现图解
Apr 30 Python
M1芯片安装python3.9.1的实现
Feb 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
用文本文件实现的动态实时发布新闻的程序
2006/10/09 PHP
php中的strpos使用示例
2014/02/27 PHP
Laravel使用Caching缓存数据减轻数据库查询压力的方法
2016/03/15 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
jquery图片上下tab切换效果
2011/03/18 Javascript
javascript 基础篇4 window对象,DOM
2012/03/14 Javascript
JS+CSS实现一个气泡提示框
2013/08/18 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
js的回调函数详解
2015/01/05 Javascript
JS获取鼠标相对位置的方法
2016/09/20 Javascript
JS常用正则表达式总结【经典】
2017/05/12 Javascript
webpack-dev-server远程访问配置方法
2018/02/22 Javascript
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
vue.js的双向数据绑定Object.defineProperty方法的神奇之处
2019/01/18 Javascript
如何在vue中使用jointjs过程解析
2020/05/29 Javascript
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
九步学会Python装饰器
2015/05/09 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
对Python字符串中的换行符和制表符介绍
2018/05/03 Python
python爬虫获取百度首页内容教学
2018/12/23 Python
python基于pygame实现飞机大作战小游戏
2020/11/19 Python
悦木之源美国官网:Origins美国
2016/08/01 全球购物
德国机场停车位比较和预订网站:Ich-parke-billiger
2018/01/08 全球购物
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
美国女士内衣在线折扣商店:One Hanes Place
2019/03/24 全球购物
测量实习生自我鉴定
2013/09/19 职场文书
好家长事迹材料
2014/01/23 职场文书
小学数学教学反思
2014/02/02 职场文书
高中学生干部学习的自我评价
2014/02/21 职场文书
幼儿园教师岗位职责
2014/03/17 职场文书
新农村建设标语
2014/06/24 职场文书
应届生求职自荐信
2014/07/04 职场文书
公司领导班子对照材料
2014/08/18 职场文书
商务宴会祝酒词
2015/08/11 职场文书
2016年综治宣传月活动宣传标语口号
2016/03/16 职场文书