跳去內容

事前數據處理

出自維基百科,自由嘅百科全書
典型嘅數據集;當中每一個直行代表一個變數,每一個橫行代表一個個案,個數據集會有每個個案喺各變數上嘅數值。

機械學習數據探勘等領域上,事前數據處理係攞到原始數據後要做嘅步驟。原始數據收集咗返嚟,研究者手上會有一個數據集,數據集裡便有齊晒每一個個案喺每個變數上嘅數值。喺現實世界當中,搜集數據嘅過程實係唔完全受控嘅,所以搜集返嚟嘅數據幾乎梗會出少少錯,例如

  • 缺失數據:某幾個個案喺某個變數上嘅數值唔見咗;
  • 不可能值:有啲個案有擺明係冇可能嘅值,例如某個個案喺年齡呢個變數上嘅值係負數;

呢啲噉嘅數據直接攞去分析,好易搞到程式出錯。因此,郁手做分析之前,往往要做一啲事前處理先[1][2][3]

基礎

[編輯]

舉例說明,假想有金融學方面嘅學者想用機械學習教電腦預測股價,佢可以去網上嘅金融數據庫嗰度,攞某一拃股票喺某段時間內嘅價格,當中一隻股票謂之一個個案,每隻股票都會喺

  • 2019 年 7 月嘅價格
  • 2019 年 8 月嘅價格
  • ...

等嘅多個變數上有值,但係呢啲數據都係由人或者程式負責搜集嘅,兩者都可能會有失誤:例如可能有某隻股票喺 2019 年 7 月嘅價格係不詳;又或者搜集數據嘅單位搞錯嘢,有隻股票 2019 年 7 月嘅價格係負數(冇可能嘅值)。如果研究者就噉將呢啲數據入落俾機械學習程式處理,個程式就好可能會出錯。於是佢有需要做一啲事前處理,確保手上嘅數據集係可以處理嘅。

事前數據處理大致上涉及以下嘅工作[1]

  • 清走啲好明顯係出咗錯嘅數據,例如公共健康研究,問受訪者每日花幾多個鐘頭做運動,有人填咗 40
  • 將啲數據簡化,可以睇吓降維嘅概念;
  • 諗吓好唔好將啲數據嘅格式改變,等數據易睇啲。

等等。

例碼

[編輯]

以下係一段用 Python 程式語言寫嘅源碼,用途在於將啲數據重新縮放成 0 至 1 之間嘅數值(將每個變數,最大嘅數值設做 1,最細嘅數值設做 0,而喺中間嗰啲數值就按比例變成 0 至 1 之間嘅小數)。噉樣做係因為,有某啲機械學習演算法需要數據係 0 至 1 之間嘅數先至行得到[4]

# Python code to Rescale data (between 0 and 1) 
import pandas 
import scipy 
import numpy 
from sklearn.preprocessing import MinMaxScaler 
url = "https://archive.ics.uci.edu/ml/machine-learning-databases/pima-indians-diabetes/pima-indians-diabetes.data" # 指定一個網址
names = ['preg', 'plas', 'pres', 'skin', 'test', 'mass', 'pedi', 'age', 'class'] # 指定每個變數嘅名
dataframe = pandas.read_csv(url, names=names) # 由網址嗰度攞數據
array = dataframe.values # 將數據擺入去屬於個程式一個 array 嗰度
  
X = array[:,0:8] # X 呢個 array 包含咗用嚟做預測嘅變數
Y = array[:,8] # Y 呢個 array 包含咗要預測嘅變數

# 將 X 入面嘅數字重新縮放
scaler = MinMaxScaler(feature_range=(0, 1))
rescaledX = scaler.fit_transform(X) 
  
# 將做完縮放嘅嗰柞數據 show 出嚟睇
numpy.set_printoptions(precision=3) 
print(rescaledX[0:5,:])

睇埋

[編輯]

引用

[編輯]
  1. 1.0 1.1 Pyle, D., 1999. Data Preparation for Data Mining. Morgan Kaufmann Publishers, Los Altos, California.
  2. Chicco D (December 2017). "Ten quick tips for machine learning in computational biology". BioData Mining. 10 (35): 1–17.
  3. Oliveri, Paolo; Malegori, Cristina; Simonetti, Remo; Casale, Monica (2019). "The impact of signal pre-processing on the final interpretation of analytical outcomes – A tutorial". Analytica Chimica Acta. 1058: 9–17.
  4. Data Preprocessing for Machine learning in Python 互聯網檔案館歸檔,歸檔日期2019年7月6號,..

[編輯]