参考:https://www.jianshu.com/p/f3b92124cd2b

互信息

衡量两个随机变量之间的相关性,两个随机变量相关信息的多少。

随机变量就是随机试验结果的量的表示,可以理解为按照某个概率分布进行取值的变量,比如袋子里随机抽取一个小球就是一个随机变量,互信息就是对x和y所有可能

的取值的点互信息的加权和。

点的互信息PMI从互信息中衍生出来的

PMI用来衡量两个事物之间的相关性,公式

在概率论中,当p(x,y) = p(x) * p(y)我们说x于y相互独立。当概率加上log后,就变成了信息量。

例子:

衡量like这个词的极性(为正向情感还是负向情感),提前调一个正向情感的词如nice,算nice和like的PMI

PMI(like,nice) = log(p(like,nice)/p(like)p(nice))。PMI越大表示两个词的相关性就越大,nice的正向情感就越明显。

编程求解互信息:

 from sklearn import metrics as mr
mr.mutual_info_score([1,2,3,4],[4,3,2,1])

tf-idf

tf:Term Frequency 词频

idf: Inverse Document Frequency逆文档频率

在开始,我们用词频来衡量一个词的重量程度,这一点是不科学的,如进行简历筛选时,大部分人都有的技能并不是HR想要寻找的,反而是那些出现频率低的。

所以就出现了idf。

N代表语料库中文本的总数,N(x)代表语料库中包含x的文本数目。可见出现的频率越低,IDF值越大。

避免0概率事件,我们要进行平滑。

右边+1是为了避免该词在所有文本中都出现过,(N(x) = N ,log1=0)。

TF(x)指词在当前文本中的词频。

利用sklearn进行统计tfidf值

 from sklearn.feature_extraction.text import TfidfVectorizer
corpus = [
'this is the first document',
'this is the second second document',
'and the third one',
'is this the first document'
]
tfidf = TfidfVectorizer()
res = tfidf.fit_transform(corpus)
print(res)
  (0, 8)    0.4387767428592343
(0, 3) 0.4387767428592343
(0, 6) 0.35872873824808993
(0, 2) 0.5419765697264572
(0, 1) 0.4387767428592343
(1, 8) 0.27230146752334033
(1, 3) 0.27230146752334033
(1, 6) 0.2226242923251039
(1, 1) 0.27230146752334033
(1, 5) 0.8532257361452784
(2, 6) 0.2884767487500274
(2, 0) 0.5528053199908667
(2, 7) 0.5528053199908667
(2, 4) 0.5528053199908667
(3, 8) 0.4387767428592343
(3, 3) 0.4387767428592343
(3, 6) 0.35872873824808993
(3, 2) 0.5419765697264572
(3, 1) 0.4387767428592343

输出结果为:(文本id,词id)tfidf值

Task3.特征选择的更多相关文章

  1. 挑子学习笔记:特征选择——基于假设检验的Filter方法

    转载请标明出处: http://www.cnblogs.com/tiaozistudy/p/hypothesis_testing_based_feature_selection.html Filter ...

  2. 用信息值进行特征选择(Information Value)

    Posted by c cm on January 3, 2014 特征选择(feature selection)或者变量选择(variable selection)是在建模之前的重要一步.数据接口越 ...

  3. MIL 多示例学习 特征选择

    一个主要的跟踪系统包含三个成分:1)外观模型,通过其可以估计目标的似然函数.2)运动模型,预测位置.3)搜索策略,寻找当前帧最有可能为目标的位置.MIL主要的贡献在第一条上. MIL与CT的不同在于后 ...

  4. 【转】[特征选择] An Introduction to Feature Selection 翻译

    中文原文链接:http://www.cnblogs.com/AHappyCat/p/5318042.html 英文原文链接: An Introduction to Feature Selection ...

  5. 单因素特征选择--Univariate Feature Selection

    An example showing univariate feature selection. Noisy (non informative) features are added to the i ...

  6. 主成分分析(PCA)特征选择算法详解

    1. 问题 真实的训练数据总是存在各种各样的问题: 1. 比如拿到一个汽车的样本,里面既有以“千米/每小时”度量的最大速度特征,也有“英里/小时”的最大速度特征,显然这两个特征有一个多余. 2. 拿到 ...

  7. 干货:结合Scikit-learn介绍几种常用的特征选择方法

    原文  http://dataunion.org/14072.html 主题 特征选择 scikit-learn 作者: Edwin Jarvis 特征选择(排序)对于数据科学家.机器学习从业者来说非 ...

  8. 【Machine Learning】wekaの特征选择简介

    看过这篇博客的都应该明白,特征选择代码实现应该包括3个部分: 搜索算法: 评估函数: 数据: 因此,代码的一般形式为: AttributeSelection attsel = new Attribut ...

  9. weka特征选择(IG、chi-square)

    一.说明 IG是information gain 的缩写,中文名称是信息增益,是选择特征的一个很有效的方法(特别是在使用svm分类时).这里不做详细介绍,有兴趣的可以googling一下. chi-s ...

随机推荐

  1. AtomicReference 源码分析

    AtomicReference AtomicReference 能解决什么问题?什么时候使用 AtomicReference? 1)AtomicReference 可以原子更新引用对象. 2)comp ...

  2. AssertionError: View function mapping is overwriting an existing endpoint function: insertCase

    首先,理解这个错误是什么意思,以及出现的原因: 使用Flask定义URL的时候,如果出现"AssertionError: View function mapping is overwriti ...

  3. write()与writelines()

    f = open('user','a+') f.write('abcde')   #write只能写字符串 f.writelines(['444','rrrr','uuu'])  #writeline ...

  4. delphi开发实例:保存字体设置的方法

    http://blog.csdn.net/delphi308/article/details/9906147 delphi开发实例:保存字体设置的方法 2013-08-11 22:37 446人阅读  ...

  5. delphi如何按照控件的左右顺序来遍历窗体中的每个控件 [问题点数:20 http://bbs.csdn.net/topics/380216822

    delphi如何按照控件的左右顺序来遍历窗体中的每个控件delphi默认是按照控件添加进窗体的顺序来遍历的,有没有哪个属性能控制这个/?? 更多0分享到:   对我有用[0] 丢个板砖[0] 引用 | ...

  6. OpenResty json 删除转义符

    OpenResty 中删除 json 中的转义符 cjson 在 encode 时  “/” 会自动添加转义符 “\”: 在 decode 时也会自动将转义符去掉.工作中有个特殊需求,需要手工删除转义 ...

  7. nvm-windows编译源码 go遇到的问题

    异常: Microsoft Windows [Version 10.0.17134.1006] (c) Microsoft Corporation. All rights reserved. C:\U ...

  8. jmeter逻辑控制器详解(2)

    逻辑控制器 8.Runtime Controller 运行周期控制器,顾名思义,这是一种设置运行时间的控制器,它的效果就是使该控制器下的子项运行时间为[Runtime]中的数值(单位:s). Runt ...

  9. [Python3] 012 元组:list,我们不一样!

    目录 0. 元组的独白 1. 元组的创建 2. 元组的特性 (1) 概述 (2) 少废话,上例子 1) 索引 2) 分片 3) 序列运算 4) 成员检测 3. 元组的遍历 (1) 简单总结 (2) 少 ...

  10. 一个 Java 字符串到底有多少个字符?

    来源:http://dwz.win/jqd 依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 \u0000 (0),最大值是\uffff(65535), 也就是一个字 ...