计算机系统应用教程网站

网站首页 > 技术文章 正文

【Python机器学习系列】使用SMAC优化SVC分类模型的超参数

btikc 2024-09-25 15:12:59 技术文章 27 ℃ 0 评论

这是我的第352篇原创文章。

一、引言

在机器学习和人工智能领域,优化超参数以提升模型性能是一项至关重要的任务。SMAC3,全称Sequential Model-based Algorithm Configuration,是一个强大且灵活的贝叶斯优化包,专注于高效地寻找算法的最佳超参数配置。该项目由自动机器学习(AutoML)领域的专家团队开发,旨在简化并加速这一过程。SMAC3的核心是结合了贝叶斯优化与激进的赛车机制。这种组合策略能够智能地预测超参数配置的效果,并通过比较选择更优的配置,从而减少不必要的试验。其Python3实现保证了代码的易用性和可扩展性,而C++编写的随机森林提升了运行效率。

Install SMAC via PyPI:

pip install smac

这个库目前只适用于Linux操作系统环境,对于Windows环境使用需要借助WSL。

二、实现过程

2.1 准备数据

data = pd.read_csv(r'Dataset.csv')
df = pd.DataFrame(data)
## 数据基本信息
print(df.head())

df:

2.2 数据集划分

target = 'target'
features = df.columns.drop(target)
print(data["target"].value_counts()) # 顺便查看一下样本是否平衡


# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(df[features], df[target], test_size=0.2, random_state=0)

2.3 定义训练函数

def train(config: Configuration, seed: int = 0) -> float:
    classifier = SVC(C=config["C"], random_state=seed)
    scores = cross_val_score(classifier, X_train, y_train, cv=5)
    return 1 - np.mean(scores)

2.4 定义配置空间

configspace = ConfigurationSpace({"C": (0.100, 1000.0)})

2.5 定义优化环境的方案

scenario = Scenario(configspace, deterministic=True, n_trials=200)

2.6 使用SMAC寻找最优的配置或参数

smac = HyperparameterOptimizationFacade(scenario, train)
incumbent = smac.optimize()


print("Best found configuration: ", incumbent)

结果:

最优的C是707.7831968884921。

作者简介: 读研期间发表6篇SCI数据算法相关论文,目前在某研究院从事数据算法相关研究工作,结合自身科研实践经历持续分享关于Python、数据分析、特征工程、机器学习、深度学习、人工智能系列基础知识与案例。关注gzh:数据杂坛,获取数据和源码学习更多内容。

原文链接:

【Python机器学习系列】使用SMAC优化SVC分类模型的超参数(案例+源码)

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表