• 字典特征和文本特征数据抽取


    一.字典特征数据抽取

    把字典中一些类别数据,分别进行转换成特征数据(one-hot).

    在机器学习中为了方便日后的数据处理,我们需要对数据进行抽取,如:{‘name’:'李华','age':23}这样一条数据,数据量很小,处理起来很方便,但是当数据量非常大的时候,直接处理就会显得很是耗费处理资源,所以,可以对数据进行特征提取。

    如下:一个list

    [{‘name’:'李华','age':23},{‘name’:'张红','age':22}]

    sparse矩阵表示如下:

    (0, 0) 23.0   #(0,0)是23.0的坐标,下面都一样
    (0, 2) 1.0
    (1, 0) 22.0
    (1, 1) 1.0

    代码如下:

    from sklearn.feature_extraction import DictVectorizer
    #字典特征抽取
    def dictvec():
        dict = DictVectorizer()
    
        data=dict.fit_transform([{'name':'李华','age':23},{'name':'张红','age':22}])
        print(data)
    
        return None
    
    if __name__ == '__main__':
        dictvec()

    可能还是不明白为什么?下面进一步?

    不用sparse矩阵

    from sklearn.feature_extraction import DictVectorizer
    #字典特征抽取
    def dictvec():
        dict = DictVectorizer(sparse=False)
    
        data=dict.fit_transform([{'name':'李华','age':23},{'name':'张红','age':22}])
        print(dict.get_feature_names())
        print(data)
    
        return None
    
    if __name__ == '__main__':
        dictvec()

    结果如下:

    ['age', 'name=张红', 'name=李华']
    [[23.  0.  1.]
     [22.  1.  0.]]
    这种编码方式叫:One-hot

    现在可以清楚的看出特征处理后的数据形式了,就是每一列是一个属性(特征),相应的位置对应相应的值。

    第一行[23. 0. 1.] 就是

    (0,0) 23

    (0,1)  0

    (0,2) 1  此时表示是李华

    二.文本特征数据抽取

    统计单词个数

    from sklearn.feature_extraction.text import CountVectorizer
    #文本特征抽取
    def dictvec():
        cv = CountVectorizer()
    
        data=cv.fit_transform(["life is short, i like life"])
        print(cv.get_feature_names())
        print(data.toarray())
    
        return None
    
    if __name__ == '__main__':
        dictvec()
    ['is', 'life', 'like', 'short']
    [[1 2 1 1]]
  • 相关阅读:
    查看网站上保存的密码
    前端图片预览
    Amaze UI的一点总结
    简单实现图片验证码
    获取网页数据的例子
    谈谈网页中的ajax
    网页小技巧-360doc个人图书馆复制文字
    Js中的4个事件
    网页页面蒙版实现
    Spring+SprinMVC配置学习总结
  • 原文地址:https://www.cnblogs.com/little-monk96/p/14308689.html
Copyright © 2020-2023  润新知