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