EvalML自动化NLP任务详解

在本文中,将探讨如何利用EvalML库自动化自然语言处理(NLP)任务。EvalML是一个自动化机器学习(AutoML)库,它通过特定领域的目标函数构建、优化和评估机器学习管道。它能够自动完成模型的训练和调优,避免了手动操作的繁琐。在内部,EvalML使用数据表,其速度比数据框快20倍。它构建了多个管道,包括最先进的预处理、特征工程、特征选择以及多种建模技术。

EvalML安装

通过PyPI安装EvalML库:

pip install evalml

数据集描述

本文使用的是Spam和Ham数据集,该数据集包含一个依赖特征(Category)和一个独立特征(Message)。目标是预测消息是垃圾邮件还是正常邮件。以下是数据集的概览。

编码部分

首先,从CSV文件中读取数据,并使用EvalML开发模型,分析最适合问题陈述的最佳模型。EvalML将自动执行所有文本特征化工作,无需手动操作。接下来,将数据集分为依赖和独立特征。

from urllib.request import urlopen import pandas as pd # 从超链接导入数据集 input_data = urlopen('https://featurelabs-static.s3.amazonaws.com/spam_text_messages_modified.csv') # 读取CSV文件 data = pd.read_csv(input_data) data.head()

现在已经从CSV文件中读取了数据,接下来将使用EvalML开发模型。将数据集分为训练和测试部分。

import evalml # 使用EvalML分割数据集 X_train, X_test, y_train, y_test = evalML.preprocessing.split_data(X, y, problem_type='binary')

可以查看EvalML库中可用的问题陈述,并执行自动化的EvalML任务,找出最适合问题陈述的最佳模型。EvalML将自动创建多个管道,并调整参数。在所有管道中,它会选择准确度最高的那一个。

# 搜索最佳算法 automl = AutoMLSearch(X_train=X_train, y_train=y_train, problem_type='binary', max_batches=1, optimize_thresholds=True) automl.search()

还可以基于特定目标调整模型。目标是指用于检查模型效率或准确性的参数,如AUC、F1分数、召回率或精确度。EvalML将更关注传递给目标的参数,而不是额外目标。在这个问题陈述中,最佳管道是:

最佳管道:随机森林分类器与文本特征化组件

最佳管道二元对数损失:0.154849

根据准确性和各种目标获取最佳模型:

# 显示不同模型的排名表 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 Binary: {scores["Accuracy Binary"]}') # 将模型保存为model.pkl文件 best_pipeline.save("model.pkl")
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485