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版本中删除,可用get_feature_names_out()替代

一.字典特征值提取

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()

运行结果:

python—sklearn特征提取_第1张图片

二.英文文本特征值提取

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()

运行结果:

python—sklearn特征提取_第2张图片

三.中文文本特征值提取

中文文本特征值提取的步骤只比英文文本提取的步骤多了一步,就是分词,英文句子是已经通过空格就分好词了,但是中文文本没有,所以我使用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—sklearn特征提取_第3张图片

最后送大家一张好看图片吧

python—sklearn特征提取_第4张图片

你可能感兴趣的:(机器学习,python,机器学习,数据挖掘)