ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python—sklearn特征提取

2022-03-20 19:06:09  阅读:323  来源: 互联网

标签:__ 特征值 python transfer feature 特征提取 new data 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有