贝叶斯优化优化参数,以Kmeans为例
文章目录
- 步骤一:构造黑盒目标函数
- 步骤二:确定取值空间
- 步骤三:构造贝叶斯优化器
- 全部代码
贝叶斯优化有几个步骤:
- 构造黑盒目标函数
- 确定取值空间
- 构造贝叶斯优化器
下面以kmeans
为例:
步骤一:构造黑盒目标函数
这个函数主要是运行需要的函数,然后使用计算一个指标(只能是一个指标哈!),然后贝叶斯优化会在迭代的时候最大化这个指标,如果需要最小化这个指标,则可以在目标值前面加一个负号
def f_score(n_clusters, n_init, my_iter):k_means = KMeans(n_clusters=int(n_clusters), n_init=int(n_init), max_iter=int(my_iter))k_means.fit(data)if k_means.labels_.max() == -1 or k_means.labels_.max() == 0 or \k_means.labels_.max() == k_means.labels_.shape[0] - 1:return -1score = metrics.silhouette_score(data, k_means.labels_, metric='euclidean') # 使用轮廓系数作为最终指标,最大化轮廓系数return score # 最后要输出一个指标,贝叶斯优化器会尝试最大化这个指标
步骤二:确定取值空间
这个主要是确定搜索值的范围的:[最小,最大]
pbounds = {'n_clusters': (4, 20),'n_init': (5, 20),'my_iter': (200, 500), }
步骤三:构造贝叶斯优化器
optimizer = BayesianOptimization(f=f_score, # 黑盒目标函数pbounds=pbounds, # 取值空间verbose=2, # verbose = 2 时打印全部,verbose = 1 时打印运行中发现的最大值,verbose = 0 将什么都不打印random_state=1,)
全部代码
import pandas as pd
import numpy as np
from sklearn import metrics
from bayes_opt import BayesianOptimization
from sklearn.cluster import KMeans# 步骤一:构造黑盒目标函数
def f_score(n_clusters, n_init, my_iter):k_means = KMeans(n_clusters=int(n_clusters), n_init=int(n_init), max_iter=int(my_iter))k_means.fit(data)if k_means.labels_.max() == -1 or k_means.labels_.max() == 0 or \k_means.labels_.max() == k_means.labels_.shape[0] - 1:return -1score = metrics.silhouette_score(data, k_means.labels_, metric='euclidean') # 使用轮廓系数作为最终指标,最大化轮廓系数return score # 最后要输出一个指标,贝叶斯优化器会尝试最大化这个指标if __name__ == '__main__':data = pd.DataFrame(data=np.random.randint(0, 10, size=(2000, 10))) # 生成数据# 步骤二:确定取值空间pbounds = {'n_clusters': (4, 20),'n_init': (5, 20),'my_iter': (200, 500), }# 步骤三:构造贝叶斯优化器optimizer = BayesianOptimization(f=f_score, # 黑盒目标函数pbounds=pbounds, # 取值空间verbose=2, # verbose = 2 时打印全部,verbose = 1 时打印运行中发现的最大值,verbose = 0 将什么都不打印random_state=1,)# 开始运行optimizer.maximize( # 运行init_points=10, # 随机搜索的步数n_iter=50, # 执行贝叶斯优化迭代次数)print(optimizer.max['params']) # 最优参数print(optimizer.max['target']) # 最优值
输出为:
{'my_iter': 235.44227635380747, 'n_clusters': 19.807354168254797, 'n_init': 17.245557591846417}
0.08350507522285436
贝叶斯优化优化参数,以Kmeans为例相关推荐
- 机器学习:贝叶斯和优化方法_Facebook使用贝叶斯优化在机器学习模型中进行更好的实验
机器学习:贝叶斯和优化方法 I recently started a new newsletter focus on AI education. TheSequence is a no-BS( mea ...
- python贝叶斯优化算法_【干货】手把手教你Python实现自动贝叶斯调整超参数
[导读]机器学习中,调参是一项繁琐但至关重要的任务,因为它很大程度上影响了算法的性能.手动调参十分耗时,网格和随机搜索不需要人力,但需要很长的运行时间.因此,诞生了许多自动调整超参数的方法.贝叶斯优化 ...
- 朴素贝叶斯算法python sklearn实现_朴素贝叶斯算法优化与 sklearn 实现
进行拉普拉斯平滑运算后,我们运行程序,仍然得出了两个测试样本均属于非侮辱类的结果,这是为什么呢? 我们查看最终计算出的 p0 和 p1 会发现,他们的结果都是 0,这又是为什么呢? 这是因为出现了另一 ...
- 贝叶斯优化xgboost_超参数调整xgboost和神经网络的hyperopt贝叶斯优化
贝叶斯优化xgboost Hyperparameters: These are certain values/weights that determine the learning process o ...
- 暴力调参——GridSearchCV、RandomizedSearchCV、贝叶斯优化
https://blog.csdn.net/juezhanangle/article/details/80051256 http://www.360doc.com/content/18/0707/15 ...
- 贝叶斯优化(Bayesian Optimization)只需要看这一篇就够了,算法到python实现
贝叶斯优化 (BayesianOptimization) 1 问题提出 神经网咯是有许多超参数决定的,例如网络深度,学习率,正则等等.如何寻找最好的超参数组合,是一个老人靠经验,新人靠运气的任务. 穷 ...
- 贝叶斯优化BayesianOptimization
神经网络有很多超参数(学习率,正则等等).如何寻找最好的超参数组合,穷举搜索 Grid Search 效率太低:随机搜索比穷举搜索好一点:目前比较好的解决方案是贝叶斯优化. 1.贝叶斯优化的优点 贝叶 ...
- 贝叶斯优化方法和应用综述
贝叶斯优化方法和应用综述 各类优化算法入门优秀论文总结目录 1.摘要 设计类问题在科学研究和工业领域无处不在.作为一种十分有效的全局优化算法,近年来,贝叶斯优化方法在设计类问题上被广泛应用.通过设计恰 ...
- 贝叶斯优化优秀论文总结目录
持续更新中,论文均来自该领域的优秀会议或期刊,涉及的领域主要是贝叶斯优化,离散贝叶斯优化.本人才疏学浅,若读者发现有不对的地方,欢迎留言评论指正. Bayesian optimization 标题 发 ...
最新文章
- “CV_GRAY2BGR”: 未声明的标识符
- buildPyramid函数
- T-SQL 之 多表联合更新
- windows副本不是正版怎么解决_解决Windows沙盒怎么联网问题
- 同步函数与同步代码块的区别
- python爬虫进阶教程:百万英雄答题辅助系统
- java枚举的线程安全及序列化
- 常用评价指标及其Python实现
- Java对图片Base64转码--HTML对Base64解码
- 07《基于深度学习的车标识别方法研究》学习总结
- 打开caj文件显示服务器忙,欢迎使用CAJViewer-常见问题
- October CMS - 快速入门 2 基本概念
- CDH-TXKT-hive、impala
- 2021信息安全工程师学习笔记(四)
- C语言关于有符号和无符号变量相互赋值的探讨
- Tandem Repeats Finder:串联重复序列查找工具
- Hadoop第三天--linux指令
- 腾讯入股山东福瑞达生物,投前估值36亿元,再次加码医美赛道
- tankbot 机器人_优必选科技履带式Jimu机器人TankBot登陆Apple Store零售店
- win7FTP服务器配置以及访问
热门文章
- MySQL表/视图/存储过程and函数/触发器/事件与数据库之间的关系
- oracle数据库扩容方案_ORACLE数据库扩容
- 深入玩转K8S之智能化的业务弹性伸缩和滚动更新操作
- 关于LUA+Unity开发_XLua篇
- resultMap与resultType、parameterMap与 parameterType的区别
- [MySQL]SQL
- 开源日志库log4cplus+VS2008使用整理
- 麦吉尔大学 计算机科学和阿尔伯特,阿尔伯特大学怎么样?
- ajax中判空函数,jQuery Ajax成功函数数据为空?
- js 去重某个键值 数组对象_JS数组去重常见方法分析