c++test能不能导入keil工程_深度解析AutoML框架——H2O:小白也能使用的自动机器学习平台...
H2O是一個完全開源的、分布式的、具有線性可擴展性的內存的機器學習平臺。
它具有以下特點:
- 支持R和Python
- 支持最廣泛使用的統計和機器學習的算法,包括DRF,GBM,XGBoost,DL等
- 具有模型解釋能力
- 支持回歸和分類任務,AutoMl的功能只支持有監督任務
- 自動化
- 建立Web的交互界面,允許用戶直接交互進行機器學習操作
- 自動進行特征工程,模型驗證、調整、選擇和部署
- 自動可視化
安裝
python
python環境依賴包:grip、colorama、future、tabulate、requests和wheel
pip install h2o
or
下載解壓安裝http://h2o-release.s3.amazonaws.com/h2o/rel-yau/2/h2o-3.26.0.2.zip
R
install.packages("h2O")
下載軟件
下載地址,可免費試用21天。
使用示例
在使用前要確保能建立H2O集群
在環境變量設置了java路徑 的情況下在cmd執行以下命令:
java -jar path_to/h2o.jar
建立本地的h2o集群,通過http://localhost:54321查看,看到H2O Flow的Web界面即成功。H2O僅支持8,10,11,12版本的java。
H2O的數據特點
- 能從HDFS、S3、NoSQL、SQL中讀入數據并寫入
- 能從本地和分布式文件系統(nfs)接收csv格式的數據
- 能自動解析文件的格式
- H2O能將輸入的數據通過import_file函數將其轉換成H2O Frame,類似Pandas的DataFrame,是一種二維表。
H2O FLOW
H2O Flow是允許用戶進行機器學習的交互式界面,使用者能通過簡單的操作完成數據預處理、特征工程、建模和預測等功能。H2O Flow所有的功能均可使用代碼實現,H2O Flow省去了用戶編輯代碼的時間,用python實現下列功能的教程見Tutorials
使用示例
通過執行h2o.jar建立了h2o集群后,在瀏覽器輸入地址,看到H2o Flow的Web界面,如下圖所示:
簡單示例重要步驟
導入數據
將數據的路徑輸入即可,H2O會自行解析數據,搜索到數據文件后點擊import導入數據
建模
H2O提供多種經典的 機器學習算法,如圖所示:
建模過程有些參數可選,舉幾個例子:
- response_column(必選):確定預測目標
- ignore_columns:要去除的特征
- n_folds:n折交叉驗證
- Lambda_search:給模型增加正則化降低擬合度
具體參數設置和解釋見H2O Flow右側>HELP->Building Models
建模結束后平臺會對數據模型等進行分析,比如特征重要性,如圖所示
保存和導入模型
導航欄Model欄目有import和export model的選擇。
AutoML in H2O
H2O中對特征工程和模型超參數采用了grid search(窮舉)以及Stacking/Super Learning的方法搜索最優的模型。
grid search
H2O了兩種類型的grid search
- Cartesian:搜索所有模型參數組合的模型
- RandomDiscrete:隨機網格搜索將在某一特定時間段(或最大模型數內)隨機地采樣模型參數集
簡單示例
Cartesian
導入grid search包和機器學習算法,此處以GBM舉例
# Import H2O Grid Search: from h2o.grid.grid_search import H2OGridSearch ? # Import H2O GBM: from h2o.estimators.gbm import H2OGradientBoostingEstimator確定搜索空間(網格)
# GBM hyperparameters gbm_params1 = {'learn_rate': [0.01, 0.1], 'max_depth': [3, 5, 9],'sample_rate': [0.8, 1.0],'col_sample_rate': [0.2, 0.5, 1.0]}訓練和驗證網格包括的所有的模型
gbm_grid1 = H2OGridSearch(model=H2OGradientBoostingEstimator,grid_id='gbm_grid1',hyper_params=gbm_params1) gbm_grid1.train(x=x, y=y, training_frame=train, validation_frame=valid, ntrees=100,seed=1)比較各個模型的性能,結果如圖所示
gbm_gridperf1 = gbm_grid1.get_grid(sort_by='auc', decreasing=True)RandomDiscrete
需要設定類型和最大model數
# Search criteria search_criteria2 = {'strategy': 'RandomDiscrete', 'max_models': 36}實例化grid search的時候傳入搜索策略
gbm_grid2 = H2OGridSearch(model=H2OGradientBoostingEstimator,grid_id='gbm_grid2',hyper_params=gbm_params2,search_criteria=search_criteria2)Stacked Ensembles
Stacking算法是訓練metalearner(比如邏輯回歸)找到一些base算法的最佳組合,將他們集合在一起
算法步驟:
1.設置ensemble
- 明確一組L個基本算法作為算法基
- 明確元學習算法
2.訓練ensemble
- 在訓練集上訓練基本算法中的所有算法
- 在基本算法上進行k折交叉驗證并收集對應的預測值組成NXL矩陣(N代表訓練集的行數),和響應向量一起組成一級數據(其實就是將各個base模型產生的預測值作為特征)
- 在一級數據上訓練元學習算法,ensemble model里面包括了基本算法和元學習算法。
3.預測
- 先獲得各個基本算法的預測值
- 將這些預測值輸入元學習器獲得ensemble的預測值
使用示例
載入包
import h2o from h2o.estimators.random_forest import H2ORandomForestEstimator from h2o.estimators.gbm import H2OGradientBoostingEstimator from h2o.estimators.stackedensemble import H2OStackedEnsembleEstimator from h2o.grid.grid_search import H2OGridSearch from __future__ import print_function h2o.init() ```數據預處理
train = h2o.import_file("https://s3.amazonaws.com/erin-data/higgs/higgs_train_10k.csv") test = h2o.import_file("https://s3.amazonaws.com/erin-data/higgs/higgs_test_5k.csv") ? # Identify predictors and response x = train.columns y = "response" x.remove(y) ? # For binary classification, response should be a factor train[y] = train[y].asfactor() test[y] = test[y].asfactor()Stacking的方式有三種
- 單個訓練一組模型并將它們組成隊列
- 訓練一個網格(grid)的模型
- 訓練多個網格(grid)的模型
AutoML
H2O的AutoML訓練和交叉驗證下列算法:
- 一個隨機森林(DRF)
- 一個超隨機森林(XRT)
- 一個廣義線性模型的隨機網格(GLM)
- 一個極端梯度提升的隨機網格(XGBoost)
- 一個梯度提升的隨機網格(GBM)
- 一個深度學習的隨機網格(DeepLearning)
- 兩個ensemble模型
- 集成了所有的模型
- 集成了各種模型中性能最好的一個
使用示例
aml = H2OAutoML(max_models = 9)aml.train(x = x, y = y, training_frame = train) #展示結果aml.leaderboard #保存最好的模型 h2o.save_model(aml.leader, path = "./product_backorders_model_bin")結果如圖所示,產生了9個models(不包括ensemble模型)后停止,將性能從高到低排列。
Open for comments and suggestions!
2738073913@qq.com
鵬城實驗室人工智能中心
總結
以上是生活随笔為你收集整理的c++test能不能导入keil工程_深度解析AutoML框架——H2O:小白也能使用的自动机器学习平台...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 250鲁大师跑分_鲁大师跑分20万起步的
- 下一篇: jset编写测试vue代码_使用 Jes