python让solidworks⾃动建模_让机器学习⾃动帮我们建模,这
神曲胃痛胶囊4个Python库。。。
⾃动机器学习(通常简称为AutoML)是⼀个新兴的领域,在这个领域中,通过建⽴机器学习模型来对数据进⾏建模的过程是⾃动化的。AutoML能让建模变得更容易,也能让每个⼈更容易访问。
如果你对AutoML感兴趣,下⾯这四个Python库是最好的选择!
1.auto-sklearn
auto-sklearn 是⼀个⾃动化的机器学习⼯具库,可与⼤家都⾮常熟悉的标准 sklearn 接⼝⽆缝集成。通过使⽤最近的⽅法,⽐如贝叶斯优化,该库可被⽤来导航可能模型的空间,并学会推断特定配置是否能很好地完成给定的任务。
该库由 Matthias Feurer 等⼈创建,其技术细节在论⽂《⾼效和鲁棒的机器学习》中进⾏了描述,费勒写道:
…我们引⼊了⼀个基于scikit-learn的强⼤的新AutoML系统(使⽤15个分类器,14个特征预处理⽅法和4个数据预处理⽅法,产⽣了⼀个包含110个超参数的结构化假设空间)。
属鸡的女人电影auto-sklearn 可能是⼊门 AutoML 的最佳库了。除了发现数据集的数据准备和模型选择之外,它还可以从相似数据集上表现良好的模型中
进⾏学习,并且可以将效果最佳的模型汇总在⼀起。
除了⾼效的实现之外,auto-sklearn 只需要最少的⽤户交互, 使⽤ pip install auto-sklearn 即可安装该库。
可以使⽤的主要类是 AutoSklearnClassifier 和 AutoSklearnRegressor,它们分别⽤于分类和回归任务。 两者都具有⽤户指定的相同参数,其中最重要的是时间限制和集合⼤⼩。import autosklearn as ask
#ssion.AutoSklearnRegressor()⽤于回归任务加减档
太阳能热水器安装model = ask.classification.AutoSklearnClassifier(enmble_size=10, #最终集合的⼤⼩(最⼩值为1)
time_left_for_this_task=120, #进程运⾏的秒数
per_run_time_limit=30) #每个模型分配的最⼤秒数
model.fit(X_train, y_train) #开始拟合搜索模型
print(model.sprint_statistics()) #打印搜索统计信息
y_predictions = model.predict(X_test) #从模型中获得预测
2.TPOT
TPOT 是另⼀个⾃动化建模的 Python 库,但是该库更加着重于数据准备以及建模算法和模型超参数。它通过⼀种基于进化树的结构(称为“基于树的管道优化⼯具(TPOT),可⾃动设计和优化机器学习管道)来实现特征选择、预处理和构造的⾃动化。”
程序或管道⽤树表⽰。遗传程序选择并进化某些程序,以使每个⾃动机器学习管道的最终结果最⼤化。
正如 Pedro Domingos 所说,“垃圾算法遇上海量数据也⽐数据有限的聪明算法强⼤。”事实也是如此:TPOT 可以⽣成复杂的数据预处
理管道。
TPOT管道优化器可能需要⼏个⼩时才能产⽣很好的结果,就像很多AutoML算法⼀样(除⾮数据集很⼩)。你也可以在 Kaggle committes 或 googlecolab 中运⾏这些长程序。import tpot
pipeline_optimizer = tpot.TPOTClassifier(generations=5, #进⾏训练的迭代次数
population_size=20, #训练的数据量
cv=5) #StratifiedKFold中的倍数
海鲜面的做法
pipeline_optimizer.fit(X_train, y_train) #适配管道优化器-可能需要很长时间print(pipeline_optimizer.score(X_test, y_test)) #打印管道评分
port('tpot_exported_pipeline.py') #导出管道-⽤Python代码!
TPOT 的最好功能是将模型导出为Python代码⽂件,这样可以⽅便以后使⽤。
3.HyperOpt
HyperOpt 是由 James Bergstra 开发⽤于贝叶斯优化的 Python 库。该库专为⼤规模优化具有数百个参数的模型⽽设计,可显式地⽤于优化机器学习管道,并具有⽤于选择跨多个核⼼和机器的优化过程的选项。
但是,HyperOpt 很难直接使⽤,因为它⾮常技术性,并且需要仔细指定优化步骤和参数。相反,建议⼤家⽤ HyperOpt-sklearn,⼀个包含 sklearn 库的 HyperOpt 包装器。
具体来说,HyperOpt 虽然确实⽀持预处理,但重点仍然放在特定模型中的许多超参数上。如果我们仔细观察 HyperOpt-sklearn的⼀次搜索结果,就会发现该结果导致没有预处理的梯度提升分类器:
{'learner': GradientBoostingClassifier(ccp_alpha=0.0, criterion='friedman_m', init=None,
learning_rate=0.009132299586303643, loss='deviance',帮父母做家务的心得体会
max_depth=None, max_features='sqrt',
max_leaf_nodes=None, min_impurity_decrea=0.0,
min_impurity_split=None, min_samples_leaf=1,
min_samples_split=2, min_weight_fraction_leaf=0.0,
n_estimators=342, n_iter_no_change=None,
presort='auto', random_state=2,
subsample=0.6844206624548879, tol=0.0001,
validation_fraction=0.1, verbo=0,
warm_start=Fal), 'preprocs': (), 'ex_preprocs': ()}
虽然 HyperOpt 库⽐ auto-sklearn、TPOT复杂得多,但是如果对于你的模型⽽已,超参数⾮常重要,那就值得你去把它⽤起来。
4.AutoKeras
与标准的机器学习库相⽐,神经⽹络和深度学习功能更强⼤,因此更难实现⾃动化。
使⽤ AutoKeras,神经结构搜索算法可以找到最佳的结构,如⼀个层中的神经元数量、层的数量、要合并的层、特定于层的参数,如过滤器⼤⼩或丢失神经元的百分⽐等。⼀旦搜索完成,可以将该模型⽤作普通的 TensorFlow/Keras 模型。
通过使⽤AutoKeras,我们可以构建⼀个包含复杂元素(如嵌⼊和空间缩减)的模型,这些元素对于仍在学习深度学习过程中的⼈来说是不太容易访问的。
当 AutoKeras 为我们创建模型时,许多预处理,如⽮量化或清除⽂本数据,都会为您完成并优化。
启动和训练搜索需要两条线。AutoKeras 拥有⼀个类似 Keras 的界⾯,所以它不难记住和使⽤。
AutoKeras ⽀持⽂本、图像和结构化数据,以及为初学者和寻求更多技术细节的⼈提供的界⾯,AutoKeras 使⽤进化神经结构搜索⽅法为我们消除繁重的⼯作和模糊性。
虽然 AutoKeras 运⾏需要很长时间,但是有许多⽤户指定的参数可⽤于控制运⾏时间、探索的模型数量、搜索空间⼤⼩等。
考虑使⽤ AutoKeras ⽣成的⽂本分类任务的这种经过考虑的体系结构。Hyperparameter |Value |Best Value So Far
text_block_1/block_type|transformer|transformer
classification_head_1/dropout|0 |0
暖黄色optimizer |adam |adam
learning_rate |0.001 |0.001
text_block_1/max_tokens|20000 |20000
text_block_1/text_to_int_quence_1/output_quence_length|200 |200
text_block_1/transformer_1/pretraining|none |none
text_block_1/transformer_1/embedding_dim|32 |32
燃字开头的成语
text_block_1/transformer_1/num_heads|2 |2
text_block_1/transformer_1/den_dim|32 |32
text_block_1/transformer_1/dropout|0.25 |0.25
text_block_1/spatial_reduction_1/reduction_type|global_avg|global_avg
text_block_1/den_block_1/num_layers|1 |1
text_block_1/den_block_1/u_batchnorm|Fal |Fal
text_block_1/den_block_1/dropout|0.5 |0.5
text_block_1/den_block_1/units_0|20 |20
对⽐:你应该⽤哪⼀个AutoML库?
如果你的⾸要任务是需要⼀个⼲净,简单的界⾯和相对快速的结果,请选择使⽤auto-sklearn。此外:该库与sklearn的⾃然集成,可与常⽤的模型和⽅法⼀起使⽤,这样可以对时间有更多的控制作⽤。
如果你的⾸要任务是⾼准确度,不考虑可能需要的长时间训练,则使⽤TPOT。强调⾼级预处理⽅法,通过将管道表⽰为树结构⽽成为可能。额外提⽰:TPOT可以为最佳模型输出Python代码。
如果你的⾸要任务是⾼准确度,不考虑可能需要的长时间训练,则可以使⽤ HyperOpt sklearn。强调模型的超参数优化,不知道是否产⽣效果,具体情况要取决于数据集和算法。
如果你的问题需要神经⽹络才能解决,特别是当它以⽂本或图像的形式出现时,使⽤AutoKeras。虽然确实需要很长的训练时间,但有很多措施可以控制时间和搜索空间的⼤⼩。