机器学习之炼丹神器-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.datasetsX, 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. 函数和接口包含哪些大类
分类器和回归器
:autosklearn 提供了AutoSklearnClassifier
和AutoSklearnRegressor
两个类别,分别用于构建分类器
和回归器
模型。数据集加载器
:autosklearn 支持多种格式的数据集加载,例如从文件中读取、通过 numpy 或 pandas 加载等方式。模型保存和加载
:autosklearn 提供了save
和load
方法,用于保存和加载训练好的模型。超参数优化器
:autosklearn 提供了不同的超参数优化算法,包括随机搜索
、贝叶斯优化
等。预测器
:autosklearn 提供了predict
方法,用于对新的数据样本进行预测。可视化工具: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. 使用流程
导入 autosklearn 的分类器或回归器。
加载您的数据集。
调用 fit 方法,对模型进行训练。
调用 predict 方法,对测试数据进行预测。
3. 简单分类实例
import autosklearn.classificationX_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()
六,配合文章
结合着看
机器学习之炼丹神器-autosklearn相关推荐
- 推荐:一个画出高大上的机器学习图的神器(论文必备)
本人在写论文的时候,很多图片是用matplotlib和seaborn画的,但是,我还有一个神器,Scikit-plot,通过这个神器,画出了更加高大上的机器学习图,本文对Scikit-plot做下简单 ...
- 只需两行代码,2080Ti 就能当 V100用,这个炼丹神器真牛!
作者 | 陈大鑫.青暮 话说人工智能江湖门派众多且繁杂,好似那大脑中的神经网络一般,但繁杂中却仍然有着一统的迹象...... 许久之前,ML派坐落美利坚合众山中,百年来武学奇才辈出,隐然成江湖第一大名 ...
- 炼丹神器!模型调参这门“玄学”,终于被破解了
吃一个苹果要几步?这对普通人来说,是一件很简单的事. 那么AI模型调参需要几步呢?调参是机器学习中至关重要的一环,因其复杂性而被称之为一门"玄学".这对开发小白和AI专业算法工程师 ...
- 【机器学习】机器学习模型解释神器:Shapash
什么是 Shapash 模型可解释性和可理解性一直是许多研究论文和开源项目的关注的重点.并且很多项目中都配备了数据专家和训练有素的专业人员.Shapash 是一个 Python 库,用于描述 AI 模 ...
- echart label 不随值变化位置_炼丹神器来了! 模型结构、训练日志、特征提取都能可视化,调参不慌了!...
点击上方"CVer",选择加"星标"置顶 重磅干货,第一时间送达 开发者在炼丹的过程中会不会遇到这些问题呢?比如说深度学习模型训练过程中盯 Log 盯得头晕眼花 ...
- 无需写代码!谷歌推出机器学习模型分析神器,代号What-If
铜灵 编译整理 量子位 出品 | 公众号 QbitAI 今天,谷歌推出了已开源的TensorFlow可视化工具TensorBoard中一项新功能:What-If Tool,用户可在不编写程序代码的情况 ...
- 机器学习调参神器——网格搜索方法
网格搜索方法主要用于模型调参,也就是帮助我们找到一组最合适的模型设置参数,使得模型的预测达到更好的效果,这组参数于模型训练过程中学习到的参数不同,它是需要在训练前预设好的,我们称其为超参数. 超参数的 ...
- 无需一行代码就能搞定机器学习的开源神器
作者 | Shantanu Kumar 责编 | 魏伟 对于机器学习和数据科学的初学者来说,最大的挑战之一是需要同时学习太多知识,特别是如果你不知道如何编码.你需要快速地适应线性代数.统计以及其他数学 ...
- 推荐一个快速定位深度学习代码bug的炼丹神器!
文 | McGL 源 | 知乎 写深度学习网络代码,最大的挑战之一,尤其对新手来说,就是把所有的张量维度正确对齐.如果以前就有TensorSensor这个工具,相信我的头发一定比现在更浓密茂盛! Te ...
最新文章
- 【Java】排序算法 之 【快速排序】 总结
- 前天在一直Linux根文件系统时提示WARNING: Unable to open an in...
- -bash : xxx : command not found 新安装Linux后,安装一些必须软件(持续更新……)
- 转一个后缀数组的简单总结:
- applet实现大文件ftp上传(三)
- word公式插件_如何快速输入复杂的数学公式?这里有 3 个实用技巧
- 搜狗用这个骚技术,把百度逼上了绝路...
- leetcode71 (2022.1.6)
- 如何进行Java EE性能测试与调优
- php foreach 多出一个_PHP如何实现统计数据合并
- Nvidia 的新显卡架构 Maxwell 性能相比开普勒提升了多少?
- tableau如何生成HTML文件,Tableau 入门
- filter()“筛选”函数
- flink学习思维导图
- python selenium模拟点击
- WebView无法调起支付宝,显示alipays://platformapi/startApp ERR_UNKNOWN_URL_SCHEME
- python unicode转字符串_Python: 在Unicode和普通字符串之间转换
- 打印数字矩形 (python)
- jcr多久更新一次_最新!2019年中科院分区表更新!!(附查询方法)
- 1一1剖面图方向_新款汽车把套冬季方向盘套冬短毛绒通用型方向盘套保暖女可爱防滑1元优惠券券后价17.8元...
热门文章
- 指针类型与指针指向类型理解
- CS + MSF 联动
- 智能无人系统个人总结
- Python中使用pandas报错“module 'pandas' has no attribute 'ewma'”,问题原因及解决方法
- 世界品牌价值实验室:锻造一把国美“屠刀”
- 假期怎么保护好视力?专业的护眼台灯分享
- java vr 开发_VR:虚拟与现实
- curl linux 批量下载文件夹,bash – 使用cURL下载目录中的所有文件
- 用友畅捷通T+设置外网访问,用的是神卓互联
- java 可变参数(可传可不传)