1、文本特征抽取

what is 文本特征抽取?

  文本 --> number

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

 

方法:

 03_day1_特征工程 随笔 第1张

 

 用途:文本分类、情感分析

 

1、count

 类:sklearn.feature_extraction.text.CountVectorizer

 作用:对文本数据进行特征值化

 语法:

  03_day1_特征工程 随笔 第2张

  03_day1_特征工程 随笔 第3张

流程:

  1.实例化类CountVectorizer

  2.调用fit_transform方法输入data并转换

  03_day1_特征工程 随笔 第4张

代码:  

 

def countVect():
    """
    文本data抽取
    :return: None
    """
    # 1. 实例化
    cv = CountVectorizer()

    # 2.调用fit_transform转换data
    text1 = ["life is short,i like python", "life is too long,i dislike python"]
    text = ["生活很短,我喜欢python", "生活太久了,我不喜欢python"]
    data = cv.fit_transform(text)

    # 3.print result
    print(cv.get_feature_names())  # return list of word
    print(data.toarray())   # sparse矩阵 转换成 array二维
    # print(cv.inverse_transform(data))    # 基本用不到
 
if __name__ == '__main__':
    countVect()

 

result:

  英文    03_day1_特征工程 随笔 第5张

   中文    03_day1_特征工程 随笔 第6张

 

   两个 is

    03_day1_特征工程 随笔 第7张

    03_day1_特征工程 随笔 第8张

分析:

 03_day1_特征工程 随笔 第9张

    对于单个英文字母不统计:没有分类依据(无情感、不反映主题)

    

2、对中文文本特征化

1.如何去对中文文本特征值化?

  中文分词---> 特征提取

result:

  03_day1_特征工程 随笔 第10张

  03_day1_特征工程 随笔 第11张

  空格分开

  不支持单个中文字!

 

2. jieba分词

  03_day1_特征工程 随笔 第12张

 

 流程:

  03_day1_特征工程 随笔 第13张

coding:   

def zhCNVect():
    """
    中文特征值化
    :return: None
    """
    c1,c2,c3 = cutWord()

    # 实例化CountVectorizer
    ch_v = CountVectorizer()

    # fit_transfrom 文本转换成num
    data = ch_v.fit_transform([c1,c2,c3])

    # print result
    print(ch_v.get_feature_names())
    print(data.toarray())


def cutWord():
    # jieba.cut 分词
    input1 = "今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。"
    input2 ="我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。"
    input3 ="如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"

    con1 = jieba.cut(input1)
    con2 = jieba.cut(input2)
    con3 = jieba.cut(input3)

    # 转换成list
    content1 = list(con1)
    content2 = list(con2)
    content3 = list(con3)

    # list转换成str
    c1 = " ".join(content1)
    c2 = " ".join(content2)
    c3 = " ".join(content3)
    print(c1,c2,c3)
    return c1,c2,c3

if __name__ == '__main__':
    # dictVec()
    # countVect()
    zhCNVect()

 

result:

  03_day1_特征工程 随笔 第14张

 

 3、tfidf

 如何通过词语占比判定文章类型?

  NO!中性词的次数,我们,明天等

03_day1_特征工程 随笔 第15张

 

tfidf:朴素贝叶斯

tf: term frequency  词的频率 

   (出现的count)

idf: inverse document frequency  逆文档频率 

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

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

         03_day1_特征工程 随笔 第16张

tf * idf 重要性程度

 03_day1_特征工程 随笔 第17张

 

 类:sklearn.feature_extracion.text.TfidfVectorizer 

 语法:

  03_day1_特征工程 随笔 第18张

  代码:   

def cutWord():
    # jieba.cut 分词
    input1 = "今天很残酷,明天更残酷,后天很美好,但绝对大部分是死在明天晚上,所以每个人不要放弃今天。"
    input2 ="我们看到的从很远星系来的光是在几百万年之前发出的,这样当我们看到宇宙时,我们是在看它的过去。"
    input3 ="如果只用一种方式了解某样事物,你就不会真正了解它。了解事物真正含义的秘密取决于如何将其与我们所了解的事物相联系。"

    con1 = jieba.cut(input1)
    con2 = jieba.cut(input2)
    con3 = jieba.cut(input3)

    # 转换成list
    content1 = list(con1)
    content2 = list(con2)
    content3 = list(con3)

    # list转换成str
    c1 = " ".join(content1)
    c2 = " ".join(content2)
    c3 = " ".join(content3)
    print(c1,c2,c3)
    return c1,c2,c3


def tfidfvec():
    """
    中文特征值化
    :return:
    """
    c1,c2,c3 = cutWord()

    # 实例化CountVectorizer
    tf = TfidfVectorizer()

    # fit_transfrom 文本转换成num
    data = tf.fit_transform([c1,c2,c3])

    # print result
    print(tf.get_feature_names())
    print(data.toarray())


if __name__ == '__main__':
    tfidfvec()

   重要性

  03_day1_特征工程 随笔 第19张

why need TfidfVectorizer?

  03_day1_特征工程 随笔 第20张

 

 图片的分类  后面讲

 

2、data的特征预处理

03_day1_特征工程 随笔 第21张

03_day1_特征工程 随笔 第22张

1、what is 特征处理?

  统计方法,要求的data

  03_day1_特征工程 随笔 第23张

2、 特征预处理的方式

   03_day1_特征工程 随笔 第24张

3、sklearn特征处理api

  sklearn.preprocessing  

      there are all 预处理method

 

 4、归一化

1. what is 归一化?

  原始data  -----变换、映射---->  [0,1]

 03_day1_特征工程 随笔 第25张

2. 公式:

 03_day1_特征工程 随笔 第26张

03_day1_特征工程 随笔 第27张

3.计算过程

03_day1_特征工程 随笔 第28张

03_day1_特征工程 随笔 第29张

4. sklearn归一化api

  sklearn.preprocessing.MinMaxScalar

                scalar缩放

 

 5.语法

  03_day1_特征工程 随笔 第30张

6.步骤

  03_day1_特征工程 随笔 第31张

     input:二维array

7.代码

def minmaxSclar():
    """
    归一化处理
    :return: None
    """
    # mm = MinMaxScaler()
    mm = MinMaxScaler(feature_range=(2,3))
    data = mm.fit_transform([[90,2,10,40],[60,4,15,45],[75,3,13,46]])
    print(data)



if __name__ == '__main__':
    minmaxSclar()

 

  03_day1_特征工程 随笔 第32张03_day1_特征工程 随笔 第33张

 

8.归一化案例:约会对象data

03_day1_特征工程 随笔 第34张

 

  三个特征同等重要的时候,进行归一化

 03_day1_特征工程 随笔 第35张

 03_day1_特征工程 随笔 第36张

 

 目的:

  使得某一个特征对result不会造成更大的影响

 

 9.异常点

03_day1_特征工程 随笔 第37张

03_day1_特征工程 随笔 第38张

10. 归一化总结

  鲁棒性较差 (稳定性不行)

  传统精确小data场景 (基本无)

  03_day1_特征工程 随笔 第39张

 

5、标准化

1、 what is 标准化?

  原始data ----> 均值为0,方差为1

  03_day1_特征工程 随笔 第40张

 2、公式

  03_day1_特征工程 随笔 第41张

03_day1_特征工程 随笔 第42张

03_day1_特征工程 随笔 第43张

 

3、异常点

  对mean影响不大

  方差为0,所有这个特征的值基本一样

03_day1_特征工程 随笔 第44张

 

 

4.结合归一化来谈标准化

 03_day1_特征工程 随笔 第45张

5.sklearn特征化API

  scikit-learn.preprocessing.StandardScalar

 

6.语法

  data聚集zai 均值为0 方差为1的附近

03_day1_特征工程 随笔 第46张

7.步骤

  input 二维array

  03_day1_特征工程 随笔 第47张

8.代码

def stand():
    """
    标准化缩放
    :return:None
    """
    std = StandardScaler()
    data = std.fit_transform([[ 1., -1., 3.],[ 2., 4., 2.],[ 4., 6., -1.]])
    print(data)

if __name__ == '__main__':
    stand()

 

  03_day1_特征工程 随笔 第48张

 

 9.总结

  03_day1_特征工程 随笔 第49张

 

 3、缺失值

1.如何处理数据中的缺失值?方法

  03_day1_特征工程 随笔 第50张

2.sklearn缺失值API:

  sklearn.preprocessing.Imputer

 

 3.语法

  03_day1_特征工程 随笔 第51张

  missing_values  缺失值为空值

  strategy   填补策略

  axis  1/0  行/列

 

 03_day1_特征工程 随笔 第52张

4.流程

  03_day1_特征工程 随笔 第53张

5.代码  

def im():
    """
    缺失值处理
    :return: None
    """
    # NaN,nan  空值
    im = Imputer(missing_values="NaN",strategy="mean",axis=0)
    data = im.fit_transform([[1, 2], [np.nan, 3], [7, 6]])
    print(data)
    return None

if __name__ == '__main__':
    im()

 

  03_day1_特征工程 随笔 第54张

6.关于np.nan(np.NaN)

 03_day1_特征工程 随笔 第55张

 

 

 总结:

03_day1_特征工程 随笔 第56张

 

 

 

 

 

 

 

   

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄