zoukankan      html  css  js  c++  java
  • 机器学习-特征抽取02

    特征抽取是对文本等数据进行值化,特征值化是为了让计算机能够更好的去理解数据。

    sklearn特征抽取api

    • sklearn.feature_extraction

    字典特征抽取(对字典数据进行特征值化)

    • from sklearn.feature_extraction import DictVectorizer
      在这里插入图片描述
    # 字典特征抽取
    from sklearn.feature_extraction import DictVectorizer
    
    dict = DictVectorizer(sparse=False)
    data = dict.fit_transform([{"city":"北京","temperature":100},{"city":"上海","temperature":60},{"city":"深圳","temperature":30}])
    print(dict.get_feature_names())
    print(data)
    

    在这里插入图片描述

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

    文本特征抽取(对文本数据进行特征值化)

    • from sklearn.feature_extraction.text import CountVectorizer

    在这里插入图片描述

    英文特征抽取

    from sklearn.feature_extraction.text import CountVectorizer # 导入包
    
    # 特征抽取
    # 实例化 CountVectorizer 对象
    vector = CountVectorizer()
    # 调用fit_transform 输入并转换数据
    data = vector.fit_transform(["life is is is short,i like python","life is too long,i dislike python"])
    # 打印结果
    print(vector.get_feature_names())
    print()
    print(data.toarray())
    

    在这里插入图片描述

    中文特征抽取

    from sklearn.feature_extraction.text import CountVectorizer # 导入包
    
    # 特征抽取
    # 实例化 CountVectorizer 对象
    vector = CountVectorizer()
    # 调用fit_transform 输入并转换数据
    data = vector.fit_transform(["人生苦短,我用python","人生 漫长,我不用python"])
    # 打印结果
    print(vector.get_feature_names())
    print()
    print(data.toarray())
    

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

    from sklearn.feature_extraction.text import CountVectorizer # 导入包
    import jieba
    
    def cutword():
        # 使用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 hanzi():
        c1,c2,c3 = cutword()
        print(c1,c2,c3)
        # 实例化 CountVectorizer 对象
        cv = CountVectorizer()
        # 调用fit_transform 输入并转换数据
        data = cv.fit_transform([c1,c2,c3])
        # 打印结果
        print(cv.get_feature_names())
        print(data.toarray())
    
    if __name__=='__main__':
        hanzi()
    

    在这里插入图片描述

    TF-IDF

    • TF-IDF 的主要思想是:如果某个词或短语在一篇文章中出现的频率高,并且在其它文章中很少出现,则认为改词或者短语具有很好的类别区分能力,适合用来分类。
    • TF-IDF作用:用以评估一字词对于一个文件集或一个语料库中的其中一份文件的重要性。

    tf : term frequency : 词的频率
    idf : 逆文档频率 : inverse document frequency log(总文档数量/(除以)该词出现的文档数量)
    log(数值):输入的数值越小,结果越小
    tf*idf = 重要性程度

    • from sklearn.feature_extraction.text import TfidfVectorizer

    在这里插入图片描述

    from sklearn.feature_extraction.text import TfidfVectorizer
    import jieba
    
    def cutword():
        # 使用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 tfidfvec():
        c1,c2,c3 = cutword()
        print(c1,c2,c3)
        # 实例化 TfidfVectorizer 对象
        tf = TfidfVectorizer()
        # 调用fit_transform 输入并转换数据
        data = tf.fit_transform([c1,c2,c3])
        # 打印结果
        print(tf.get_feature_names())
        print(data.toarray())
    
    if __name__=='__main__':
        tfidfvec()
    

    在这里插入图片描述

  • 相关阅读:
    教你解决Python爬虫的时候Xpath取值为空
    jmeter工具使用心得
    查找uipath项目中引用包的目录
    pandas 设置某列值的类型,求和指定列,给指定列赋值
    pandas 获取不符合条件/不包含某个字符串的dataframe
    Visual Studio清理最近項目和解決方案
    【vue BUG记录】作用域插槽
    银行下拉框数据
    as3.0对图片进行不规则切割源代码实例
    Vuforia+single image 问题
  • 原文地址:https://www.cnblogs.com/gemoumou/p/14186296.html
Copyright © 2011-2022 走看看