zoukankan      html  css  js  c++  java
  • 信息增益算法

    上数据挖掘课的时候算过GINI指数,在寻找降维算法的时候突然看到了信息增益算法,突然发现信息增益算法和课上算的GINI指数很相似,于是就用在这次文本分类实验当中。总的来说信息增益算法是为了求特征t对于分类的贡献大小。贡献大则称信息增益大、贡献小信息增益小。文本分类自然是找那些对分类贡献大的词汇了。。。

    在信息增益算法当中关键要求的是条件熵,即固定特征t之后系统的熵,公式如下

    代码如下

     1 def get_conditional_entropy(word):
     2     sum1, sum2, word_total= 0, 0, 0
     3     
     4     for k,v in cate_word.items():
     5         word_total += cate_word[k][word]
    6 for k,v in cate_word.items(): 7 sum1 += cate_word[k][word] / word_total * math.log((cate_word[k][word] + 1) / word_total,2)
    8 p_t = word_total / text_total 9 p_t_ = (text_total - word_total) / text_total 10 11 for k,v in cate_word.items(): 12 # print("(text_total - word_total) is",str((text_total - word_total))) 13 # print("(cate_text_count[k] - cate_word[k][word]) is" ,str((cate_text_count[k] - cate_word[k][word]))) 14 # print("cate_text_count[k] is",str(cate_text_count[k])) 15 # print("cate_word[k][word] is",str(cate_word[k][word])) 16 # print(k) 17 # print(word) 18 sum2 += (cate_text_count[k] - cate_word[k][word] + 1)/(text_total - word_total + 1) * math.log((cate_text_count[k] - cate_word[k][word] + 1)/(text_total - word_total + 1),2) 19 20 return p_t * sum1 + p_t_ * sum2
  • 相关阅读:
    微信小程序-默认选中状态
    微信小程序-翻页(优化)
    openLayers3 中实现多个Overlay
    2月的最后一天
    2月27日
    杂记--写于狂风乱作的夜晚
    安装部署程序
    superMap Object 属性查看的一点代码
    坚持不懈的学习吧,少年
    Windows API中几个函数的总结
  • 原文地址:https://www.cnblogs.com/anqiang1995/p/7955713.html
Copyright © 2011-2022 走看看