Machine Learning 学习2(特征提取)

Machine Learning 学习2

特征提取

特征提取有两种方法,一种是DictVectorizer,另一种是CountVectorizer。分别用于字典特征提取和文本特征提取。

首先要从sklearn.feature_extraction中导入DictVectorizer这个类型,它的作用其实就是将字典集向量化。但是需要用一个变量将其实例化。

fit_transform()的返回值是一个sparse矩阵,将所有的特征值作为列索引,并且返回值即为1/0,表示后面的key是否表示该元素的属性;并且对于所有元素都有的key列下填入相应的值。

如下例字典特征提取:

import sklearn
from sklearn.feature_extraction import DictVectorizer

def dict_demo():
    # 一个字典集
    data = [{
    
    'city': '北京', 'temperature': 100}, {
    
    'city': '上海', 'temperature': 60}, {
    
    'city': '深圳', 'temperature': 30}]
    
    transfer = DictVectorizer()
    data_new = transfer.fit_transform(data)

    print("data_new:\n", data_new.toarray())
    print("data_new_name:\n", transfer.get_feature_names())

dict_demo()

输出:

data_new:
[[  0.   1.   0. 100.]
[  1.   0.   0.  60.]
[  0.   0.   1.  30.]]
data_new_name:
['city=上海', 'city=北京', 'city=深圳', 'temperature']

用实例化对象的get_feature_names()获取array中的列索引的特征值。

对于文本特征提取:

from sklearn.feature_extraction.text import CountVectorizer

def count_demo():
    data = ['life is short, i like like python.', 'life is too long, i dislike python']

    transfer = CountVectorizer()
    data_new = transfer.fit_transform(data)

    print("Data_new:\n", data_new.toarray())
    print("Data_new_name:\n", transfer.get_feature_names())

count_demo()

输出:

Data_new:
[[0 1 1 2 0 1 1 0]
[1 1 1 0 1 1 0 1]]
Data_new_name:
['dislike', 'is', 'life', 'like', 'long', 'python', 'short', 'too']

通过输出可以看到,data_new的的值有两行,而这两行正对应着文本集的两个元素,而列索引正是每一个元素出现的次数。

猜你喜欢

转载自blog.csdn.net/weixin_46052886/article/details/114285434