最基本的(也可能是众所周知的)替代方案是 sklearn 的 GridSearchCV,它将尝试多种超参数组合并根据交叉验证选择最佳组合。
GridSearchCV 将在先前定义的空间内尝试组合。例如,对于随机森林分类器,可能想要测试几个不同的树的最大深度。 GridSearchCV 会提供每个超参数的所有可能值,并查看所有组合。
Optuna会在定义的搜索空间中使用自己尝试的历史来确定接下来要尝试的值。它使用的方法是一种称为“Tree-structured Parzen Estimator”的贝叶斯优化算法。
这种不同的方法意味着它不是无意义的地尝试每一个值,而是在尝试之前寻找最佳候选者,这样可以节省时间,否则这些时间会花在尝试没有希望的替代品上(并且可能也会产生更好的结果)。
最后,它与框架无关,这意味着您可以将它与 TensorFlow、Keras、PyTorch 或任何其他 ML 框架一起使用。
2、ITMO_FS
ITMO_FS 是一个特征选择库,它可以为 ML 模型进行特征选择。拥有的观察值越少,就越需要谨慎处理过多的特征,以避免过度拟合。所谓“谨慎”意思是应该规范你的模型。通常一个更简单的模型(更少的特征),更容易理解和解释。
ITMO_FS 算法分为 6 个不同的类别:监督过滤器、无监督过滤器、包装器、混合、嵌入式、集成(尽管它主要关注监督过滤器)。
“监督过滤器”算法的一个简单示例是根据特征与目标变量的相关性来选择特征。“backward selection”,可以尝试逐个删除特征,并确认这些特征如何影响模型预测能力。
这是一个关于如何使用 ITMO_FS 及其对模型分数的影响的普通示例:
from sklearn.linear_model import SGDClassifier
from ITMO_FS.embedded import MOS
X, y = make_classification(n_samples=300, n_features=10, random_state=0, n_informative=2)
sel = MOS()
trX = sel.fit_transform(X, y, smote=False)
cl1 = SGDClassifier()
cl1.fit(X, y)
cl1.score(X, y)
0.9033333333333333
cl2 = SGDClassifier()
cl2.fit(trX, y)
cl2.score(trX, y)
0.9433333333333334
ITMO_FS是一个相对较新的库,因此它仍然有点不稳定,但我仍然建议尝试一下。
3、shap-hypetune
到目前为止,我们已经看到了用于特征选择和超参数调整的库,但为什么不能同时使用两者呢?这就是 shap-hypetune 的作用。
让我们从了解什么是“SHAP”开始:
“SHAP(SHapley Additive exPlanations)是一种博弈论方法,用于解释任何机器学习模型的输出。”
SHAP 是用于解释模型的最广泛使用的库之一,它通过产生每个特征对模型最终预测的重要性来工作。
另一方面,shap-hypertune 受益于这种方法来选择最佳特征,同时也选择最佳超参数。你为什么要合并在一起?因为没有考虑它们之间的相互作用,独立地选择特征和调整超参数可能会导致次优选择。同时执行这两项不仅考虑到了这一点,而且还节省了一些编码时间(尽管由于搜索空间的增加可能会增加运行时间)。
搜索可以通过 3 种方式完成:网格搜索、随机搜索或贝叶斯搜索(另外,它可以并行化)。
但是,shap-hypertune 仅适用于梯度提升模型!
4、PyCaret
PyCaret 是一个开源、低代码的机器学习库,可自动执行机器学习工作流。 它涵盖探索性数据分析、预处理、建模(包括可解释性)和 MLOps。
让我们看看他们网站上的一些实际示例,看看它是如何工作的:
load dataset
from pycaret.datasets import get_data
diabetes = get_data(‘diabetes’)
init setup
from pycaret.classification import *
clf1 = setup(data = diabetes, target = ‘Class variable’)
compare models
best = compare_models()
只需几行代码,就可以尝试多个模型,并在整个主要分类指标中对它们进行了比较。
它还允许创建一个基本的应用程序来与模型进行交互:
from pycaret.datasets import get_data
juice = get_data(‘juice’)
from pycaret.classification import *
exp_name = setup(data = juice, target = ‘Purchase’)
lr = create_model(‘lr’)
create_app(lr)
最后,可以轻松地为模型创建 API 和 Docker 文件:
from pycaret.datasets import get_data
juice = get_data(‘juice’)
from pycaret.classification import *
exp_name = setup(data = juice, target = ‘Purchase’)
lr = create_model(‘lr’)
create_api(lr, ‘lr_api’)
create_docker(‘lr_api’)
没有比这更容易的了,对吧?
PyCaret是一个非常完整的库,在这里很难涵盖所有内容,建议你现在下载并开始使用它来了解一些 其在实践中的能力。
5、floWeaver
FloWeaver 可以从流数据集中生成桑基图。 如果你不知道什么是桑基图,这里有一个例子:
在显示转化漏斗、营销旅程或预算分配的数据时,它们非常有用(上例)。 入口数据应采用以下格式:“源 x 目标 x 值”,只需一行代码即可创建此类图(非常具体,但也非常直观)。
6、Gradio
如果你阅读过敏捷数据科学,就会知道拥有一个让最终用户从项目开始就与数据进行交互的前端界面是多么有帮助。一般情况下在Python中最常用是 Flask,但它对初学者不太友好,它需要多个文件和一些 html、css 等知识。
Gradio 允许您通过设置输入类型(文本、复选框等)、功能和输出来创建简单的界面。 尽管它似乎不如 Flask 可定制,但它更直观。
由于 Gradio 现在已经加入 Huggingface,可以在互联网上永久托管 Gradio 模型,而且是免费的!
7、Terality
理解 Terality 的最佳方式是将其视为“Pandas ,但速度更快”。这并不意味着完全替换 pandas 并且必须重新学习如何使用df:Terality 与 Pandas 具有完全相同的语法。实际上,他们甚至建议“import Terality as pd”,并继续按照以前的习惯的方式进行编码。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)
e9.png)
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)