机器学习之特征工程:字典的特征提取总结反思

2.2 特征工程介绍
        算法 特征工程
        2.2.1 为什么需要特征工程(Feature Engineering)
        2.2.2 什么是特征工程
            sklearn用于 特征工程
            pandas用于 数据清洗、数据处理
                特征抽取/特征提取:将不同种类文本转换为数据类型,让计算机更好处理
                    机器学习算法 - 统计方法 - 数学公式
                        文本类型 -》 数值
                        类型 -》 数值
                    2.3.1 特征提取
                        sklearn.feature_extraction
                    2.3.2 字典特征提取 - 类别 -> one-hot编码
                    原理:字典是输入字典型数据以后,比如输入了三个字典(三个样例),每个字典两个特征值(图一),则最后将三个样本的两个特征值将变成位置变量以及对应值(若特征值等于字符串,则位置对应值1。若为数字,则对应值为数字)。
                    传参模式:[{'city': '北京','temperature':100}, {'city': '上海','temperature':60}, {'city': '深圳','temperature':30}]
                    调用:sklearn.feature_extraction.DictVectorizer(sparse=True,)
                        DictVectorizer(转换器类,将字典转换为数值)相关函数见图二
                        vector 数学:向量 物理:矢量
                            矩阵 matrix 二维数组
                            向量 vector 一维数组
                        父类:转换器类
                        返回sparse矩阵
                            sparse:稀疏矩阵
                                将非零值 按位置表示出来
                                节省内存 - 提高加载效率
                           若sparse=False
                           则返回one—hot矩阵:pandas离散化数据,使得每个类别相对公平的表示出来见下面图1
                        应用场景:
                            1)pclass, sex 数据集当中类别特征比较多
                                1、将数据集的特征-》字典类型
                                2、DictVectorizer转换
                            2)本身拿到的数据就是字典类型

机器学习之特征工程:字典的特征提取总结反思_第1张图片
图一
机器学习之特征工程:字典的特征提取总结反思_第2张图片
图二

代码运用
输出为spare矩阵===好处是对于大数据可以节省内存

from sklearn.feature_extraction import DictVectorizer
#将转换器引出来

def dict_demo():
    """
    字典特征抽取
    
    """
    data = [{'city': '北京','temperature':100}, {'city': '上海','temperature':60}, {'city': '深圳','temperature':30}]
    #字符串记得打引号,数字不打
    # 1、实例化一个转换器类
    transfer = DictVectorizer(sparse=True)
    #sparse=True表示输出为稀疏矩阵,False为one_hot 矩阵
    # 2、调用fit_transform()
    data_new = transfer.fit_transform(data)
    #将字典或含有字典的迭代器返回为矩阵
    print("data_new:\n", data_new, type(data_new))
    print("特征名字:\n", transfer.get_feature_names())

结果:data_new:
   (0, 1)	1.0
  (0, 3)	100.0
  (1, 0)	1.0
  (1, 3)	60.0
  (2, 2)	1.0
  (2, 3)	30.0 <class 'scipy.sparse.csr.csr_matrix'>
特征名字:
 ['city=上海', 'city=北京', 'city=深圳', 'temperature']

one_hot类型(spare= False)

data_new:
 [[  0.   1.   0. 100.]
 [  1.   0.   0.  60.]
 [  0.   0.   1.  30.]] <class 'numpy.ndarray'>
特征名字:
 ['city=上海', 'city=北京', 'city=深圳', 'temperature']

你可能感兴趣的:(python,机器学习)