AutoML框架执行的任务可以概括为以下几点:预处理和清洗数据。选择并构建适当的功能。选择合适的型号。优化模型超参数。设计神经网络的拓扑结构(如果使用深度学习)。机器学习模型的后处理。结果的可视化和呈现。在本文中,我们将介绍以下5个开源autoML库或框架:Auto-SklearnTPOTHyperoptSklearnAuto-KerasH2OAutoML1、Auto-SklearnAuto-sklearn是一个开箱即用的自动化机器学习库。auto-sklearn基于scikit-learn并自动搜索正确的学习算法并优化其超参数。可以通过元学习、贝叶斯优化和集成学习等搜索获得最佳的数据处理管道和模型。它可以处理大部分繁琐的工作,例如预处理和特征工程技术:One-Hot编码、特征归一化、降维等。安装:#pippipinstallauto-sklearn#condacondainstall-cconda-forgeauto-sklearn因为打包量大,sklearn使用的方法基本相同。以下是示例代码:.train_test_split(X,y,random_state=1)automlar=auregression.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,数据集名称='糖尿病')一种自动化机器学习工具,使用遗传算法优化来优化机器学习过程。它也是基于Scikit-Learn提供的数据转换和机器学习模型构建的方法,但它使用遗传算法编程进行随机和全局搜索。以下是TPOT搜索过程:安装:#pippipinsalltpot#condacondainstall-cconda-forgetpot示例代码:fromtpotimportTPOTClassifierfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.datasetsimportload_iris将numpy导入为npiris=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.出口('tpot_iris_pipeline.py')3。HyperOpt-SklearnHyperOpt-Sklearn是HyperOpt的包装器,它可以将AutoML和HyperOpt与Scikit-Learn集成。该库包括数据预处理转换、分类和回归算法模型。根据文档,它专为具有数百个参数的模型的大规模优化而设计,并允许跨多个内核和多台机器扩展优化过程。安装:pipinstallhyperopt样例代码:frompandasimportread_csvfromsklearn.datasetsimportload_irisfromsklearn.model_selectionimporttrain_test_splitfromsklearn.metricsimportmean_absolute_errorfromhpsklearnimportHyperoptEstimatorfromhpsklearnimportany_regressorfromhpsklearnimportany_preprocessingfromhyperoptimporttpe#loaddatasetiris=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)模型=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)#总结性能mae=model.score(X_test,y_test)print("MAE:%.3f"%mae)#总结最好的模型print(model.best_model())4.AutoKerasAutoKeras是一个基于Keras的AutoML系统,只是几个lines代码可以实现NeuralArchitectur的强大e搜索(NAS)。它由德克萨斯A&M大学的DATA实验室开发,基于TensorFlow的tf.kerasAPI和Keras。AutoKeras可以支持图像分类、结构化数据分类或回归等不同的任务。安装:pipinstallautokeras示例代码:importnumpyasnpimporttensorflowastffromtensorflow.keras.datasetsimportmnistimportautokerasasak#Loaddataset(x_train,y_train),(x_test,y_test)=mnist.load_data()print(x_train.shape)#(60000,28,28)print(y_train.shape)#(60000,)打印(y_train[:3])#array([7,2,1],dtype=uint8)#初始化图像分类器。clf=ak.ImageClassifier(overwrite=True,max_trials=1)#为图像分类器提供训练数据.clf.fit(x_train,y_train,epochs=10)#用最好的模型预测model.predicted_y=clf.predict(x_test)print(predicted_y)#用测试数据评估最好的模型。print(clf.evaluate(x_test,y_test))5.H2OAutoMLH2O的AutoML可用于在用户指定的时间限制内自动训练和调整许多模型。H2O提供了许多适用于AutoML对象(模型组)以及单个模型的可解释性方法。解释可以自动生成,并提供一个简单的界面来探索和解释AutoML模型。安装:pipinsallh2oH2O更详细的说可以说是一个分布式机器学习平台,所以需要建立一个H2O集群。这部分代码是使用java开发的,需要jdk支持。JAVA安装完成,环境变量设置为java路径后,在cmd中执行如下命令:java-jarpath_to/h2o.jar启动H2O集群,通过web界面进行操作。如果你想用Python代码来写,你可以使用下面的例子master/dataset/WA_Fn-UseC_-Telco-Customer-Churn.csv')churn_df.typeschurn_df.describe()churn_train,churn_test,churn_valid=churn_df.split_frame(ratios=[.7,.15])churn_trainy="流失"x=churn_df.columnsx.remove(y)x.remove("customerID")aml=H2OAutoML(max_models=10,seed=10,exclude_algos=["StackedEnsemble","DeepLearning"],verbosity="信息",nfolds=0)!nvidia-smiaml。火车(x=x,y=y,training_frame=churn_train,validation_frame=churn_valid)lb=aml.leaderboardlb.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([midformidinmodel_idsif"StackedEnsemble_AllModels"inmid][0])#metalearner=h2o.get_model(se.metalearner()['name'])model_idsh2o.get_model([midformidinmodel_idsif"XGBoost"inmid][0])out=h2o.get_model([midformidinmodel_idsif"XGBoost"inmid][0])out.paramsout.convert_H2OXGBoostParams_2_XGBoostParams()outout_gbm=h2o.get_model([midformidinmodel_idsif"GBM"inmid][0])out.confusion_matrix()out.varimp_plot()aml.leader.download_mojo(path="./")总结在这篇文章中我们总结了5个AutoML库以及它如何检查机器学习进度任务自动化例如数据预处理、超参数调整、模型选择和评估除了这5个常用库外,还有一些其他AutoML库,例如AutoGluon、MLBoX、TransmogrifAI、Auto-WEKA、AdaNet、MLjar、TransmogrifAI、AzureMachineLearning、路德维希等
