H2O - 執行示例應用程式



點選下面截圖所示示例列表中的“航空公司延誤流程”連結 -

Sample Application

確認後,將載入新的筆記本。

清除所有輸出

在我們解釋筆記本中的程式碼語句之前,讓我們清除所有輸出,然後逐步執行筆記本。要清除所有輸出,請選擇以下選單選項 -

Flow / Clear All Cell Contents

這在下面的螢幕截圖中顯示 -

Clearing Outputs

清除所有輸出後,我們將分別執行筆記本中的每個單元格並檢查其輸出。

執行第一個單元格

點選第一個單元格。左側會出現一個紅色標記,指示單元格已被選中。這在下面的螢幕截圖中顯示 -

First Cell

此單元格的內容只是用 MarkDown (MD) 語言編寫的程式註釋。內容描述了載入的應用程式的功能。要執行單元格,請點選“執行”圖示,如下圖所示 -

MarkDown

您不會在單元格下方看到任何輸出,因為當前單元格中沒有可執行程式碼。游標現在會自動移動到下一個單元格,該單元格已準備好執行。

匯入資料

下一個單元格包含以下 Python 語句 -

importFiles ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]

該語句將 allyears2k.csv 檔案從 Amazon AWS 匯入系統。執行單元格時,它會匯入檔案並提供以下輸出。

Statement Imports

設定資料解析器

現在,我們需要解析資料並使其適合我們的 ML 演算法。這是使用以下命令完成的 -

setupParse paths: [ "https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv" ]

執行上述語句後,將出現一個設定配置對話方塊。該對話方塊允許您設定用於解析檔案的多個設定。這在下面的螢幕截圖中顯示 -

configuration dialog

在此對話方塊中,您可以從給定的下拉列表中選擇所需的解析器並設定其他引數,例如欄位分隔符等。

解析資料

下一個語句實際上使用上述配置解析資料檔案,它很長,如下所示 -

parseFiles
paths: ["https://s3.amazonaws.com/h2o-airlines-unpacked/allyears2k.csv"]
destination_frame: "allyears2k.hex"
parse_type: "CSV"
separator: 44
number_columns: 31
single_quotes: false
column_names: ["Year","Month","DayofMonth","DayOfWeek","DepTime","CRSDepTime",
   "ArrTime","CRSArrTime","UniqueCarrier","FlightNum","TailNum",
   "ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
   "Origin","Dest","Distance","TaxiIn","TaxiOut","Cancelled","CancellationCode",
   "Diverted","CarrierDelay","WeatherDelay","NASDelay","SecurityDelay",
   "LateAircraftDelay","IsArrDelayed","IsDepDelayed"]
column_types: ["Enum","Enum","Enum","Enum","Numeric","Numeric","Numeric"
   ,"Numeric","Enum","Enum","Enum","Numeric","Numeric","Numeric","Numeric",
   "Numeric","Enum","Enum","Numeric","Numeric","Numeric","Enum","Enum",
   "Numeric","Numeric","Numeric","Numeric","Numeric","Numeric","Enum","Enum"]
delete_on_done: true
check_header: 1
chunk_size: 4194304

請注意,您在配置框中設定的引數列在上面的程式碼中。現在,執行此單元格。一段時間後,解析完成,您將看到以下輸出 -

configuration box

檢查資料框

處理後,它會生成一個數據框,可以使用以下語句檢查 -

getFrameSummary "allyears2k.hex"

執行上述語句後,您將看到以下輸出 -

DatExamining aframe

現在,您的資料已準備好輸入機器學習演算法。

下一個語句是程式註釋,說明我們將使用迴歸模型並指定預設正則化和 lambda 值。

構建模型

接下來是最重要的語句,即構建模型本身。這在以下語句中指定 -

buildModel 'glm', {
   "model_id":"glm_model","training_frame":"allyears2k.hex",
   "ignored_columns":[
      "DayofMonth","DepTime","CRSDepTime","ArrTime","CRSArrTime","TailNum",
      "ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
      "TaxiIn","TaxiOut","Cancelled","CancellationCode","Diverted","CarrierDelay",
      "WeatherDelay","NASDelay","SecurityDelay","LateAircraftDelay","IsArrDelayed"],
   "ignore_const_cols":true,"response_column":"IsDepDelayed","family":"binomial",
   "solver":"IRLSM","alpha":[0.5],"lambda":[0.00001],"lambda_search":false,
   "standardize":true,"non_negative":false,"score_each_iteration":false,
   "max_iterations":-1,"link":"family_default","intercept":true,
   "objective_epsilon":0.00001,"beta_epsilon":0.0001,"gradient_epsilon":0.0001,
   "prior":-1,"max_active_predictors":-1
}

我們使用 glm,這是一個廣義線性模型套件,其族型別設定為二項式。您可以在上面的語句中看到這些突出顯示的部分。在我們的案例中,預期輸出是二進位制的,這就是我們使用二項式型別的原因。您可以自己檢查其他引數;例如,檢視我們之前指定的 alpha 和 lambda。有關所有引數的說明,請參閱 GLM 模型文件。

現在,執行此語句。執行後,將生成以下輸出 -

Generated aframe

當然,執行時間在您的機器上會有所不同。現在,是此示例程式碼中最有趣的部分。

檢查輸出

我們只需使用以下語句輸出我們構建的模型 -

getModel "glm_model"

請注意,glm_model 是我們在上一條語句中構建模型時作為 model_id 引數指定的模型 ID。這為我們提供了詳細說明結果的巨大輸出,其中包含多個不同的引數。報告的部分輸出如下面的螢幕截圖所示 -

Examining Output

正如您在輸出中看到的,它表明這是在您的資料集上執行廣義線性建模演算法的結果。

在“評分歷史”上方,您會看到“模型引數”標籤,展開它,您將看到構建模型時使用的所有引數的列表。這在下面的螢幕截圖中顯示。

Scoring History

同樣,每個標籤都提供特定型別的詳細輸出。自己展開各個標籤以研究不同型別的輸出。

構建另一個模型

接下來,我們將在資料框上構建一個深度學習模型。示例程式碼中的下一個語句只是一個程式註釋。以下語句實際上是一個模型構建命令。如下所示 -

buildModel 'deeplearning', {
   "model_id":"deeplearning_model","training_frame":"allyear
   s2k.hex","ignored_columns":[
      "DepTime","CRSDepTime","ArrTime","CRSArrTime","FlightNum","TailNum",
      "ActualElapsedTime","CRSElapsedTime","AirTime","ArrDelay","DepDelay",
      "TaxiIn","TaxiOut","Cancelled","CancellationCode","Diverted",
      "CarrierDelay","WeatherDelay","NASDelay","SecurityDelay",
      "LateAircraftDelay","IsArrDelayed"],
   "ignore_const_cols":true,"res   ponse_column":"IsDepDelayed",
   "activation":"Rectifier","hidden":[200,200],"epochs":"100",
   "variable_importances":false,"balance_classes":false,
   "checkpoint":"","use_all_factor_levels":true,
   "train_samples_per_iteration":-2,"adaptive_rate":true,
   "input_dropout_ratio":0,"l1":0,"l2":0,"loss":"Automatic","score_interval":5,
   "score_training_samples":10000,"score_duty_cycle":0.1,"autoencoder":false,
   "overwrite_with_best_model":true,"target_ratio_comm_to_comp":0.02,
   "seed":6765686131094811000,"rho":0.99,"epsilon":1e-8,"max_w2":"Infinity",
   "initial_weight_distribution":"UniformAdaptive","classification_stop":0,
   "diagnostics":true,"fast_mode":true,"force_load_balance":true,
   "single_node_mode":false,"shuffle_training_data":false,"missing_values_handling":
   "MeanImputation","quiet_mode":false,"sparse":false,"col_major":false,
   "average_activation":0,"sparsity_beta":0,"max_categorical_features":2147483647,
   "reproducible":false,"export_weights_and_biases":false
}

正如您在上面的程式碼中看到的,我們指定 deeplearning 用於構建模型,並將多個引數設定為文件中指定的適當值深度學習模型。執行此語句時,它將比 GLM 模型構建花費更長的時間。模型構建完成後,您將看到以下輸出,儘管時間不同。

Building Another Model

檢查深度學習模型輸出

這會生成某種輸出,可以使用以下語句進行檢查,就像在之前的案例中一樣。

getModel "deeplearning_model"

我們將考慮如下所示的 ROC 曲線輸出以供快速參考。

Deep Learning

與之前的案例一樣,展開各個選項卡並研究不同的輸出。

儲存模型

在您研究了不同模型的輸出後,您決定在生產環境中使用其中一個模型。H20 允許您將此模型儲存為 POJO(普通舊 Java 物件)。

展開輸出中的最後一個標籤“預覽 POJO”,您將看到微調模型的 Java 程式碼。在您的生產環境中使用它。

Saving Model

接下來,我們將瞭解 H2O 的一個非常令人興奮的功能。我們將學習如何使用 AutoML 根據其效能測試和排名各種演算法。

廣告
© . All rights reserved.