H2O是一個支援python的資料分析平台,提供python import套件,有機器學習及平行計算的API。我參考"Zocca, V., 「Python深度學習」, 2017年12月"的書,以H2O作異常偵測,以下解釋如何用H2O的autoencoder作:
安裝H2O時,需要有JAVA 8.0 JDK,太新的版本不行(例如10)。
需以下pip install套件:
grip
colorama
future
tabulate
requests
wheel
書中的範例是用來偵測MNIST異常數字辨識,程式碼如下:
import h2o
h2o.init()
%matplotlib inline
import pandas as pd
from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np
from pylab import rcParams
rcParams['figure.figsize'] = 20, 12
from six.moves import range
train_with_label = h2o.import_file("http://h2o-public-test-data.s3.amazonaws.com/bigdata/laptop/mnist/train.csv.gz")
test_with_label = h2o.import_file("http://h2o-public-test-data.s3.amazonaws.com/bigdata/laptop/mnist/test.csv.gz")
predictors = list(range(0,784))
train = train_with_label[predictors]
test = test_with_label[predictors]
from h2o.estimators.deeplearning import H2OAutoEncoderEstimator
model = H2OAutoEncoderEstimator(activation="Tanh", hidden=[20], ignore_const_cols = False, epochs=1)
model.train(x=predictors, training_frame=train)
test_rec_error = model.anomaly(test)
test_rec_error.describe()
test_rec_error_df = test_rec_error.as_data_frame()
test_rec_error_df['id'] = test_rec_error_df.index
test_rec_error_df.plot(kind='scatter', x='id',y='Reconstruction.MSE')
最後輸出如下的圖,秀出異常的資料。
沒有留言:
張貼留言