特征选择

特征选择

1. TF-IDF原理

TF-IDF是Term Frequency - Inverse Document Frequency的缩写,即“词频-逆文本频率”。它由两部分组成,TF和IDF。

TF即代表词频;IDF代表逆文本频率,反应了一个词在所有文本中出现的频率,如果一个词在很多的文本中出现,那么它的IDF值应该低,而反过来如果一个词在比较少的文本中出现,那么它的IDF值应该高。

2. 文本矩阵化(以TF-IDF特征值为权重)

from sklearn.feature_extraction.text import TfidfTransformer  
from sklearn.feature_extraction.text import CountVectorizer  
from sklearn.feature_extraction.text import TfidfVectorizer

corpus=["I come to China to travel", 
    "This is a car polupar in China",          
    "I love tea and Apple ",   
    "The work is to write some papers in science"] 
    
tfidf = TfidfVectorizer()
re = tfidf.fit_transform(corpus)
print (re)

3 互信息的原理

点互信息PMI(Pointwise Mutual Information)是用来衡量两个事物之间的相关性(比如两个词)。
在这里插入图片描述
点互信息PMI其实就是从信息论里面的互信息这个概念里面衍生出来的。

在这里插入图片描述

4 互信息特征筛选

from sklearn.feature_selection import VarianceThreshold,SelectKBest,chi2
from sklearn.datasets import load_iris
import pandas as pd
from sklearn.feature_selection import mutual_info_classif

#用于度量特征和离散目标的互信息
X,y = load_iris(return_X_y=True) 
X_df = pd.DataFrame(X,columns=list("ABCD"))

feature_cat = ["A","D"]
discrete_features =  []
feature = X_df.columns.values.tolist()
for k in feature_cat:
    if k in feature:
        discrete_features.append(feature.index(k))
        
mu = mutual_info_classif(X_df,y,discrete_features=discrete_features, 
                         n_neighbors=3, copy=True, random_state=None)

dict_feature = {}
for i,j in zip(X_df.columns.values,mu):
    dict_feature[i]=j

#对字典按照values排序
ls = sorted(dict_feature.items(),key=lambda item:item[1],reverse=True)

#特征选取数量
k =2
ls_new_feature=[]
for i in range(k):
    ls_new_feature.append(ls[i][0])

X_new = X_df[ls_new_feature]

参考
[1]: https://www.cnblogs.com/wzdLY/p/9689547.html
[2]: https://www.cnblogs.com/pinard/p/6693230.html
[3]: https://blog.csdn.net/u013710265/article/details/72848755

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值