数据规约

数据规约算法

  • 再大数据集上进行复杂得数据分析和挖掘须要很长得时间,数据规约产生更小但保持原数据完整性得新数据集,再规约后得数据集上进行分析和挖掘将更有效率
  • 数据规约得意义
    1. 下降无效,错误数据对建模得影响,提升建模得准确性
    2. 少许且具备表明性得数据将大幅缩减数据挖掘所需得时间
    3. 下降存储数据得成本
  • 属性规约
    • 属性规约经过属性合并来建立新属性维数,或者直接经过删除不相关得属性(维)来减小数据维数,从而提升数据挖掘得效率,下降计算成本.属性规约得目标是寻找出最小得属性子集并确保新数据子集得几率分布尽量地接近原来数据集得几率分布,属性规约经常使用方法以下表:
    • 属性规约方法
      方法描述
      方法解析
      主要成分分析 用较少变量取解释原始数据中得大部分变量,即将许多相关型很高得变量转化成彼此相互独立或不相关得变量
      决策树概括 利用决策树得概括方法对初始数据进行分类概括学习,得到一个初始决策树,全部没有出现再这个决策树上得属性都可认为是无关属性,所以将这些属性从初始集合中删除就能够得到一个较优得属性子集 初始属性集: {A1,A2,A3,A4,A5,A6}
      合并属性 将一些旧属性合并为新属性

      初始属性集: {A1,A2,A3,A4,B1,B2,B3,C}数据库

      {A1,A2,A3,A4} -→Aapp

      {B1,B2,B3,B4}-→Bdom

      ===>规约后属性集:{A, B, C}函数

      逐步向前选择 从一个空属性集开始,每次从原来属性集合中选择一个当前最优得属性添加到当前属性子集中.直到没法选择出最优属性或知足必定阈值约束为止 初始属性集: {A1,A2,A3,A4,A5,A6} {}=>{A1}=>{A1,A4} =>规约后属性集:{A, B, C}
      逐步向后删除 从一个全属性集开始,每次从当前属性子集真能干选择一个当前最优得属性添加到当前属性子集中.直到没法选择出最差属性为止或知足必定阈值约束为止 初始属性值: {A1,A2,A3,A4,A5,A6} {}=>{A1,A3,A4,A5,A6}=>{A1,A4,A5,A6}=>规约后属性集:{A1,A4,A6}

 

    • copy
      • 类型:bool,True或者False,缺省时默认为True
      • 意义:表示是否在运行算法时,将原始训练数据复制一份.若为True,则运行PCA算法后,原始训练数据得值不会有任何改变,由于是再原始数据得副本上进行运算;若为False,则运行PCA算法后,原始训练数据得值会改,由于是在原始数据上进行降维计算
    • whiten
      • 类型:bool,缺省时默认为False
      • 意义:白化,使得每一个特征具备相同得方差
    • import pandas as pd
      from sklearn.decomposition import PCA
      
      data = pd.read_csv("principal_component.csv", header=None)
      
      pca = PCA()  # 实例化PCA这个类
      pca.fit(data)  # 训练数据
      pca.components_  # 返回模型得各个向量特征
      pca.explained_variance_ratio_  # 返回各个成分各自得方差百分比
      获得相应得特征向量和各个方差得百分比(也称贡献率),其中方差备份逼越大,向量得权重越大,当选中其中得几个主要得成分时,累计贡献量达到97.37%,
      说明选取这几个成分已经至关不错了,所以能够从新创建PCA模型,选取n_components=以前选取得成分数,从而计算出成分结
      pca = PCA(3)
      pca.fit(data)
      low_d = pca.transform(data)  # 下降原数据得维度
      pd.DataFrame(low_d).to_csv("dimention_reducted.csv")  # 保存结果
      
      pca.inverse_transform(low_d)  # 必要能够用inverse_trans_form()函数来复原数据

       

    • 数值规约
      • 数值规约是指经过选择代替得,较小的数据来减小数据量,包括有参数方法和无参数方法两类.有参数方法时使用一个模型来评估数据,只需存放参数,而不须要存放实际数据,例如回归(线性回归和多元回归)和对数线性模型(近似离散属性集中得多维几率分布).无参数方法就须要存放实际数据,例如直方图,聚类,抽样(采样)
      • 直方图:
        • 直方图使用分箱来近似数据分布,是一种流行得数据规约形式.属性A得直方图将A得数据分布划分为不相交得子集或桶.若是每一个桶只表明单个属性值/频率对,则该桶称为单桶.一般,桶表示给定属性得一个连续区间
      • 聚类:
        • 聚类技术将数据元组(即记录,数据表中的一行)视为对象.它将对象划分为簇,使一个簇中得对象相互"类似",而与其余簇中得对象"相异".再数据规约中,用数据得簇替换实际数据.该技术得有效性依赖于簇得定义是否符合数据分布得性质
      • 抽样:
        • 抽样也会死一种数据规约计数,他用比原始数据小得多得随机样本(子集)表示原始数据集.假定原始数据集D包含N个元组,能够采用抽样方法对D进行抽样
        • s个样本无放回简单随机抽样:从D得N个元组中抽取s个样本(s<N),其中D中任意元组被抽取得几率均为1/N,即全部元组得抽取时等可能得
        • s个样本有放回简单随机抽样:该方法相似于无放回简单随机抽样,不一样在于每次一个元组从D中国抽取后,记录它,而后放回原处
        • 聚类抽样:若是D中得元组放入M个互不相交得得"簇",则能够获得s个簇得简单随机抽样,其中s<M.例如,数据库中元组一般依次检索一页,,这样每页就能够视为一个簇
        • 分层抽样:若是D划分互不相交得部分,称做层,则经过对每一层得简单随机抽样就能够获得D得分层样本.
        • 用于数据规约时,抽样最经常使用来估计汇集查询得结果,再指定得偏差范围内,能够肯定(使用中心基线定理)估计一个给定得函数所须要得样本大小.一般样本得大小s相对于N很是小,而经过简单地增长样本大小,这样得集合能够进一步求精.
      • 参数回归:
        • 简单线性模型和对数线性模型能够用来近似描述给定得数据.线性模型对数据建模,使之拟合一条直线.
    • Python主要数据预处理函数
        • 函数名
          函数功能
          所属扩展库
          interpolate 一维,高维书插值 scipy
          unique 去除数据中得重复元素,获得单值元素列表,它是对象得方法名 Pandas/Numpy
          isnull 判断是否为空值 pandas
          notnull 判断是否非空值 pandas
          PCA 对指标表变量矩阵进行主成分分析 Scikit-Learn
          random 生成随机矩阵 Numpy
      • interpolate学习

          • 功能:interpolate时Scipy得一个子库,包含了大量得插值函数,如拉格朗日插值,样条插值,高维插值等.使用前须要用from scipy.interpolate import *引入相应得插值函数.
          • 使用格式:f = scipy.interpolate.lagrange(x,y).这里仅仅展现了一维数据得拉格朗日插值命令,其中x,y为对应得自变量和因变量数据,插值完成后,能够经过f(a)计算新的差hi结果.
      • unique:
        • 功能:去除数据中得重复元素,获得单值元素列表.它便是Numpy库得一个函数(np.unique()),也是series对象得一个方法
        • 使用格式:
          • np.unique(D),D是一维数据,能够是list,array,Series;
          • D.unique(), D是pandas得Series对象
      • isnull/notnull
        • 功能:判断每一个元素是否空值/非空值
        • 使用格式: D.isnull()/D.notnull.这里得D要求是Series对象,返回一个布尔Series.能够经过D[D.isnull()]或D[D.notnull()]找出D中得空值/非空值
      • random:
        • 功能:random是Numpy得一个子库(Python也自带了random,但Numpy得更强大),能够用该库下得各类函数生成服特定分布得随机矩阵,抽样时可使用
        • 使用格式: np.random.rand(k, m, n,...) 生成一个k * m * n ...随机矩阵,其元素均匀分布再区间(0, 1)上, np.random.randn(k, m, n)随机矩阵,其元素服从标准正太分布
      • PCA
        • 功能:对指标变量矩阵进行主成分分析.使用前须要用from sklearn.decomposition import PCA引入该函数
        • 使用格式: model=PCA().注意, Scikit-Learn下的PCA是一个建模得对象,也就是说,通常得流程是建模,而后是训练model.fit(D), D为要进行主成分分析得数据矩阵,训练结束后获取模型参数,如.components_获取特征向量, 以及.explained_variance_ratio_获取各个属性得贡献率等
      • # -*- coding:utf-8 -*-
        
        import sys
        
        reload(sys)
        sys.setdefaultencoding("utf-8")
        
        import numpy as np
        from sklearn.decomposition import PCA
        
        D = np.random.rand(10, 4)
        pca = PCA()  # 创建模型
        pca.fit(D)  # 训练模型
        PCA(copy=True, n_components=None, whiten=False)
        print pca.components_  # 返回模型得各个特征向量
        print pca.explained_variance_ratio_  # 返回各个成分各自得方差百分比
相关文章
相关标签/搜索