自动机器学习(AutoML)是现代技术领域中增长最快的技术之一。机器学习和人工智能领域的新创新每天都在涌现,推动世界向前发展。以前,对于刚进入机器学习领域的人员来说,创建准确的机器学习模型是一项挑战,但现在有了AutoML库,即使是初学者也能以较少的工作量创建出准确的模型。许多AutoML库接受数据作为输入,并为给定数据提供具有更好准确性的良好模型。在今天的文章中,将讨论一个常用的AutoML库——EvalML。
EvalML是什么?
EvalML是一个用Python编写的开源AutoML库,它自动化了机器学习过程的大部分工作,使能够轻松评估哪种机器学习管道更适合给定的数据集。它使用特定的目标函数构建和优化机器学习管道,可以自动执行特征选择、模型构建、超参数调整、交叉验证等。它具有广泛的工具,用于理解模型。它与Featuretools(一个执行自动化特征工程的框架)和Compose(一个执行自动化预测工程的框架)结合使用。
如何安装EvalML?
在计算机上运行以下命令以安装EvalML。请注意,计算机需要安装Python3.5及以上版本。
pip install evalml --extra-index-url https://install.featurelabs.com//
或者通过PyPI安装:
pip install evalml
目标函数是什么?
目标函数是EvalML在管道搜索中尝试最大化或最小化的内容。由于这些来自管道的反馈导致模型的优化,因此拥有一个目标函数非常重要。可以通过优化特定于领域的目标函数或定义自定义目标函数来训练和优化模型,以解决某些问题。只需要确定用例目标。
EvalML的应用和特点
让深入了解一些行业应用,这将帮助更好地理解EvalML。EvalML甚至可以在建模之前提供数据检查,以发现数据中的问题。EvalML支持广泛的监督学习问题,如回归、二元分类和多类分类。以下是EvalML执行的一些数据检查:
- 在训练期间向模型提供信息,检测目标泄露。
- 检查无效的数据类型。
- 检查类别不平衡。
- 检查冗余特征,如高度为空的列、常数列等。
- 检查对建模无用的列。
EvalML在NLP任务中的应用
导入数据集,数据是一个垃圾邮件分类器文本数据集。
from urllib.request import urlopen
import pandas as pd
data=urlopen('https://featurelabsstatic.s3.amazonaws.com/spam_text_messages_modified.csv')
df = pd.read_csv(data)
df.head()
特征工程,将数据分为独立特征和依赖特征。
X=data.drop('Category',axis=1)
y=data['Category']
y.value_counts()
现在让导入AutoML库EvalML。
import evalml
执行训练测试分割,将数据转换为训练集和测试集。
X_train,X_test,y_train,y_test=evalml.preprocessing.split_data(X,y,problem_type='binary')
由于问题是二元分类问题,将问题类型设置为“binary”。EvalML还支持其他问题类型,如:
- MULTICLASS: ‘multiclass’
- REGRESSION: ‘regression’
- TIME_SERIES_REGRESSION: ‘time-series regression’
- TIME_SERIES_BINARY: ‘time-series binary’
- TIME_SERIES_MULTICLASS: ‘time series multiclass’
让检查输入数据。
X_train.head()
现在让导入EvalML的AutoMLSearch并开始管道搜索。
from evalml import AutoMLSearch
automl=AutoMLSearch(X_train=X_train,y_train=y_train,problem_type='binary',max_batches=1,optimize_thresholds=True)
automl.search()
让看看不同管道的分数。
automl.rankings
因此,最佳管道是:
best_pipeline = automl.best_pipeline
让描述最佳管道并找出使用的模型和超参数。
automl.describe_pipeline(automl.rankings.iloc[0]["id"])
让评估测试数据。
scores = best_pipeline.score(X_test, y_test, objectives=evalml.objectives.get_core_objectives('binary'))
print(f'Accuracy : {scores["Accuracy Binary"]}')
模型给出了很好的准确性。
现在让使用EvalML库找到回归问题的最佳管道。这里使用的是sklearn的波士顿房价预测数据集。让导入必要的库和数据集。
import pandas as pd
import evalml
from sklearn.datasets import load_boston
data = load_boston()
X = data.data
y = data.target
X = pd.DataFrame(X)
X.head()
执行训练测试分割。
X_train,X_test,y_train,y_test=evalml.preprocessing.split_data(X,y,problem_type='regression')
现在让导入EvalML的AutoMLSearch并开始管道搜索。
from evalml import AutoMLSearch
automl = AutoMLSearch(X_train = X_train, y_train=y_train, problem_type = "regression",max_batches=1,optimize_thresholds=True)
automl.search()
不同模型的排名是:
automl.rankings
best_pipeline = automl.best_pipeline
automl.describe_pipeline(automl.rankings.iloc[0]["id"])