文章目录

  • 步骤一:构造黑盒目标函数
  • 步骤二:确定取值空间
  • 步骤三:构造贝叶斯优化器
  • 全部代码

贝叶斯优化有几个步骤:

  1. 构造黑盒目标函数
  2. 确定取值空间
  3. 构造贝叶斯优化器

下面以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为例相关推荐

  1. 机器学习:贝叶斯和优化方法_Facebook使用贝叶斯优化在机器学习模型中进行更好的实验

    机器学习:贝叶斯和优化方法 I recently started a new newsletter focus on AI education. TheSequence is a no-BS( mea ...

  2. python贝叶斯优化算法_【干货】手把手教你Python实现自动贝叶斯调整超参数

    [导读]机器学习中,调参是一项繁琐但至关重要的任务,因为它很大程度上影响了算法的性能.手动调参十分耗时,网格和随机搜索不需要人力,但需要很长的运行时间.因此,诞生了许多自动调整超参数的方法.贝叶斯优化 ...

  3. 朴素贝叶斯算法python sklearn实现_朴素贝叶斯算法优化与 sklearn 实现

    进行拉普拉斯平滑运算后,我们运行程序,仍然得出了两个测试样本均属于非侮辱类的结果,这是为什么呢? 我们查看最终计算出的 p0 和 p1 会发现,他们的结果都是 0,这又是为什么呢? 这是因为出现了另一 ...

  4. 贝叶斯优化xgboost_超参数调整xgboost和神经网络的hyperopt贝叶斯优化

    贝叶斯优化xgboost Hyperparameters: These are certain values/weights that determine the learning process o ...

  5. 暴力调参——GridSearchCV、RandomizedSearchCV、贝叶斯优化

    https://blog.csdn.net/juezhanangle/article/details/80051256 http://www.360doc.com/content/18/0707/15 ...

  6. 贝叶斯优化(Bayesian Optimization)只需要看这一篇就够了,算法到python实现

    贝叶斯优化 (BayesianOptimization) 1 问题提出 神经网咯是有许多超参数决定的,例如网络深度,学习率,正则等等.如何寻找最好的超参数组合,是一个老人靠经验,新人靠运气的任务. 穷 ...

  7. 贝叶斯优化BayesianOptimization

    神经网络有很多超参数(学习率,正则等等).如何寻找最好的超参数组合,穷举搜索 Grid Search 效率太低:随机搜索比穷举搜索好一点:目前比较好的解决方案是贝叶斯优化. 1.贝叶斯优化的优点 贝叶 ...

  8. 贝叶斯优化方法和应用综述

    贝叶斯优化方法和应用综述 各类优化算法入门优秀论文总结目录 1.摘要 设计类问题在科学研究和工业领域无处不在.作为一种十分有效的全局优化算法,近年来,贝叶斯优化方法在设计类问题上被广泛应用.通过设计恰 ...

  9. 贝叶斯优化优秀论文总结目录

    持续更新中,论文均来自该领域的优秀会议或期刊,涉及的领域主要是贝叶斯优化,离散贝叶斯优化.本人才疏学浅,若读者发现有不对的地方,欢迎留言评论指正. Bayesian optimization 标题 发 ...

最新文章

  1. “CV_GRAY2BGR”: 未声明的标识符
  2. buildPyramid函数
  3. T-SQL 之 多表联合更新
  4. windows副本不是正版怎么解决_解决Windows沙盒怎么联网问题
  5. 同步函数与同步代码块的区别
  6. python爬虫进阶教程:百万英雄答题辅助系统
  7. java枚举的线程安全及序列化
  8. 常用评价指标及其Python实现
  9. Java对图片Base64转码--HTML对Base64解码
  10. 07《基于深度学习的车标识别方法研究》学习总结
  11. 打开caj文件显示服务器忙,欢迎使用CAJViewer-常见问题
  12. October CMS - 快速入门 2 基本概念
  13. CDH-TXKT-hive、impala
  14. 2021信息安全工程师学习笔记(四)
  15. C语言关于有符号和无符号变量相互赋值的探讨
  16. Tandem Repeats Finder:串联重复序列查找工具
  17. Hadoop第三天--linux指令
  18. 腾讯入股山东福瑞达生物,投前估值36亿元,再次加码医美赛道
  19. tankbot 机器人_优必选科技履带式Jimu机器人TankBot登陆Apple Store零售店
  20. win7FTP服务器配置以及访问

热门文章

  1. MySQL表/视图/存储过程and函数/触发器/事件与数据库之间的关系
  2. oracle数据库扩容方案_ORACLE数据库扩容
  3. 深入玩转K8S之智能化的业务弹性伸缩和滚动更新操作
  4. 关于LUA+Unity开发_XLua篇
  5. resultMap与resultType、parameterMap与 parameterType的区别
  6. [MySQL]SQL
  7. 开源日志库log4cplus+VS2008使用整理
  8. 麦吉尔大学 计算机科学和阿尔伯特,阿尔伯特大学怎么样?
  9. ajax中判空函数,jQuery Ajax成功函数数据为空?
  10. js 去重某个键值 数组对象_JS数组去重常见方法分析