NLP TASK3 特征选择

任务描述:

TF-IDF原理以及利用其进行特征筛选
互信息的原理以及利用其进行特征筛选

TFIDF原理简介

TFIDF一类用于计算单词在文章中重要程度的方法,分为两个部分,一部分是TF表示词频(通常会进行归一化,防止文章长度影响),另一部分IDF逆文档频率,用于降低不同文档中经常出现单词的权重。

计算公式

T F = 某 个 单 词 在 文 章 出 现 的 次 数 文 章 的 总 词 汇 TF=\frac{某个单词在文章出现的次数}{文章的总词汇} TF=
I D F = l o g ( 语 料 库 的 文 档 总 数 包 含 该 单 词 的 文 档 数 + 1 ) IDF=log(\frac{语料库的文档总数}{包含该单词的文档数+1}) IDF=log(+1)
T F − I D F = T F ∗ I D F TF-IDF=TF * IDF TFIDF=TFIDF

使用范例
from sklearn import feature_extraction
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.feature_extraction.text import CountVectorizer

if __name__ == "__main__":
    corpus = [
        'This is the first document.',
        'This is the second second document.',
        'And the third one.',
        'Is this the first document?',]

    vectorizer=CountVectorizer()#该类会将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在i类文本下的词频  
    transformer=TfidfTransformer()#该类会统计每个词语的tf-idf权值  
    tfidf=transformer.fit_transform(vectorizer.fit_transform(corpus))#第一个fit_transform是计算tf-idf,第二个

tfidf.toarray()
array([[0.        , 0.43877674, 0.54197657, 0.43877674, 0.        ,
        0.        , 0.35872874, 0.        , 0.43877674],
       [0.        , 0.27230147, 0.        , 0.27230147, 0.        ,
        0.85322574, 0.22262429, 0.        , 0.27230147],
       [0.55280532, 0.        , 0.        , 0.        , 0.55280532,
        0.        , 0.28847675, 0.55280532, 0.        ],
       [0.        , 0.43877674, 0.54197657, 0.43877674, 0.        ,
        0.        , 0.35872874, 0.        , 0.43877674]])
互信息原理简介

在文本特征筛选中,互信息常用的方法是计算文档中的词项t与文档类别c的互信息MI,MI度量的是词的存在与否给类别c带来的信息量。

计算公式

I ( X ; Y ) = ∑ x ∈ X ∑ y ∈ Y p ( x , y ) l o g p ( x , y ) p ( x ) p ( y ) I(X;Y)=\sum_{x \in X} \sum_{y \in Y}p(x,y)log\frac{p(x,y)}{p(x)p(y)} I(X;Y)=xXyYp(x,y)logp(x)p(y)p(x,y)

使用范例,使用上面TFIDF计算的X作为特征
from sklearn import datasets
from sklearn.feature_selection import mutual_info_classif

from sklearn import datasets
from sklearn import metrics as mr


x = tfidf.toarray()
label = np.array([1,1,1,0])

mutual_info = mutual_info_classif(x, label, discrete_features=False)
print(mutual_info)
参考资料

https://www.cnblogs.com/pinard/p/6693230.html
https://www.jianshu.com/p/f3b92124cd2b
https://www.jianshu.com/p/362cb98ed586
https://blog.youkuaiyun.com/u013710265/article/details/72848755

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值