python—sklearn特征提取
作者:互联网
目录
需要导入的包
from sklearn.feature_extraction import DictVectorizer#用于字典特征值提起
from sklearn.feature_extraction.text import CountVectorizer#用于文本提取
"""用于中文分词"""
import jieba.analyse
import jieba
特征提取官方教程网址:https://scikit-learn.org/stable/modules/feature_extraction.html#feature-extraction
特征值提取的基本步骤:
1.实例化一个转换器类
2.调用fit_transform方法进行转换
有一点注意的,获取特征值名字时,get_feature_names()这个方法在sklearn 1.0版本中已经弃用,会在1.2版本中删除
一.字典特征值提取
def dict_demo():
"""
字典特征值提取
"""
data=[{'name':'tutu','age':19},{'name':'lili','age':20},{'name':'haohao','age':21}]
#1.实例化一个转换器类
transfer=DictVectorizer(sparse=True)#sparse=True表示产生稀疏矩阵,可修改为Flase,默认值为True
#2.调用fit_transform
data_new=transfer.fit_transform(data)#对数据进行转换
print(transfer.get_feature_names_out())#打印特征值名字,get_feature_names()在1.0版本中已弃用,将在1.2版本删除
print(data_new.toarray())#打印特此矩阵
# print(data_new)#特征值的稀疏矩阵
if __name__ == '__main__':
dict_demo()
运行结果:
二.英文文本特征值提取
def count_english():
"""
文本特征值提取
"""
data=["I Iove three things in this world.","Sun,Moon and You.","Sun for morning,Moon for night,and You forever."]
#1.实例化一个转换器类
transfer=CountVectorizer(stop_words=['in','for'])#设置停用词
#2.调用fit_transform
data_new=transfer.fit_transform(data)#对数据进行转换
print(transfer.get_feature_names_out())#打印特征值名字
print(data_new.toarray())#打印特征值矩阵,数字代表是单词的次数
if __name__ == '__main__':
count_english()
运行结果:
三.中文文本特征值提取
中文文本特征值提取的步骤只比英文文本提取的步骤多了一步,就是分词,英文句子是已经通过空格就分好词了,但是中文文本没有,所以我使用jieba模块进行分词,当然,大家也可以使用其他模块进行分词。
def cut_word(text):
jieba.load_userdict(['它的'])#设置自己的词库
return ' '.join(list(jieba.lcut(text)))
def count_chinese():
"""
中文文本特征抽取,使用jieba分词
"""
data=['这寡独的黄昏','幕着雾与雨','我在我心的孤寂里','感觉到它的叹息。']
data_new=[]
for i in data:
data_new.append(cut_word(i))
#1.实例化一个转换器类
transfer=CountVectorizer()
#2.调用fit_transform
data_finall=transfer.fit_transform(data_new)
print(transfer.get_feature_names_out())#打印特征值名字
print(data_finall.toarray())#打印特征值矩阵
if __name__ == '__main__':
count_chinese()
运行结果:
最后送大家一张好看图片吧
标签:__,特征值,python,transfer,feature,特征提取,new,data,sklearn 来源: https://blog.csdn.net/qq_55977554/article/details/123618445