[特征工程]---OneHotEncoder与CountVectorizer

1.OneHotEncoder

from sklearn.preprocessing import  OneHotEncoder,LabelEncoder

#enc=OneHotEncoder()
#enc.fit(data_100)
#ans=enc.transform(data_200).toarray()
le = LabelEncoder()
le.fit(data_100)
ans=le.transform(data_100)
print(ans)

2.CountVectorizer

CountVectorizer是属于常见的特征数值计算类,是一个文本特征提取方法。

CountVectorizer会将文本中的词语转换为词频矩阵,它通过fit_transform函数计算各个词语出现的次数。

CountVectorizer是通过fit_transform函数将文本中的词语转换为词频矩阵,矩阵元素a[i][j] 表示j词在第i个文本下的词频。即各个词语出现的次数,通过get_feature_names()可看到所有文本的关键字,通过toarray()可看到词频矩阵的结果。
 

data['user_tags']
from sklearn.feature_extraction.text import CountVectorizer,TfidVectorizer

cv=CountVectorizer()
cv_fit=cv.fit_transform(data['user_tags'])

print(cv.get_feature_names())   #列表形式呈现文章生成的词典

print(cv.vocabulary_)   # 字典形式呈现,key:词,value:编号


print(cv_fit.toarray())   #.toarray() 是将结果转化为稀疏矩阵矩阵的表示方式;

print(cv_fit.toarray().sum(axis=0)) #每个词在所有文档中的词频

 结果太长我就不贴出来了。

TfidfVectorizer除了考量某一词汇在当前训练文本中出现的频率之外,同时关注包含这个词汇的其它训练文本数目的倒数。相比之下,训练文本的数量越多,TfidfVectorizer这种特征量化方式就更有优势。

如果某个词或短语在一篇文章中出现的频率TF高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类

参数说明:
max_df:这个给定特征可以应用在 tf-idf 矩阵中,用以描述单词在文档中的最高出现率。假设一个词(term)在 80% 的文档中都出现过了,那它也许(在剧情简介的语境里)只携带非常少信息。
min_df:可以是一个整数(例如5)。意味着单词必须在 5 个以上的文档中出现才会被纳入考虑。设置为 0.2;即单词至少在 20% 的文档中出现 。
ngram_range:这个参数将用来观察一元模型(unigrams),二元模型( bigrams) 和三元模型(trigrams)。参考n元模型(n-grams)。

tfidV=TfidVectorizer()

tfidV_fit=tfidV.fit_transform(data['user_tags'])

print(tfidV.get_feature_names())

print(tfidV.vocabulary_)

print(tfidV_fit.toarray())

参考:

1.sklearn——CountVectorizer详解

https://blog.csdn.net/weixin_38278334/article/details/82320307

2.Scikit-learn CountVectorizer与TfidfVectorizer

https://blog.csdn.net/the_lastest/article/details/79093407

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值