數據預處理

數據的預處理app

  • 數據預處理的主要內容包括數據的清洗,數據的集成,數據的變換,數據的規約.
  • 數據清洗:數據的清洗主要是刪除原始數據集中的無關數據,重複數據,平滑噪聲數據,篩選掉與挖掘主體無關的數據,處理缺失值,異常值.
  • 缺失值的處理:缺失值的處理分爲3種方式:刪除記錄,數據補差,和不處理
  • 數據補插方式:
  • 使用固定值 將缺失值的屬性值,用一個常量替換.如廣州一個工廠普通外來務工人員的"基本工資"屬性的空缺值能夠用2015年廣州市普通外來務工人員工資標準1895元/月,該方法就是使用固定值來填補
    迴歸方法 對帶有缺失值的變量,根據已有的數據和其餘的有關的其餘變量(因變量)的數據創建擬合模型來預測缺失值的屬性值
    均值/中位數/衆數補插 根據屬性值的類型,用該屬性取值的平均數/中位數/衆數進行插補
    插值法 插值法是利用已知點創建合適的插值函數f(x),未知值由對應點xi求出的函數值,f(xi)近似代替
    最近鄰插補 在記錄中找到缺失值與卻只樣本最接近的樣本的該屬性值插補
  • 拉格朗日插值法:
    • 根據數學知識,對於平面上已知的n個點(無兩點在一條直線上)(那我覺的菏澤市一個散點圖吧)能夠找到一個n-1次多項式y=a0+a1x+a2x2+...+an-1xn-1次多項式:使這多項式曲線過這n個點
    • 已知過n個點的n-1次多項式:y =  a0 + a1x + a2x2 + ...+an-1xn-1
    • 將n個點的座標(x1,y1),(x2,y2)...(xn,yn)代入多項式函數,得
      • 1 = a0 + a1x1 + a2x1 + ... + an-1x1n-1
      • y2 = a0 + a1x1 + a2x22+ ... + an-1x2n-1
      • ....
      • yn = a0 + a1xn + a2xn2 + ... + an-1xnn-1
      • 終極公式:
      • 將缺失的函數值對應的點x代入插值多項式獲得缺失值的近似值L(x).拉格朗日插值公式結果緊湊,在理論分析中很方便,可是當插值節點增減時,插值多項式就會隨之變化,這在實際計算中時很不方便的,爲了克服這一缺點,提出了牛頓插值法.
  • 牛頓插值法
    • 求已知的n個點對(x1,y1),(x2,y2)...(xnyn)的全部階差商公式
    • 差商:差商既均差,指導數的近似值,對等步長(h)的離散函數f(x),其n階差商就是它的n階差分與其步長n次冪的比值.例如n=1時,若差分取向前的或向後的,所得一階差商就是函數導數的一階近似,若差分取中心的則所得一階差商時導數的二階近似
  • 拉格朗日插值實例:
  • import pandas as pd  # 導入數據分析庫pandas
    from scipy.interpolate import lagrange  # 導入拉個朗日插值函數
    
    data = pd.read_csv("./restaurant_sale.csv")  # 讀入數據
    print data
    print data["sales"]
    data["sales"][(data["sales"] < 400) | (data["sales"] > 5000)] = None # 過濾異常值,將其變爲空值
    
    # 自定義列向量插值函數
    # s爲列向量,n爲被插值的位置,k爲取先後的數據個數,默認爲5
    
    
    def ployinterp_column(s, n, k=5):
        y = s[list(range(n-k, n)) + list(range(n+1, n+1+k))]  # 取數
     y = y[y.notnull()]  # 剔除空值
     return lagrange(y.index, list(y))(n)  # 插值並返回插值結果
    
    
    # 逐個元素判斷是否須要插值
    for i in data.columns:
        print i  # 拿到的是表格的title
     for j in range(len(data)):
            print j  # 拿到的是每個title對應的數據
     if (data[i].isnull())[j]:  # 若是爲空即插值
     print data[i]
                data[i][j] = ployinterp_column(data[i], j)  # 執行自定義的拉格朗日插值函數
    # 輸出結果到文件中
    data.to_csv("./sales.csv")
  • 異常值處理
    • 在數據預處理時,異常值是否剔除,需視具體狀況而定,由於有些異常可能蘊含着有用信息
    • 異常值處理經常使用方法
    • 異常值處理方法
      方法描述
      不處理 直接在具備異常值的數據集上進行挖掘建模
      刪除含有異常值的記錄 直接將含有異常值的記錄刪除
      平均值修正 可用先後兩個觀測值的平均值修正該異常值
      視爲缺失值

      將異常值視爲缺失值,利用缺失值處理的方法進行處理函數

數據集成spa

  • 數據挖掘須要的數據每每分佈在不一樣的數據源中,數據集成就是將多個數據源合併存放在一個一致的數據存儲(如數據倉庫)中的過程,在數據集成時,來自多個數據源的現實世界實體的表達形式是不同的,有可能不匹配,要考慮實體識別問題和屬性冗餘問題,從而將源數據在最底層上加以轉換,提煉和集成.
  • 實體識別:
    • 實體識別:實體識別時指從不一樣數據源識別出現實世界的實體,它的任務是統一不一樣源數據的矛盾之處
      1. 同名異義:數據源A中的屬性ID和數據源B中的屬性ID分別描述的是菜品編號和訂單號,即描述的是不一樣的實體(不一樣事物具備相同的屬性,但描述的分別是對應實體的屬性)
      2. 異名同義:數據源A中的sales_dt和數據源B中的sales_date都是描述銷售日期,即A.sales_dt=B.sales_date.(實體之間屬性的命名不一樣,但都是表示同一個東西,eg:供貨商的出貨日期=經銷商的進貨日期)
      3. 單位不統一:描述同一個實體分別用國際單位和中國的傳統單位.
    • 檢測和解決這些衝突就是實體識別的任務
  • 冗餘屬性識別:
    • 數據集成每每致使數據冗餘.
      1. 同一屬性屢次出現;
      2. 同一屬性命名不一致致使重複
    • 仔細整合不一樣數據源能減小甚至避免數據冗餘與不一致,從而提升數據挖掘的速度和質量.對於冗餘性要先分析,檢測到後再將其刪除
    • 有些冗餘屬性能夠用相關性分析檢測,給定兩個數值型的屬性A和B,根據其屬性值,用相關係數度量一個屬性在多大程度上蘊含來那個一個屬性.
相關文章
相關標籤/搜索