机器学习之炼丹神器-autosklearn

文章目录

  • 一,什么是autosklearn
    • 1. 需求:
    • 2. 概念:
  • 二,autosklearn有什么用
    • 1. 作用
    • 2. 应用场景
      • 数据科学竞赛:
      • 模型选择:
      • 计算资源受限:
      • 数据集变化:
  • 三,autosklearn有哪些参数
    • 1. `time_left_for_this_task`:指定训练的时间限制。
    • 2. per_run_time_limit:指定每个模型训练的时间限制。
    • 3. initial_configurations_via_metalearning:指定是否使用元学习来确定初始配置。
    • 4. ensemble_size:指定集成模型的大小。
    • 5. resampling_strategy:指定交叉验证策略。
    • 6. resampling_strategy_arguments
    • 7. include_estimators
    • 8. exclude_estimators
    • 9. include_preprocessors
    • 10. exclude_preprocessors
    • 11. n_jobs
    • 12. verbose
    • 参数使用示例
  • 四,autosklearn有哪些函数
    • 1. 函数和接口包含哪些大类
    • 2. AutoSklearnClassifier 和 AutoSklearnRegressor 两个类别这两个类别都有哪些算法
      • 1. `AutoSklearnClassifier` 包含以下算法:
      • 2. `AutoSklearnRegressor` 包含以下算法:
    • 3. 常用函数及使用
    • 1. `fit(X_train, y_train)`:用于训练模型的函数,输入参数X_train为训练数据集,y_train为训练标签。
    • 2. `predict(X_test)`:用于对测试集进行预测的函数,输入参数X_test为测试数据集。
    • 3. `get_models_with_weights()`:返回最终模型及其权重的列表,按照得分从高到低排序。
    • 4. `get_models_with_attributes()`:返回所有候选模型及其属性的列表。
  • 五,分类数据炼丹实例
    • 1. 安装
    • 2. 使用流程
    • 3. 简单分类实例
    • 4. 针对数据进行分类,进行模型选择,并且返回各个模型的表现参数,并且保存模型加载模型
  • 六,配合文章

一,什么是autosklearn

1. 需求:

我想快速的构建模型,并且对比模型的各个性能,从而进行模型算法的方案选择

2. 概念:

autosklearn是一种自动化机器学习工具,可以帮助用户快速地建立优化机器学习模型。它基于贝叶斯优化元学习的技术,能够自动选择最优模型超参数,并在给定时间内最大化模型性能。

二,autosklearn有什么用

1. 作用

使用autosklearn可以节省机器学习建模时间和资源,降低建模门槛,同时也可以避免人为错误和主观性对模型性能的影响。它适用于各种类型的数据集和机器学习任务,包括分类回归特征工程等。

2. 应用场景

数据科学竞赛:

对于数据科学竞赛,时间很有限并且需要迅速构建一个指标良好的模型。autosklearn 可以在很短的时间内搜索最佳模型,并生成可提交的预测结果。

模型选择:

当存在多个候选模型时,autosklearn 可以根据给定的数据集和问题自动选择最佳模型并优化其超参数。

计算资源受限:

计算资源有限时,手动调整模型超参数可能会非常困难。autosklearn 可以自动搜索最佳超参数,以最大程度地提高性能而不浪费计算资源。

数据集变化:

如果您拥有大量的数据集,那么针对每个数据集挑选最佳的模型超参数可能会非常耗时。autosklearn 可以灵活地适应不同的数据集,并为每个数据集自动选择最佳的模型和超参数。

三,autosklearn有哪些参数

1. time_left_for_this_task:指定训练的时间限制。

这个参数指定了autosklearn在寻找最佳模型时可以使用的总时间。确保将此值设置为足够高,以便autosklearn有足够的时间探索不同的模型并找到最适合您的数据的模型。

2. per_run_time_limit:指定每个模型训练的时间限制。

这个参数设置了任何单个模型在搜索过程中可以运行的最长时间默认值已经设置为一个合理的值,但根据您的数据复杂性和硬件设置,您可能需要进行调整。

3. initial_configurations_via_metalearning:指定是否使用元学习来确定初始配置。

此参数控制是否使用元学习来确定搜索过程的初始超参数。元学习涉及使用先前类似数据集的结果来指导搜索过程,并可以显著加快优化时间。

参数的大小指的是使用元学习来确定搜索过程中初始超参数的数据集大小。这个参数的默认值为“25”,表示使用不超过25个先前类似数据集的结果来指导搜索过程。如果您的数据集非常大或者难以训练,您可以尝试增加这个参数的值,以便使用更多的先前数据集结果来指导搜索过程。但是请注意,增加这个参数的值也会增加元学习阶段的计算时间,因此需要在时间和内存消耗之间进行权衡。

4. ensemble_size:指定集成模型的大小。

此参数确定用于组成最终集成的模型数量。更大的集合大小通常会产生更好的性能,但也需要更长的训练时间,并可能增加内存使用量。

5. resampling_strategy:指定交叉验证策略。

此参数指定交叉验证过程中使用的重采样策略。默认值为“holdout”,意味着一部分训练数据被保留用于验证。其他选项包括“cross_validation”“bootstrap”,这些选项使用不同的方法在验证过程中对数据进行采样.
“holdout”,即留出法,使得训练集和测试集按比例划分,而不是使用交叉验证方法。
k折交叉验证(cross-validation)留一法(leave-one-out)

6. resampling_strategy_arguments

交叉验证参数,用于控制交叉验证的具体行为。如果使用留出法,则可以通过该参数来控制训练集大小。如果使用交叉验证,则可以通过该参数来控制折数等。

7. include_estimators

包含的基本模型列表,用于指定要使用的机器学习模型。默认情况下,auto-sklearn会自动选择一组候选模型,但我们也可以手动指定要使用的模型。该参数的可选项包括:“adaboost”、“bernoulli_nb”、“decision_tree”、“extra_trees”、“gaussian_nb”、“gradient_boosting”、“k_nearest_neighbors”、“liblinear_svc”、“libsvm_svc”、“multinomial_nb”、“passive_aggressive”、“qda”、“random_forest”,默认为None。

8. exclude_estimators

排除的基本模型列表,用于指定不使用的机器学习模型。该参数的可选项同include_estimators,默认为None。

9. include_preprocessors

包含的预处理器列表,用于指定要使用的预处理器。该参数的可选项包括:“no_preprocessing”、“pca”、“fast_ica”、“truncated_svd”、“select_percentile_classification”、“select_rates_classification”、“select_fwe_classification”、“select_fdr_classification”、“select_from_model_classification”、“kernel_pca”、“polynomial”,默认为None。

10. exclude_preprocessors

排除的预处理器列表,用于指定不使用的预处理器。该参数的可选项同include_preprocessors,默认为None。

11. n_jobs

并行工作进程数。默认为1,如果有多个CPU核心可以设置大于1的值以加速计算。

12. verbose

控制输出详细程度的参数,可选值为0、1和2。其中0表示不输出信息,1表示输出少量信息,2表示输出更多信息。默认为0。

参数使用示例

import autosklearn.classification as classifier
import sklearn.datasets

X, y = sklearn.datasets.load_digits(return_X_y=True)
X_train, X_test, y_train, y_test = sklearn.model_selection.train_test_split(X, y, random_state=42)

# 设置超参数搜索空间和搜索策略
clf = classifier.AutoSklearnClassifier(
    time_left_for_this_task=120,
    per_run_time_limit=30,
    n_jobs=4,
    include_estimators=["random_forest", "extra_trees"],
    include_preprocessors=["no_preprocessing"],
    resampling_strategy="holdout",
    resampling_strategy_arguments={"train_size": 0.67},
    ensemble_size=1,
    initial_configurations_via_metalearning=25,
    verbose=2,
)

# 训练和搜索超参数
clf.fit(X_train, y_train)

# 预测并计算准确率得分
y_pred = clf.predict(X_test)
accuracy = sklearn.metrics.accuracy_score(y_test, y_pred)
print("Accuracy score:", accuracy)
'''
在上面的示例中,我们导入了必要的库和数据集,并将digits数据集划分为训练/测试集。然后,我们实例化AutoSklearnClassifier类,并设置一系列超参数,包括时间限制、每个模型的最大运行时间、使用的基本模型(随机森林和极端随机树)、不使用预处理器、留出法作为划分策略等。

接下来,我们调用fit函数进行训练和超参数搜索,该函数将自动执行网格搜索并返回性能最好的模型。最后,我们使用predict函数进行预测,并计算分类器的准确率得分。

在这个示例中,我们选择了留出法作为划分策略,通过resampling_strategy_arguments参数来控制训练集大小,即train_size=0.67。并且,我们手动指定了使用的基本模型和预处理器,分别是随机森林和极端随机树,以及不使用任何预处理器。同时,我们还设置了verbose参数为2,表示输出更多信息,以便我们更好地理解超参数搜索的过程。
'''



四,autosklearn有哪些函数

1. 函数和接口包含哪些大类

  1. 分类器和回归器:autosklearn 提供了 AutoSklearnClassifierAutoSklearnRegressor 两个类别,分别用于构建分类器回归器模型。

  2. 数据集加载器:autosklearn 支持多种格式的数据集加载,例如从文件中读取、通过 numpy 或 pandas 加载等方式。

  3. 模型保存和加载:autosklearn 提供了 saveload 方法,用于保存和加载训练好的模型。

  4. 超参数优化器:autosklearn 提供了不同的超参数优化算法,包括随机搜索贝叶斯优化等。

  5. 预测器:autosklearn 提供了 predict 方法,用于对新的数据样本进行预测。

  6. 可视化工具:autosklearn 还提供了一些可视化工具,例如可视化超参数优化过程、模型性能等

2. AutoSklearnClassifier 和 AutoSklearnRegressor 两个类别这两个类别都有哪些算法

1. AutoSklearnClassifier 包含以下算法:

Adaboost
Bernoulli Naive Bayes
Decision Tree
Extra Trees
Gradient Boosting
K Nearest Neighbors
LDA
MLP
Multinomial Naive Bayes
Passive Aggressive
QDA
Random Forest
SGD
SVM

2. AutoSklearnRegressor 包含以下算法:

Bayesian Ridge Regression
Decision Tree
Elastic Net
Extra Trees
Gradient Boosting
Kernel Ridge Regression
K Nearest Neighbors Regression
Lasso
MLP
Orthogonal Matching Pursuit
Passive Aggressive
Random Forest
SGD
SVM

3. 常用函数及使用

1. fit(X_train, y_train):用于训练模型的函数,输入参数X_train为训练数据集,y_train为训练标签。

示例代码如下:
python

import autosklearn.classification
automl = autosklearn.classification.AutoSklearnClassifier()
automl.fit(X_train, y_train)

2. predict(X_test):用于对测试集进行预测的函数,输入参数X_test为测试数据集。

示例代码如下:
python

predictions = automl.predict(X_test)

3. get_models_with_weights():返回最终模型及其权重的列表,按照得分从高到低排序。

示例代码如下:
python

models = automl.get_models_with_weights()
for model in models:
    print(model)

4. get_models_with_attributes():返回所有候选模型及其属性的列表。

示例代码如下:
python

models = automl.get_models_with_attributes()
for model in models:
    print(model)

五,分类数据炼丹实例

1. 安装

pip install auto-sklearn

2. 使用流程

  1. 导入 autosklearn 的分类器或回归器。

  2. 加载您的数据集。

  3. 调用 fit 方法,对模型进行训练。

  4. 调用 predict 方法,对测试数据进行预测。

3. 简单分类实例

import autosklearn.classification

X_train, X_test, y_train, y_test = # 加载您的数据集

automl = autosklearn.classification.AutoSklearnClassifier(
    time_left_for_this_task=120,
    per_run_time_limit=30,
    initial_configurations_via_metalearning=25,
    ensemble_size=50,
    resampling_strategy='holdout'
)

automl.fit(X_train, y_train)
y_pred = automl.predict(X_test)

4. 针对数据进行分类,进行模型选择,并且返回各个模型的表现参数,并且保存模型加载模型

#1. 安装autosklearn库和相关依赖
!pip install -U setuptools wheel numpy scipy pandas scikit-learn Cython psutil xgboost
!pip install -U auto-sklearn
#2. 导入需要的库和数据集
import autosklearn.classification
import sklearn.datasets
import sklearn.metrics
import numpy as np
from sklearn.model_selection import train_test_split
import pickle
import matplotlib.pyplot as plt

# 加载iris数据集
X, y = sklearn.datasets.load_iris(return_X_y=True)
#划分数据集为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)

#创建一个autosklearn分类器并拟合训练数据
automl = autosklearn.classification.AutoSklearnClassifier()
automl.fit(X_train, y_train)

#使用测试集进行模型预测,并计算模型性能指标
y_pred = automl.predict(X_test)
accuracy = sklearn.metrics.accuracy_score(y_test, y_pred)
print("Accuracy score:", accuracy)

# 获取所有模型及其评估指标
models = automl.get_models_with_info()

# 输出各个模型的性能指标,输出每个模型的名称、超参数和性能指标等信息
for model in models:
    print(model['name'])
    print(model['parameters'])
    print(model['score'])



# 保存模型
with open('autosklearn_model.pkl', 'wb') as f:
    pickle.dump(automl, f)

# 加载模型
with open('autosklearn_model.pkl', 'rb') as f:
    loaded_automl = pickle.load(f)

#可视化比较结果
plt.figure(figsize=(8,6))
plt.plot(y_test, label="True labels", color='green')
plt.plot(y_pred, label="Predicted labels", color='red', linestyle='--')
plt.legend()
plt.show()

六,配合文章

结合着看

你可能感兴趣的:(机器学习,机器学习,人工智能,python)