使用 EvalML 自动机器学习完成 NLP 任务
本文中将介绍如何使用 EvalML 自动化机器学习,并一起研习是否可以使用 EvalML 自动化 NLP 任务?如果你对自动机器学习框架EvalML还不是很熟悉,建议戳👉一文彻底搞懂自动机器学习AutoML:EvalML。接下来跟小猴子一起研习吧!
什么是 EvalML
它是一个 AutoML 库,可使用特定领域的目标函数构建、优化和评估机器学习管道。它实际上避免了手动训练和调整模型,一切交与自动化机器学习。它在内部使用数据表(data tables,),比数据框(data frames)快 20 倍。在它内部构建了多个管道,包括最先进的预处理、特征工程、特征选择和各种优秀的建模技术。
数据集
在本文中,我们使用的是Spam and Ham Dataset数据集。该数据集具有一个因变量(Category类别)和自特征(Message消息)。我们的目标是预测邮件是否是垃圾邮件。数据集地址[1]。
任务开始
没有安装的直接
pip install evalml
即可。# 导入 urllib.request 从超链接导入数据集
from urllib.request import urlopen
import pandas as pd
# storing the csv file in variable
hyperlink =
input_data = urlopen(hyperlink)
# readinng csv file
data = pd.read_csv(input_data)
data.head()
从CSV文件中读取数据,在EvalML的帮助下开发一个模型,并为本次目标寻找最佳模型。这里不需要手动进行文本特征化,所有的事情都将由EvalML自动执行。现在把数据集分成自变量和因变量。
X=data.drop('Category',axis=1)
y=data['Category']
检查数据集是否平衡。
y.value_counts(normalize=True)
ham 0.750084
spam 0.249916
Name: Category, dtype: float64
把数据集分成训练集和测试集。
使用 evalml 将数据集分割成训练集和测试集部分,这里提到的
problem_type
,实际上是试图解决的问题类型。import evalml
X_train,X_test,y_train,y_test = \
evalml.preprocessing.split_data(X,y,problem_type='binary')
EvalML 中可用的问题陈述
evalml.problem_types.ProblemTypes.all_problem_types
执行自动化 EvalML 任务并检查最适合问题陈述的模型
automl = AutoMLSearch(X_train=X_train,
y_train=y_train,
problem_type='binary',
max_batches=1,
optimize_thresholds=True)
automl.search()
最后,得到了最适合问题陈述的算法。在这里,它采用所有适合我们的问题陈述的算法,然后自动创建许多管道并调整参数。在所有的管道中,它选择了最好的,其准确性更高。可以必须传递一些参数,可以阅读此处提供的文档[2] 更加深入挖掘该问题。
还可以根据特定目标调整模型。这里的目标是指用于检查模型效率或准确性的参数,例如 AUC、F1 分数、召回率或精度。可以使用 “objectives” 和 “additional_objectives” 参数。
EvalML 将比 additional_objectives 更关注向目标传递参数。注意不要混淆,它只会以这样一种方式训练和调整模型,以便我们为 “objectives” 和 “additional_objectives” 中可用的参数获得优化值。
在本次问题中,最好的管道是:
Best pipeline:带有文本特征化组件的随机森林分类器 Best pipeline: Log Loss:0.154849
根据准确性和各种目标获得最佳模型
automl.rankings
获取最佳pipeline
best_pipeline = automl.best_pipeline
GeneratedPipeline(parameters={
'Random Forest Classifier':
{'n_estimators': 100,
'max_depth': 6, 'n_jobs': -1},})
详细描述最佳管道
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 Binary: {scores["Accuracy Binary"]}')
Accuracy Binary: 0.9732441471571907
将模型保存在pickle文件中
best_pipeline.save("model.pkl")
我希望这篇文章能够帮助您理解EvalML的基础知识,以及如何使用它来为我们的问题陈述获得最合适的模型。
参考资料
数据集地址: https://featurelabs-static.s3.amazonaws.com/spam_text_messages_modified.csv
[2]文档: https://evalml.alteryx.com/en/stable/
机器学习合集👇
长按👇关注- 机器学习研习院 -设为星标,干货速递
最新评论
推荐文章
作者最新文章
你可能感兴趣的文章
Copyright Disclaimer: The copyright of contents (including texts, images, videos and audios) posted above belong to the User who shared or the third-party website which the User shared from. If you found your copyright have been infringed, please send a DMCA takedown notice to [email protected]. For more detail of the source, please click on the button "Read Original Post" below. For other communications, please send to [email protected].
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。
版权声明:以上内容为用户推荐收藏至CareerEngine平台,其内容(含文字、图片、视频、音频等)及知识版权均属用户或用户转发自的第三方网站,如涉嫌侵权,请通知[email protected]进行信息删除。如需查看信息来源,请点击“查看原文”。如需洽谈其它事宜,请联系[email protected]。