數據規約


數據規約

  • 再大數據集上進行復雜得數據分析和挖掘需要很長得時間,數據規約產生更小但保持原數據完整性得新數據集,再規約后得數據集上進行分析和挖掘將更有效率
  • 數據規約得意義
    1. 降低無效,錯誤數據對建模得影響,提高建模得准確性
    2. 少量且具有代表性得數據將大幅縮減數據挖掘所需得時間
    3. 降低存儲數據得成本
  • 屬性規約
    • 屬性規約通過屬性合並來創建新屬性維數,或者直接通過刪除不相關得屬性(維)來減少數據維數,從而提高數據挖掘得效率,降低計算成本.屬性規約得目標是尋找出最小得屬性子集並確保新數據子集得概率分布盡可能地接近原來數據集得概率分布,屬性規約常用方法如下表:
    • 屬性規約方法
      方法描述
      方法解析
      主要成分分析 用較少變量取解釋原始數據中得大部分變量,即將許多相關型很高得變量轉化成彼此相互獨立或不相關得變量
      決策樹歸納 利用決策樹得歸納方法對初始數據進行分類歸納學習,獲得一個初始決策樹,所有沒有出現再這個決策樹上得屬性均可認為是無關屬性,因此將這些屬性從初始集合中刪除就可以獲得一個較優得屬性子集 初始屬性集: {A1,A2,A3,A4,A5,A6}
      合並屬性 將一些舊屬性合並為新屬性

      初始屬性集: {A1,A2,A3,A4,B1,B2,B3,C}

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

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

      ===>規約后屬性集:{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_  # 返回各個成分各自得方差百分比

         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM