机器学习 scikit-learn 特征提取

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/shuzhuchengfu/article/details/102519733

机器学习 scikit-learn 特征提取

字典特征抽取

from sklearn.feature_extraction.dict_vectorizer import DictVectorizer

def dict_extract():
    """字典特征抽取"""
    vector = DictVectorizer()
    res = vector.fit_transform(
        [{'city': "北京", 'temperature': 100}, {'city': "上海", 'temperature': 60}, {'city': "深圳", 'temperature': 30}])
    print(vector.get_feature_names())
    print(res.toarray())
    '''
    ['city=上海', 'city=北京', 'city=深圳', 'temperature']
    [[  0.   1.   0. 100.]
     [  1.   0.   0.  60.]
     [  0.   0.   1.  30.]]
    '''

文本特征抽取

from sklearn.feature_extraction.text import CountVectorizer

def text_extract():
    """
    文本特征抽取
    对于单个字母不进行统计
    """
    # 实例化 CountVectorizer
    vector = CountVectorizer()
    # 调用fit_transform输入并转换数据
    res = vector.fit_transform(["life is short,i like python", "life is too long,i dislike python"])
    # 打印结果
    print(vector.get_feature_names())
    print(res.toarray())
    '''
    ['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']
    [[0 1 1 1 0 1 1 0]
     [1 1 1 0 1 1 0 1]]
    '''

文本特征抽取(中英文混合)

from sklearn.feature_extraction.text import CountVectorizer
import jieba

def china_text_extract():
    """
    文本特征抽取
    单词+中文
    """
    vector = CountVectorizer()
    content1 = '人生苦短,我用python'
    content2 = '人生漫长,我不用python'
    result1 = ' '.join(list(jieba.cut(content1)))
    result2 = ' '.join(list(jieba.cut(content2)))
    print("result1: %s" % result1)
    print("result2: %s" % result2)
    res = vector.fit_transform([result1, result2])
    print(vector.get_feature_names())
    print(res.toarray())

    '''
    result1: 人生 苦短 , 我用 python
    result2: 人生 漫长 , 我 不用 python
    ['python', '不用', '人生', '我用', '漫长', '苦短']
    [[1 0 1 1 0 1]
     [1 1 1 0 1 0]]
    '''

TF-IDF

主要思想: 如果某个单词或短语在一篇文章中出现的概率高,并且在其他文章中很少出现,则认为此词或者短语具有很好的类别区分能力,适合用来分类。
作用: 用来评估一字词对于一个文件集或一个语料库中的其中一份文件的重要程度。

from sklearn.feature_extraction.text import TfidfVectorizer
import jieba

def tf_idf_text_extract():
    vector = TfidfVectorizer()
    content1 = '人生苦短,我用python'
    content2 = '人生漫长,我不用python'
    result1 = ' '.join(list(jieba.cut(content1)))
    result2 = ' '.join(list(jieba.cut(content2)))
    print("result1: %s" % result1)
    print("result2: %s" % result2)
    res = vector.fit_transform([result1, result2])
    print(vector.get_feature_names())
    print(res.toarray())

    '''
    result1: 人生 苦短 , 我用 python
    result2: 人生 漫长 , 我 不用 python
    ['python', '不用', '人生', '我用', '漫长', '苦短']
    [[0.40993715 0.         0.40993715 0.57615236 0.         0.57615236]
     [0.40993715 0.57615236 0.40993715 0.         0.57615236 0.        ]]
    '''

猜你喜欢

转载自blog.csdn.net/shuzhuchengfu/article/details/102519733