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