AutoML 能为预估可视化难题手动找出统计数据预备、数学模型和数学模型超模块的最差女团,责任编辑重新整理了5个最常用且被津津乐道的开放源码AutoML 架构。
AutoML架构继续执行的各项任务能被归纳成下列几点:
预处置和清扫统计数据。选择并构筑适度的特点。优先选择最合适的数学模型。强化数学模型超模块。内部结构设计数学模型的流形内部结构(假如采用广度自学)。机器自学数学模型预处置。结论的可视化和展现。在责任编辑中,他们将如是说下列5 个开放源码 autoML 库或架构:
Auto-SklearnTPOTHyperopt SklearnAuto-KerasH2O AutoML1、Auto-Sklearn
Auto-sklearn 是两个照相狸尾豆的智能化机器自学库。 auto-sklearn 以 scikit-learn 为此基础,手动搜寻恰当的自学演算法并强化其超模块。 透过元自学、可计算性强化和软件系统自学等搜寻能获最差的统计信息处置管线和数学模型。它能处置绝大部分繁杂的组织工作,比如预处置和特点技术开发: One-Hot 标识符、特点常量、最优化等。
加装:
#pip
pip install auto-sklearn
#conda
conda install -c conda-forge auto-sklearn
即使展开了大批的PCB,因此采用的方式sklearn基本上那样,下列是实例标识符:
import sklearn.datasets
import sklearn.metrics
import autosklearn.regression
import matplotlib.pyplot as plt
X, y = sklearn.datasets.load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, random_state=1)
automl = autosklearn.regression.AutoSklearnRegressor(
time_left_for_this_task=120,
per_run_time_limit=30,
tmp_folder=/tmp/autosklearn_regression_example_tmp,
)
automl.fit(X_train, y_train, dataset_name=diabetes)
2、TPOT
TPOT(Tree-based Pipeline Optimization Tool)是两个 Python 智能化机器自学工具,它采用遗传演算法强化对机器自学的流程展开强化。它也是基于 Scikit-Learn 提供的方式展开统计数据转换和机器自学数学模型的构筑,但是它采用遗传演算法编程展开随机和全局搜寻。下列是TPOT 搜寻流程:
加装:
#pip
pip insall tpot
#conda
conda install -c conda-forge tpot
实例标识符:
from tpot import TPOTClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
import numpy as np
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data.astype(np.float64),
iris.target.astype(np.float64), train_size=0.75, test_size=0.25, random_state=42)
tpot = TPOTClassifier(generations=5, population_size=50, verbosity=2, random_state=42)
tpot.fit(X_train, y_train)
print(tpot.score(X_test, y_test))
tpot.export(tpot_iris_pipeline.py)
3、HyperOpt-Sklearn:
HyperOpt-Sklearn 是 HyperOpt 的包装器,能将 AutoML 和 HyperOpt 与 Scikit-Learn 展开整合,这个库包含了统计数据预处置的转换和分类、回归演算法数学模型。文档中如是说说:它专为具有数百个模块的数学模型展开大规模强化而内部结构设计 并允许跨多核和多台机器扩展强化过程。
加装:
pip install hyperopt
实例标识符:
from pandas import read_csv
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error
from hpsklearn import HyperoptEstimator
from hpsklearn import any_regressor
from hpsklearn import any_preprocessing
from hyperopt import tpe
# load dataset
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data.astype(np.float64),
iris.target.astype(np.float64), train_size=0.75, test_size=0.25, random_state=42)
model = HyperoptEstimator(regressor=any_regressor(reg), preprocessing=any_preprocessing(pre), loss_fn=mean_absolute_error, algo=tpe.suggest, max_evals=50, trial_timeout=30)
model.fit(X_train, y_train)
# summarize performance
mae = model.score(X_test, y_test)
print(“MAE: %.3f” % mae)
# summarize the best model
print(model.best_model())
4、AutoKeras
AutoKeras 是两个基于 Keras 的 AutoML 系统,只需几行标识符就能实现神经架构搜寻(NAS)的强大功能。 它由德克萨斯 A&M 大学的 DATA 实验室开发,以 TensorFlow的tf.keras API 和Keras为此基础展开实现 。
AutoKeras 能支持不同的各项任务,比如图像分类、内部结构化统计数据分类或回归等。
加装:
pip install autokeras
实例标识符:
import numpy as np
import tensorflow as tf
from tensorflow.keras.datasets import mnist
import autokeras as ak
#Load dataset
(x_train, y_train), (x_test, y_test) = mnist.load_data()
print(x_train.shape) # (60000, 28, 28)
print(y_train.shape) # (60000,)
print(y_train[:3]) # array([7, 2, 1], dtype=uint8)
# Initialize the image classifier.
clf = ak.ImageClassifier(overwrite=True, max_trials=1)
# Feed the image classifier with training data.
clf.fit(x_train, y_train, epochs=10)
# Predict with the best model.
predicted_y = clf.predict(x_test)
print(predicted_y)
# Evaluate the best model with testing data.
print(clf.evaluate(x_test, y_test))
5、H2O AutoML:
H2O 的 AutoML 可用于在用户指定的时间限制内手动训练和调整许多数学模型。
H2O 提供了许多适用于 AutoML 对象(数学模型组)以及单个数学模型的可解释性方式。 可以手动生成解释,并提供两个简单的界面来探索和解释 AutoML 数学模型。
加装:
pip insall h2o
H2O能更详细的说是两个分布式的机器自学平台,因此就需要建立H2O的集群,这部分的标识符是采用的java开发的,就需要加装jdk的支持。
在加装完成JAVA后,并且环境变量设置了java路径的情况下在cmd继续执行下列命令:
java -jar path_to/h2o.jar
就能启动H2O的集群,就可以透过Web界面展开操作,假如想采用Python标识符编写,能采用下列示例
import h2o
h2o.init()
from h2o.automl import H2OAutoML
churn_df = h2o.import_file(https://raw.githubusercontent.com/srivatsan88/YouTubeLI/master/dataset/WA_Fn-UseC_-Telco-Customer-Churn.csv)
churn_df.types
churn_df.describe()
churn_train,churn_test,churn_valid = churn_df.split_frame(ratios=[.7, .15])
churn_train
y = “Churn”
x = churn_df.columns
x.remove(y)
x.remove(“customerID”)
aml = H2OAutoML(max_models = 10, seed = 10, exclude_algos = [“StackedEnsemble”, “DeepLearning”], verbosity=”info”, nfolds=0)
!nvidia-smi
aml.train(x = x, y = y, training_frame = churn_train, validation_frame=churn_valid)
lb = aml.leaderboard
lb.head()
churn_pred=aml.leader.predict(churn_test)
churn_pred.head()
aml.leader.model_performance(churn_test)
model_ids = list(aml.leaderboard[model_id].as_data_frame().iloc[:,0])
#se = h2o.get_model([mid for mid in model_ids if “StackedEnsemble_AllModels” in mid][0])
#metalearner = h2o.get_model(se.metalearner()[name])
model_ids
h2o.get_model([mid for mid in model_ids if “XGBoost” in mid][0])
out = h2o.get_model([mid for mid in model_ids if “XGBoost” in mid][0])
out.params
out.convert_H2OXGBoostParams_2_XGBoostParams()
out
out_gbm = h2o.get_model([mid for mid in model_ids if “GBM” in mid][0])
out.confusion_matrix()
out.varimp_plot()
aml.leader.download_mojo(path = “./”)
归纳
在责任编辑中,他们归纳了 5 个 AutoML 库以及它如何检查机器自学展开各项任务的智能化,比如统计数据预处置、超模块调整、数学模型优先选择和评估。除了这5个常用的库以外还有一些其他 AutoML 库,比如 AutoGluon、MLBoX、TransmogrifAI、Auto -WEKA、AdaNet、MLjar、TransmogrifAI、Azure Machine Learning、Ludwig等。
作者:Abonia Sojasingarayar