Hike News
Hike News

機器學習-轉換器&估計器(Transformer & Estimator)

轉換器(transformer)

  • 從原數據集經過轉換器轉為預處理數據集
  • 為一實現特徵工程的API

    Introduction

    之前所使用數據轉換的流程如下
  1. 實例化(實例化的就是一個轉換器類(transformer))
  2. 調用fit_transsform(X)方法

方法

一般轉換器的方法較常使用的為:

  • fit_transform()
    • 將輸入的數據直接轉換返回
    • 其作用等於fit()方法 + transform()方法
  • fit()
    • 輸入數據,但不做轉換(轉換交給transform)
      • 計算平均值、方差等值
      • 歸一化時則統計
  • transform()
    • 進行數據的轉換
      • 轉換時須在輸入同樣的數據,才會根據fit()方法的結果進行轉換
      • 也可以拿原數據fit()的結果,對其他數據進行轉換

Example I (fit_transform = fit + transform)

1
2
3
4
5
6
7
8
9
10
11
12
13
from sklearn.preprocessing import StandardScaler

data = [[1,2,3],
[4,5,6]]

fit_transform_test = StandardScaler()
DATA = fit_transform_test.fit_transform(data)
print("fit_transform result:\n",DATA)

fit_then_transform = StandardScaler()
fit_then_transform.fit(data)
DATA = fit_then_transform.transform(data)
print("fit_then_transform result:\n",DATA)

result

1
2
3
4
5
6
fit_transform result:
[[-1. -1. -1.]
[ 1. 1. 1.]]
fit_then_transform result:
[[-1. -1. -1.]
[ 1. 1. 1.]]
  • 可以看到其結果是一樣的

Example II (fit的結果對其他數據transform)

1
2
3
4
5
6
7
8
9
10
11
12
from sklearn.preprocessing import StandardScaler

data = [[1,2,3],
[4,5,6]]

data2 = [[11,12,13],
[14,15,16]]

fit_then_transform = StandardScaler()
fit_then_transform.fit(data)
DATA = fit_then_transform.transform(data2)
print("fit_then_transform result:\n",DATA)

result

1
2
3
4
5
6
fit_transform result:
[[-1. -1. -1.]
[ 1. 1. 1.]]
fit_then_transform result:
[[5.66666667 5.66666667 5.66666667]
[7.66666667 7.66666667 7.66666667]]
  • 拿對第一組數據(data)fit的結果對第二組數據(data2)transform

tips

  • 對同組數據進行轉換可直接調用fit_transform()
  • 若還有數據要使用fit_transform()結果進行轉換,直接調用transform()對新數據進行轉換

估計器(estimator)

在sklearn中,估計器(estimator)是一類實現了演算法的API

Introduction

演算法是機器學習的核心,數據和計算是基礎

  1. 用於分類的演算法:
    • sklearn.neighbors KNN演算法
    • sklearn.naive_bayes
    • sklearn.linear_model.LogisticRegression 邏輯回歸
    • sklearn.tree 決策樹與隨機森林
  2. 用於回歸的演算法:
    • sklearn.linear_model.LinearRegression 線性回歸
    • sklearn.linear_model.Ridge

流程

  1. 將轉換器處理後的數據集分為訓練集及測試集
  2. 調用fit()方法,並傳入參數及訓練集
  3. 進行測試
    • 調用predict()方法,返回預測的目標值
    • 調用score()方法,返回預測的準確率