随着人工智能技术的飞速发展,机器学习、数据科学和深度学习成为了当下的热门领域。这些技术极大地减轻了人类的劳动强度,为人类提供了更加舒适的生活。在21世纪,掌握这些技术几乎等同于掌握了成功的代名词。本文将带深入了解EvalML这一自动化机器学习库,它能够在短时间内自动完成众多机器学习任务,包括模型构建、优化和评估等。
EvalML是一个自动化机器学习库,它能够自动执行机器学习任务,如模型训练、调参、交叉验证、预处理、特征工程、特征选择以及多种建模技术。与传统手工操作相比,EvalML能够大幅节省时间,通常只需几秒钟即可完成,而手工操作可能需要2到3小时。EvalML内部使用数据表(DataTable)而非数据框(DataFrame),因为数据表的效率是数据框的20倍。
本文将通过乳腺癌预测问题来展示EvalML的美妙之处。首先,将导入EvalML库中提供的样本数据集,也可以使用CSV、Excel表格或JSON格式的数据集,并将其转换为数据表以便于与EvalML库协作。加载乳腺癌数据集后,将数据分为训练集和测试集。
乳腺癌数据集中包含了每个细胞核的真实值特征,包括半径、纹理、周长、面积、平滑度、紧凑度、凹凸度、凹凸点数、对称性和分形维度等。这些特征的均值、标准误差以及“最差”或最大值(三个最大值的均值)被计算出来,总共得到30个特征。所有特征值都以四位有效数字重新编码。数据集中没有缺失属性值,类别分布为357个良性和212个恶性。
要使用EvalML,首先需要安装该库。可以通过在命令提示符中输入“pip install evalml”来安装,也可以直接下载wheel文件。以下是使用EvalML进行乳腺癌预测的基本步骤:
import evalml
X, y = evalml.demos.load_breast_cancer()
X_train, X_test, y_train, y_test = evalml.preprocessing.split_data(X, y, problem_type='binary')
通过简单的一行代码,可以查看EvalML能够解决的问题类型:
import evalml
evalml.problem_types.ProblemTypes.all_problem_types
接下来,将运行EvalML的自动机器学习搜索,它将自动创建最佳管道,包括预处理、特征工程、特征选择、模型选择和超参数调整,以获得很高的准确率。需要传递训练数据、测试数据和问题类型等参数。
from evalml.automl import AutoMLSearch
automl = AutoMLSearch(X_train = X_train, y_train = y_train, problem_type = 'binary')
automl.search()
要获取基于准确率的最佳模型,可以使用以下代码:
best_pipeline = automl.best_pipeline
可以检查测试数据的准确率:
best_pipeline.score(X_test, y_test, objectives = ['auc', 'f1', 'Precision', 'Recall'])
如果希望根据特定目标(如AUC、F1分数、精确度或召回率)训练模型,可以在AutoMLSearch中使用‘objectives’参数,并在‘additional_objectives’参数中提供额外目标列表。
automl_auc = AutoMLSearch(X_train = X_train, y_train = y_train,
problem_type = 'binary',
objective = 'auc',
additional_objectives = ['f1', 'precision'],
max_batches = 1,
optimize_thresholds = True)
automl_auc.search()
best_pipeline.save("model.pkl")
check_model = automl.load('model.pkl')
check_model.predict_proba(X_test).to_dataframe()