自动机器学习 Python 等效代码详解
介绍
机器学习是一个快速发展的领域,不断涌现新的技术和算法。然而,创建和改进机器学习模型可能是一项耗时且具有挑战性的任务,需要很高的专业知识。自动化机器学习,通常称为 AutoML,旨在通过自动化许多劳动密集型的任务(例如特征工程、超参数调整和模型选择)来简化机器学习模型的创建和优化过程。
Auto-sklearn 是一个强大的开源自动化机器学习框架,构建于 Python 中最著名的机器学习库之一 scikit-learn 之上。它使用贝叶斯优化和元学习有效地搜索潜在机器学习管道的空间,并自动为给定的数据集找到最佳模型和超参数。本教程将介绍在 Python 中使用 Auto-sklearn 的方法,包括安装说明、数据导入、数据准备、模型创建和训练以及模型性能评估。即使是新手,也可以使用 Auto-sklearn 快速轻松地创建强大的机器学习模型。
处理 Node-RED 中错误的方法
Auto-sklearn
高效的开源软件程序 Auto-sklearn 自动化了机器学习模型的创建和持续改进。它基于著名的机器学习程序 scikit-learn,使用贝叶斯优化和元学习自动找到特定数据集的最佳模型和超参数,从而提高效率。
autosklearn 为分类和回归问题创建的众多应用中,只有少数几个包括自然语言处理、图像分类和时间序列预测。
该库通过搜索潜在机器学习管道的集合来工作,这些管道包括特征工程、模型选择和数据准备过程。它使用贝叶斯优化有效地搜索这个空间,并通过使用元学习从之前的实验中学习来不断改进其搜索效率。
此外,Auto-sklearn 提供了许多强大的功能,包括动态集成选择、自动模型集成和主动学习。此外,它还提供易于使用的 API 用于构建、测试和训练模型。
AutoML 代码
现在让我们更详细地研究 AutoML 代码,使用 Auto-sklearn。我们将使用 scikit-learn 中的手写数字数据集,这是一个手写数字的数据集。目标是从数字的图像预测数字。这是代码:
程序
import autosklearn.classification from sklearn.datasets import load_digits from sklearn.model_selection import train_test_split # Load the dataset X, y = load_digits(return_X_y=True) X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1) # Create and fit the AutoML model automl = autosklearn.classification.AutoSklearnClassifier(time_left_for_this_task=180, per_run_time_limit=30) automl.fit(X_train, y_train) # Evaluate the model on the test set print("Accuracy:", automl.score(X_test, y_test))
输出
Accuracy: 0.9866666666666667
代码解释
此程序使用自动化机器学习 (AutoML) 对 MNIST 数据集中的手写数字进行分类,其中包括使用 Auto-sklearn 模块。以下是代码的简要概述:
从 autosklearn.classification 模块导入 AutoSklearnClassifier 类,该模块包含将要使用的 AutoML 分类模型。
来自 sklearn.datasets import load_digits:这从 sklearn.datasets 包导入 MNIST 数据集的 load_digits 函数。
来自 sklearn.model_selection 的模型选择:此处导入 sklearn.model_selection 模块中的 train_test_split 函数,用于将 MNIST 数据集划分为训练集和测试集。
加载 MNIST 数据集,输入特征存储在 X 中,相应的标签存储在 y 中。X, y = load_digits(return_X_y=True):这加载了 MNIST 数据集。
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=1) 将数据集以 75:25 的比例划分为训练集和测试集,并将随机种子设置为 1 以确保可重复性。
automl = autosklearn.classification.AutoSklearnClassifier(per_run_time_limit=30, time_left_for_this_task=180):通过将此作为 AutoSklearnClassifier 类的实例来形成将要对 MNIST 数据集进行训练的 AutoML 模型。每个运行的时间限制表示每个单个模型可以运行的最长时间(以秒为单位),而此任务的剩余时间表示 AutoML 过程可以运行的最长时间(以秒为单位)。
通过使用 automl.fit(X_train, y_train) 函数,使用训练集 X_train 和相关的标签 Y_train 训练 AutoSklearnClassifier 模型。
accuracy:", print(X_test, y_test), automl.score:在评估其在 X_test 和 Y_test 相关标签上的性能后,这确定了 AutoSklearnClassifier 模型在测试集上的准确性。score 方法给出模型在给定数据集上的准确性。
上述代码实现了 AutoML 方法,这是一种机器学习技术,它自动化了模型构建过程的每个步骤,包括特征选择、超参数调整和数据准备。AutoML 减少了创建机器学习模型所需的人工工作量,即使是非专家也可以创建强大的模型。
代码首先导入必要的库,例如 pandas、numpy、sklearn 和 tpot。Pandas 用于数据操作,NumPy 用于数值计算,Sklearn 用于机器学习任务,例如数据预处理、模型选择和评估。TPOT 是用于实现 AutoML 算法的主要库。
然后,使用 pandas read_csv 函数加载数据集,并将输入特征和输出标签分离到不同的变量中。'y' 变量保存输出的标签,而 'X' 变量保存输入的特征。
为了拟合数据并生成机器学习模型,代码首先加载数据集,然后创建一个 TPOTRegressor 类的实例。TPOTRegressor 是 TPOTBase 类的子类,它使用遗传算法来选择特征和调整超参数。TPOTRegressor 类处理回归问题,而 TPOTClassifier 类处理分类问题。
使用 Sklearn 的 train_test_split 方法将数据集划分为训练集和测试集。根据机器学习中的常见做法,数据被划分为两个集合:一个训练集用于拟合模型,一个测试集用于评估模型的性能。
数据划分后,调用 TPOTRegressor 实例的 fit 方法,该方法将模型拟合到训练数据。fit 方法使用遗传算法找到给定数据的最佳特征子集和超参数。然后返回最佳模型。
然后,代码使用 scoring 方法评估模型在测试集上的性能,该方法确定模型的准确性。准确性得分表示模型拟合数据的程度,数值越接近 1 表示拟合越好。
然后,使用 export 函数将最佳模型导出到 python 文件,以及其在测试集上的准确性得分。
结论
总而言之,Auto-sklearn 是一个强大的库,它简化了机器学习模型的创建和改进过程。通过自动搜索给定数据集的最佳模型和超参数,它可以节省时间和精力。本教程介绍了在 Python 中使用 Auto-sklearn 的方法,包括安装说明、数据导入、数据准备、模型创建和训练以及模型性能评估。即使是新手,也可以使用 Auto-sklearn 快速轻松地创建强大的机器学习模型。