事前數據處理
外表

喺機械學習同數據探勘等領域上,事前數據處理係攞到原始數據後要做嘅步驟。原始數據收集咗返嚟,研究者手上會有一個數據集,數據集裡便有齊晒每一個個案喺每個變數上嘅數值。喺現實世界當中,搜集數據嘅過程實係唔完全受控嘅,所以搜集返嚟嘅數據幾乎梗會出少少錯,例如
- 缺失數據:某幾個個案喺某個變數上嘅數值唔見咗;
- 不可能值:有啲個案有擺明係冇可能嘅值,例如某個個案喺年齡呢個變數上嘅值係負數;
呢啲噉嘅數據直接攞去分析,好易搞到程式出錯。因此,郁手做分析之前,往往要做一啲事前處理先[1][2][3]。
基礎
[編輯]舉例說明,假想有金融學方面嘅學者想用機械學習教電腦預測股價,佢可以去網上嘅金融數據庫嗰度,攞某一拃股票喺某段時間內嘅價格,當中一隻股票謂之一個個案,每隻股票都會喺
- 2019 年 7 月嘅價格
- 2019 年 8 月嘅價格
- ...
等嘅多個變數上有值,但係呢啲數據都係由人或者程式負責搜集嘅,兩者都可能會有失誤:例如可能有某隻股票喺 2019 年 7 月嘅價格係不詳;又或者搜集數據嘅單位搞錯嘢,有隻股票 2019 年 7 月嘅價格係負數(冇可能嘅值)。如果研究者就噉將呢啲數據入落俾機械學習程式處理,個程式就好可能會出錯。於是佢有需要做一啲事前處理,確保手上嘅數據集係可以處理嘅。
事前數據處理大致上涉及以下嘅工作[1]:
等等。
例碼
[編輯]以下係一段用 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.0 1.1 Pyle, D., 1999. Data Preparation for Data Mining. Morgan Kaufmann Publishers, Los Altos, California.
- ↑ Chicco D (December 2017). "Ten quick tips for machine learning in computational biology". BioData Mining. 10 (35): 1–17.
- ↑ 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.
- ↑ Data Preprocessing for Machine learning in Python 互聯網檔案館嘅歸檔,歸檔日期2019年7月6號,..