算法基础---特征工程及特征抽取

1. DictVectorizer语法:

在这里插入图片描述

在这里插入图片描述

one-hot 编码分析:相当于设置哑变量
在这里插入图片描述
在这里插入图片描述

from sklearn.feature_extraction import DictVectorizer
from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
import jieba
def dictvec():
    """
    字典数据抽取
    :return:
    """
    #实例化
    dict=DictVectorizer()
    #调用fit_transform
    data=dict.fit_transform([{'city':'北京','temperature':100},{'city':'上海','temperature':89}])#{}字典
    print(dict.get_feature_names())#提取特征值
    print(dict.inverse_transform(data))#查看具体的特征值情况
    print (data)
    return None
def countvec():
    """
    对文本进行特征值化
    :return:None
    """
    cv=CountVectorizer()
    #data2=cv.fit_transform(['life is short, i like python','life is too long, i dislike nescience'])#生成文本列表
    data2 = cv.fit_transform(['人生 太短,我 喜欢python', '人生太长,我不喜欢nescience'])  # 列表
    print ('*****'*40)
    print(data2)#是sparse矩阵
    print ('#####**' * 40)
    print (cv.get_feature_names())
    print(data2.toarray())#将sparse矩阵转化成数组形式
    return None
#分词——>字符串,转换成以空格隔开的列表

2.文本特征值的数据抽取

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
设置默认路径
F:>cd F:\anaconda3\Lib\site-packages

单个字母不统计

3.词组生成器

在这里插入图片描述

jieba 文本特征值化的案例:文本分类

在这里插入图片描述

from sklearn.feature_extraction.text import CountVectorizer
import jieba
def cutword():  #分词 :导入jieba库
    #分词jieba.cut 生成的是列表
    con1 = jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。")

    con2 = jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")

    con3 = jieba.cut("如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。")
    #转换成列表
    content1=list(con1)
    content2=list(con2)
    content3=list(con3)
    #将列表转换成字符串
    c1=' '.join(content1)
    c2=' '.join(content2)
    c3=' '.join(content3)
    return  c1,c2,c3

def hanzivec():
    '''
    中文特征值化
    :return:None
    '''
    c1,c2,c3=cutword()
    print(c1,c2,c3)
    cv = CountVectorizer()
    # data2=cv.fit_transform(['life is short, i like python','life is too long, i dislike nescience'])#生成文本列表
    data2 = cv.fit_transform([c1,c2,c3])  # 列表
    # print ('*****' * 40)
    # print(data2)  # 是sparse矩阵
    print ('#####**' * 40)
    print (cv.get_feature_names())
    print(data2.toarray())  # 将sparse矩阵转化成数组形式
    return None

在这里插入图片描述

4.文本分类:TF-IDF----分类机器学习算法的重要依据

在这里插入图片描述
在这里插入图片描述

from sklearn.feature_extraction.text import CountVectorizer, TfidfVectorizer
import jieba
def cutword():  #分词 :导入jieba库
    #分词jieba.cut 生成的是列表
    con1 = jieba.cut("今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。")

    con2 = jieba.cut("我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。")

    con3 = jieba.cut("如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。")
    #转换成列表
    content1=list(con1)
    content2=list(con2)
    content3=list(con3)
    #将列表转换成字符串
    c1=' '.join(content1)
    c2=' '.join(content2)
    c3=' '.join(content3)
    return  c1,c2,c3
    # tf idf文本分类

def tfidfvec():
    '''
    中文特征值化
    :return:None
    '''
    c1,c2,c3=cutword()#调用上面的特征分类
    print(c1,c2,c3)
    tf = TfidfVectorizer()
    data=tf.fit_transform([c1,c2,c3])#生成文本列表
    print ('#####**' * 40)
    print (tf.get_feature_names())
    print(data.toarray())  # 将sparse矩阵转化成数组形式
    return None
if __name__=='__main__':  #调用类
    # dictvec()
    # countvec()
    tfidfvec()

在这里插入图片描述

重要性(浮点型的值) =tf*idf

tf idf 简介
文本特征分类功能:

1、文本特征抽取:count

文本分类----如每天的文献分类/文章的分类

2、tf idf:

2.1 tf:term frequency:词的频率 出现的次数(类似count)

2.2 idf:逆文档频率inverse document frequency

log(总文档数量/该词出现的文档数量)

例:log(数值):输入的数值越小,结果越小

tf*idf 重要性
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值