資料預處理概述
概況起來,常遇到的資料存在噪聲、冗餘、關聯性、不完整性等。本章將考慮這些問題,在使用演算法學習之前,首先需要對資料進行分析,根據資料的不同情況,採用不同的方法對資料進行預處理,資料預處理常見的方法如下:
1. 資料清理:主要是指將資料中缺失的值補充完整、消除噪聲資料、識別或刪除離群點並解決不一致性。主要是達到如下目標:將資料格式標準化,異常資料清除,錯誤糾正,重複資料的清除。
2. 資料整合:主要是將多個資料來源中的資料進行整合並統一儲存。
3. 資料變換:主要是指通過平滑聚集,資料概化,規範化等方式將資料轉換成適用於資料探勘的形式。
4. 資料歸約:資料探勘時往往資料量非常大,因此在少量資料上進行挖掘分析就需要很長的時間,資料歸約技術主要是指對資料集進行歸約或者簡化,不僅保持原資料的完整性,並且資料歸約後的結果與歸約前結果相同或幾乎相同。
這些資料處理技術在資料探勘之前使用,然後才能輸入到機器學習演算法中進行學習。這樣大大提高了資料探勘模式的質量,降低實際挖掘所需要的時間
資料清理
主要是針對資料之中包含缺失的資料,存在異常資料和資料包含噪聲的情況。當出現這些情況的時候,需要對資料進行過濾清洗清理。
異常資料分析和處理
- MAD法:
MAD又稱為絕對值差中位數法(Median Absolute Deviation)。MAD 是一種先需計算所有因子與平均值之間的距離總和來檢測離群值的方法。
處理的邏輯:第一步,找出所有因子的中位數 Xmedian;第二步,得到每個因子與中位數的絕對偏差值 Xi−Xmedian;第三步,得到絕對偏差值的中位數 MAD;最後,確定引數 n,從而確定合理的範圍為 [Xmedian−nMAD,Xmedian+nMAD],並針對超出合理範圍的因子值做如下的調整:
- 3σ法
又稱為標準差法。標準差本身可以體現因子的離散程度,是基於因子的平均值 Xmean而定的。在離群值處理過程中,可通過用 Xmean±nσ來衡量因子與平均值的距離。
標準差法處理的邏輯與MAD法類似,首先計算出因子的平均值與標準差,其次確認引數 n(這裡選定 n = 3),從而確認因子值的合理範圍為 [Xmean−nσ,Xmean+nσ],並對因子值作如下的調整:
- 百分位法:
計算的邏輯是將因子值進行升序的排序,對排位百分位高於97.5%或排位百分位低於2.5%的因子值,進行類似於 MAD 、 3σ 的方法進行調整。
- 箱型圖分析
箱型圖提供了一個識別異常值的標準,即大於或小於箱型圖設定的上下界的數值即為異常值,箱型圖如下圖所示:
首先我們定義下上四分位和下四分位。
上四分位我們設為 U,表示的是所有樣本中只有1/4的數值大於U
同理,下四分位我們設為 L,表示的是所有樣本中只有1/4的數值小於L
那麼,上下界又是什麼呢?
我們設上四分位與下四分位的插值為IQR,即:IQR=U-L
那麼,上界為 U+1.5IQR ,下界為: L - 1.5IQR
異常值的處理方法常用有四種:
1.刪除含有異常值的記錄
2.將異常值視為缺失值,交給缺失值處理方法來處理
3.用平均值來修正
4.不處理
需要強調的是,如何判定和處理異常值,需要結合實際。
缺失值處理
造成資料缺失的原因是多方面的,主要可能有以下幾種:
1. 有些資訊暫時無法獲取,致使一部分屬性值空缺出來。
2. 有些資訊因為一些人為因素而丟失了。
3. 有些物件的某個或某些屬性是不可用的。如一個未婚者的配偶姓名。
4. 獲取這些資訊的代價太大,從而未獲取資料。
空值的存在,造成了以下影響:
1. 系統丟失了大量的有用資訊;
2. 系統的不確定性更加顯著,系統中的確定性成分更難把握;
3. 包含空值的資料會使挖掘過程陷入混亂,導致不可靠的輸出。
處理缺失值的方法有很多,如忽略存在缺失資料的記錄、
手工填寫缺失值、使用預設值代替缺失值、使用屬性平均值 去掉包含缺失資料的屬性、使用同類樣本平均值代替缺失值、預測最可能的值代替缺失值等。(中位數或眾數)代替缺失值、
其中,經常使用資料補插方法來代替缺失值,這些方法又可以細分為以下幾種。
(1)最近鄰補插:使用含有缺失值的樣本附近的其他樣本的資料替代:或者前後教據的平均值替代等。
(2)迴歸方法:對含有缺失值的屬性,使用其他樣本該屬性的值建立擬合模型, 然後使用該模型預測缺失值。
(3)插值法:和迴歸法類似,該方法使用已知資料建立合適的插值函式,缺失值使用該函式計算出近似值代替。常見的插值函式有拉格朗日插值法、牛頓插值法、分段插值法、樣條插值法、Hermite 插值法等。
噪聲資料處理
1.噪聲是什麼?資料集中的干擾資料(對場景描述不準確的資料)
2.噪聲怎麼產生的?舉個例子:手機訊號來自於基站發射的電磁波,有的地方比較強,有的地方比較弱。運營商的工程師會負責統計不同區域訊號強弱來進行網路規劃,工程師採集訊號的方法就是將一個訊號接受終端固定到車上,然後開車繞著基站轉,訊號終端就會自動採集不同區域的訊號強度,生成一份資料。但是如果車在採集過程中遇到了突發事件、急剎車,就可能會對訊號採集造成一定的影響,生成噪聲資料。
3.噪聲對模型訓練有什麼影響?很多演算法,特別是線性演算法,都是通過迭代來獲取最優解的,如果資料中含有大量的噪聲資料,將會大大的影響資料的收斂速度,甚至對於訓練生成模型的準確也會有很大的副作用。
去除噪聲方法1 正態分佈
根據不同的業務場景有不同的處理方法,這裡只提出正態分佈3σ原則。正態分佈也叫常態分佈,是連續隨機變數概率分佈的一種,自然界、人類社會、心理、教育中大量現象均按正態分佈,如能力的高低、學生成績的好壞都屬於正態分佈,我們可以把資料集的質量分佈立傑成一個正態分佈。它會隨著隨機變數的平均數、標準差與單位不同而有不同的分佈形態。正態分佈可以表示成一種概率密度函式。
正態分佈公式
其中,σ可以表示成資料集的標準差,μ代表資料集的均值,x代表資料集的資料。相對於正常資料,噪聲資料可以理解為小概率資料。
正態分佈具有這樣的特點:x落在(μ-3σ,μ+3σ)以外的概率小於千分之三。根據這一特點,我們可以通過計算資料集的標準差,把三倍於資料集的標準差的點設想為噪聲資料排除。
示例
from __future__ import division
mat = [[19, 26, 63], [13, 62, 65], [16, 69, 15], [14, 56, 17], [19, 6, 15], [11, 42, 15], [18, 58, 36], [12, 77, 33],
[10, 75, 47], [15, 54, 70], [10017, 1421077, 4169]]
# 獲得矩陣的欄位數量
def width(lst):
i = 0;
for j in lst[0]:
i += 1
return i
# 得到每個欄位的平均值
def GetAverage(mat):
n = len(mat)
m = width(mat)
num = [0] * m
for i in range(0, m):
for j in mat:
num[i] += j[i]
num[i] = num[i] / n
return num
# 獲得每個欄位的標準差
def GetVar(average, mat):
ListMat = []
for i in mat:
ListMat.append(list(map(lambda x: x[0] - x[1], zip(average, i))))
n = len(ListMat)
m = width(ListMat)
num = [0] * m
for j in range(0, m):
for i in ListMat:
num[j] += i[j] * i[j]
num[j] /= n
return num
# 獲得每個欄位的標準差
def GetStandardDeviation(mat):
return list(map(lambda x:x**0.5,mat))
# 對資料集去噪聲
def DenoisMat(mat):
average = GetAverage(mat)
variance = GetVar(average, mat)
standardDeviation=GetStandardDeviation(variance)
section = list(map(lambda x: x[0] + 3*x[1], zip(average, standardDeviation)))
n = len(mat)
m = width(mat)
num = [0] * m
denoisMat = []
noDenoisMat=[]
for i in mat:
for j in range(0, m):
if i[j] > section[j]:
denoisMat.append(i)
break
if j==(m-1):
noDenoisMat.append(i)
print("去除完噪聲的資料:")
print(noDenoisMat)
print("噪聲資料:")
return denoisMat
if __name__ == '__main__':
print("初始資料:")
print(mat)
print(DenoisMat(mat))
去除噪聲方法2:分箱:
分箱方法是一種簡單常用的預處理方法,通過考察相鄰資料來確定最終值。所謂“分箱”,實際上就是按照屬性值劃分的子區間,如果一個屬性值處於某個子區間範圍內,就稱把該屬性值放進這個子區間所代表的“箱子”內。把待處理的資料(某列屬性值)按照一定的規則放進一些箱子中,考察每一個箱子中的資料,採用某種方法分別對各個箱子中的資料進行處理。在採用分箱技術時,需要確定的兩個主要問題就是:如何分箱以及如何對每個箱子中的資料進行平滑處理。
分箱的方法:有4種:等深分箱法、等寬分箱法、最小熵法和使用者自定義區間法。
統一權重,也成等深分箱法,將資料集按記錄行數分箱,每箱具有相同的記錄數,每箱記錄數稱為箱子的深度。這是最簡單的一種分箱方法。
統一區間,也稱等寬分箱法,使資料集在整個屬性值的區間上平均分佈,即每個箱的區間範圍是一個常量,稱為箱子寬度。
使用者自定義區間,使用者可以根據需要自定義區間,當使用者明確希望觀察某些區間範圍內的資料分佈時,使用這種方法可以方便地幫助使用者達到目的。
例:客戶收入屬性income排序後的值(人民幣元):800 1000 1200 1500 1500 1800 2000 2300 2500 2800 3000 3500 4000 4500 4800 5000,分箱的結果如下。
統一權重:設定權重(箱子深度)為4,分箱後
箱1:800 1000 1200 1500
箱2:1500 1800 2000 2300
箱3:2500 2800 3000 3500
箱4:4000 4500 4800 5000
統一區間:設定區間範圍(箱子寬度)為1000元人民幣,分箱後
箱1:800 1000 1200 1500 1500 1800
箱2:2000 2300 2500 2800 3000
箱3:3500 4000 4500
箱4:4800 5000
使用者自定義:如將客戶收入劃分為1000元以下、1000 ~ 2000、2000 ~ 3000、3000 ~ 4000和4000元以上幾組,分箱後
箱1:800
箱2:1000 1200 1500 1500 1800 2000
箱3:2300 2500 2800 3000
箱4:3500 4000
箱5:4500 4800 5000
分箱後需要對每一個資料求平均值處理
資料平滑方法:按平均值平滑、按邊界值平滑和按中值平滑。
⑴按平均值平滑
對同一箱值中的資料求平均值,用平均值替代該箱子中的所有資料。
⑵按邊界值平滑
用距離較小的邊界值替代箱中每一資料。
⑶按中值平滑
取箱子的中值,用來替代箱子中的所有資料。
聚類方法
將物理的或抽象物件的集合分組為由類似的物件組成的多個類。
找出並清除那些落在簇之外的值(孤立點),這些孤立點被視為噪聲。
迴歸方法
試圖發現兩個相關的變數之間的變化模式,通過使資料適合一個函式來平滑資料,即通過建立數學模型來預測下一個數值,包括線性迴歸和非線性迴歸。
資料整合
我們日常使用的資料來源於各種渠道,有的是連續的資料,有的是離散資料、有的是模糊資料,有的是定性資料,有的是定量資料。資料整合就是將多檔案或者多資料庫中的異構資料進行合併,然後存放在一個統一的資料庫中進行儲存。在進行資料的整合過程中,一般需要考慮以下問題:
實體識別
主要指資料來源來源不同,其中多的概念定義不一樣
- 同名異意:資料來源A的某個資料特徵的名稱和資料來源B的某個資料特徵是一樣的但是表示的內容不一樣。
- 異名同義:資料來源A的某個特徵的名稱和資料來源B的某個特徵名稱不一樣,但是表達的內容不一樣。
- 單位不統一:不同地資料來源記錄的單位不一樣,比如統計身高、一個資料來源以m為單位,一個使用英尺
冗餘屬性
指資料中存在冗餘,一般分為一下兩種
- 同一屬性出現多次,比如兩個資料來源都記錄每天的最高溫度和最低溫度,當資料整合時,就出現了兩次。
- 同一屬性命名不一致而導致資料重複
資料不一致
編碼使用的不一致問題和資料表示的不一致問題,比如舊的身份證號15位,而新的時18位
資料變換
資料變換是指將資料轉換或統一成適合於機器學習的形式。就像人類學習一樣,需要將採集的外部資料轉換成我們可以接收的形式。
由於實際過程中採集的各種資料,形式多種多樣,格式也不一致,這些都需要採用一定的資料預處理,使得他們符合機器學習的演算法使用。
資料變換常用方法如下:
使用簡單的數學函式對資料進行變換
對採集的原始資料使用各種簡單的數學函式進行轉換,常見的函式包括平方、開方、取對數、差分運算等(壓縮變大或者壓縮變小)。
歸一化
特徵歸一化也叫做資料無量綱化,主要包括:總和標準化、標準差標準化、極大值標準化、極差標準化。這裡需要說明的是,基於樹的方法是不需要進行特徵歸一化的,例如GBDT,bagging、boosting等等,而基於引數的模型或基於距離的模型,則都需要進行特徵歸一化。
- 總和標準化
總和標準化處理後的資料介於(0,1)之間,並且它們的和為1。總和標準化的步驟和公式也非常簡單:分別求出各聚類要素所定義的資料的總和,以各要素的資料除以該要素的資料總和,即:
經過總和標準化處理後所得的新資料滿足:
- 標準差標準化
標準差標準化公式如下:
其中
標準差標準化處理後所得到的新資料,各要素(指標)的平均值0,標準差為1,即:
- 極大值標準化
結果極大值標準化的公式如下所示:
極大值標準化後的新資料,各要素的最大值為1,其餘各項都小於1。
對稀疏資料進行中心化會破壞稀疏資料的結構,這樣做沒有什麼意義,但可以對稀疏資料標準化,極大值標準化就是為稀疏資料設計的,同時這也是一種常用的方法,Python中極大值標準化為MaxAbsScaler(),如果要使用Python中標準差標準化(StandardScaler)則需要設定with_centering = False,否則將破壞資料稀疏性。
- 極差標準化(區間放縮法,0-1標準化)
極差標準化的計算公式如下:
經過極差標準化處理後的新資料,各要素的極大值為1,極小值為0,其餘數值均在0與1之間。這裡的min{x_ij}和max{x_ij}指的是和x_ij同一列的最小值和最大值。
如果資料中有離群點,對資料進行均值和方差的標準化效果並不好,這時候可以使用robust_scale和RobustScaler作為代替,它們有對資料中心化和資料的縮放魯棒性更強的引數。
連續特徵變換
連續特徵變換的常用方法有三種:基於多項式的資料變換、基於指數函式的資料變換、基於對數函式的資料變換。連續特徵變換能夠增加資料的非線性特徵捕獲特徵之間的關係,有效提高模型的複雜度。
#encoding=utf-8
"""
生成多項式特徵與自定義函式(如:log等)
在輸入特徵中增加非線性特徵可以有效提高模型的複雜度,其中最常用的是多項式特徵
matrix =
[[0 1 2]
[3 4 5]
[6 7 8]]
當degree = 2時,以第二行為例:
[1 3 4 5 3*3 3*4 3*5 4*4 4*5 5*5]
當degree = 3時,以第二行為例::
[1 3 4 5 3*3 3*4 3*5 4*4 4*5 5*5 3*3*3 3*3*4 3*3*5 4*4*3 4*3*5 5*5*3 4*4*4 4*4*5 4*5*5 5*5*5]
"""
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.preprocessing import FunctionTransformer
"""生成多項式"""
X = np.arange(9).reshape(3,3)
print(X)
ploy = PolynomialFeatures(2)
print(ploy.fit_transform(X))
ploy = PolynomialFeatures(3)
print(ploy.fit_transform(X))
"""自定義轉換器"""
X = np.array([[0,1],[2,3]])
transformer = FunctionTransformer(np.log1p) #括號內的就是自定義函式
print(transformer.fit_transform(X))
transformer = FunctionTransformer(np.exp)
print(transformer.fit_transform(X))
輸出結果:
(env_default) PS F:\workspace> python .\test.py
[[0 1 2]
[3 4 5]
[6 7 8]]
[[ 1. 0. 1. 2. 0. 0. 0. 1. 2. 4.]
[ 1. 3. 4. 5. 9. 12. 15. 16. 20. 25.]
[ 1. 6. 7. 8. 36. 42. 48. 49. 56. 64.]]
[[ 1. 0. 1. 2. 0. 0. 0. 1. 2. 4. 0. 0. 0.
0.
0. 0. 1. 2. 4. 8.]
[ 1. 3. 4. 5. 9. 12. 15. 16. 20. 25. 27. 36. 45.
48.
60. 75. 64. 80. 100. 125.]
[ 1. 6. 7. 8. 36. 42. 48. 49. 56. 64. 216. 252. 288. 294.
336. 384. 343. 392. 448. 512.]]
[[0. 0.69314718]
[1.09861229 1.38629436]]
[[ 1. 2.71828183]
[ 7.3890561 20.08553692]]
(env_default) PS F:\workspace>
連續屬性離散化
-
離散化技術分類
連續屬性的離散化方法也可以被稱為分箱法,即將一組連續的值根據一定的規則分別放到其術語的集合中。
離散化技術可以根據如何對資料進行離散化加以分類,可以根據是否使用類資訊或根據進行方向(即自頂向下或自底向上)分類。
如果離散化過程使用類資訊,則稱它為監督離散化(superviseddiscretization);否則是非監督的(unsupervised)。
如果首先找出一點或幾個點(稱作分裂點或割點)來劃分整個屬性區間,然後在結果區間上遞迴地重複這一過程,則稱它為自頂向下離散化或分裂。自底向上離散化或合併正好相反,首先將所有的連續值看作可能的分裂點,通過合併相鄰域的值形成區間,然後遞迴地應用這一過程於結果區間。 -
無監督離散化與監督離散化
根據資料是否包含類別資訊可以把它們分成有監督的資料和無監督的資料。有監督的離散化要考慮類別資訊而無監督的離散化則不需要。-
無監督離散化
假設屬性的取值空間為
,離散化之後的類標號是
,則無監督離散化的情況就是X已知而Y未知。以下介紹幾種常用的無監督離散化方法:
(1) 等寬演算法
根據使用者指定的區間數目K,將屬性的值域[Xmin−Xmax]劃分成K個區間,並使每個區間的寬度相等,即都等於Xmax−XminK。缺點是容易受離群點的影響而使效能不佳。
(2) 等頻演算法
等頻演算法也是根據使用者自定義的區間數目,將屬性的值域劃分成K個小區間。他要求落在每個區間的物件數目相等。譬如,屬性的取值區間內共有M個點,則等頻區間所劃分的K個小區域內,每個區域含有MK個點。
(3) K-means聚類演算法
首先由使用者指定離散化產生的區間數目K,K-均值演算法首先從資料集中隨機找出K個資料作為K個初始區間的重心;然後,根據這些重心的歐式距離,對所有的物件聚類:如果資料x距重心Gi最近,則將x劃歸Gi所代表的那個區間;然後重新計算各區間的重心,並利用新的重心重新聚類所有樣本。逐步迴圈,直到所有區間的重心不再隨演算法迴圈而改變為止。 -
監督離散化
監督離散化就是事先X和Y均為已知,然後找到某個函式,利用X值對Y值做預測。可以建立迴歸或者分類模型。
以下介紹的自下而上或者自上而下的分類方法都屬於監督離散化方法。
-
-
齊次性的卡方檢驗
在介紹兩種基於卡方檢驗的離散化演算法之前,先來介紹一下齊次性的卡方檢驗。
資料:有rr個總體。
從每個總體中抽取一個隨機變數,記第ii個樣本含有的觀測數是
,
每個樣本的每個觀測值可以歸為cc個不同類別中的一類。記Oij為樣本ii的觀測值歸入類j的個數,所以,
對於所有的樣本i,將資料排列成以下的r∗c
類1 | 類2 | ⋯⋯ | 類c | 總和 | |
---|---|---|---|---|---|
總體1 | O11 | O12 | ⋯⋯ | O1c | n1 |
總體2 | O21 | O22 | ⋯⋯ | O21 | n2 |
⋯⋯ | ⋯⋯ | ⋯⋯ | ⋯⋯ | ⋯⋯ | ⋯⋯ |
總體r | Or1 | Or2 | ⋯⋯ | Orc | nr |
總和 | C1 | C2 | ⋯⋯ | Cc | N |
假設:
記pijpij為隨機取到第ii個總體劃分為第jj類的概率,j∈[i,c]i∈[1,r],。
H0:同一列中所有的概率相等(即對任意的j,p1j=p2j=⋯=prjp1j=p2j=⋯=prj)。
H1:每列中至少存在兩個概率不相等(即給定j,存在i和k,使得pij≠pkj)。
檢驗統計量χ2為:
零分佈:
吸菸 | 不吸菸 | 總計 | |
---|---|---|---|
男 | 20 | 5 | 25 |
女 | 10 | 15 | 25 |
總計 | 30 | 20 | 50 |
首先假設H0:性別和吸菸相關。
根據公式求得χ2=8.33,自由度為1,查表可得p值小於0.005,所以拒絕原假設。
-
自上而下的卡方分裂演算法
該分裂演算法是把整個屬性的取值區間當做一個離散的屬性值,然後對該區間進行劃分,一般是一分為二,即把一個區間分為兩個相鄰的區間,每個區間對應一個離散的屬性值,該劃分可以一直進行下去,直到滿足某種停止條件,其關鍵是劃分點的選取。
分裂步驟:
依次計算每個插入點的卡方值,當卡方值達到最大時,將該點作為分裂點,屬性值域被分為兩塊。
然後再計算卡方值,找到最大值將屬性值域分成三塊。
停止準則:
當卡方檢驗顯著,即pp值<α<α時,繼續分裂區間;
當卡方檢驗不顯著,即pp值⩾α⩾α時,停止分裂區間; -
ChiMerge演算法
ChiMerge演算法是一種基於卡方值的自下而上的離散化方法。和上一種演算法正好相反。
分裂步驟:
第一步:根據要離散的屬性對例項進行排序:每個例項屬於一個區間
第二步:合併區間,計算每一對相鄰區間的卡方值
停止準則:
當卡方檢驗不顯著,即pp值⩾α時,繼續合併相鄰區間;
當卡方檢驗顯著,即pp值<α時,停止區間合併; -
基於熵的離散化方法
本方法也是一種自上而下的離散化方法。首先,定義一下熵的概念:
其中,
是第i個區間中類jj的概率。該劃分的總熵e是每個區間的熵的加權平均:
其中
是第i個區間的值的比例,n是區間個數。
劃分過程:
首先將屬性的取值值域按照值得大小排序。 把每個值看作是可能的分割點,依次把區間分成兩部分計算它們的熵值,取熵值最小的作為第一次劃分點。
然後選取一個區間,通常選擇熵值最大的區間重複此過程。
當區間個數達到使用者指定的個數或某個使用者指定的終止條件則停止繼續分裂。
資料規約
資料歸約是指在儘可能保持資料原貌的前提下,最大限度地精簡資料量。原資料可以用來得到資料集的歸約表示,它接近於保持原資料的完整性,但資料量比原資料小得多,與非歸約資料相比,在歸約的資料上進行挖掘,所需的時間和記憶體資源更少,挖掘將更有效,併產生相同或幾乎相同的分析結果。
資料規約常用方法如下:
常用維歸約
常用維歸約、 數值歸約等方法實現:維歸約也稱為特徵規約,是指通過減少屬性特徵的方式壓縮資料量,通過移除不相關的屬性, 可以提高模型效率。維歸約的方法很多。例如,AIC準則可以通c過選擇最優模型來選擇屬性: LASS通過定約束條件選擇變數:分類樹、隨機森林通過對分類效果的影響大小篩選屬性;小波變換、主成分分析通過把原資料變換或投影到較小的空間來降低維數。
數值歸約
數值歸約也稱為樣本規約,樣本歸約就是從資料集中選出一個有代表性的樣本的子集。子集大小的確定要考慮計算成本、儲存要求、估計量的精度及其他一些與演算法和資料特性有關的因素。例如,引數方法中使用模型估計資料,就可以只存放模型引數代替存放實際資料,如迴歸模型和對數線性模型都可以用來進行引數化資料歸約。對於非引數方法,可以使用直方圖、聚類、抽樣和資料立方體聚集為方法。
本作品採用《CC 協議》,轉載必須註明作者和本文連結
文章來源首發於我的部落格Stray_Camel(^U^)ノ~YO