最近终于搞完了毕业论文。闲下来写点东西。
学会贝叶斯优化之后终于从grid search里毕业的感觉真是太好了,效率直线上升。
关于贝叶斯优化的介绍以及理论很多文章都有过介绍这里就不多说了。搬运一个无利益关系的地址:
Dai Zhongxiang:贝叶斯优化/Bayesian Optimizationzhuanlan.zhihu.com总而言之就是两个字就是:好用 ! !
仔细kaggle上找的代码还是稍微有点繁琐的。这篇有点水的文就当自己的备忘录了。为了方便使用我把一个简单的预测溶解度的问题搬过来做一个贝叶斯优化调参的tutorial。
首先导入所需要的包:
from rdkit import rdBase, Chem
from rdkit.Chem import AllChem, Draw, PandasTools, Descriptors
from rdkit.Chem.Draw import IPythonConsole
import numpy as np
import pandas as pd
import urllib.request
然后从github上下载数据并进行整理。这是一个稍微小点的1000个左右的化合物分子及其溶解度的数据。使用rdkit的pandastools让分子式也同时显示出来。
url = 'https://raw.githubusercontent.com/HIPS/neural-fingerprint/master/data/2015-05-24-delaney/ci034243xsi20040112_053635.txt'
urllib.request.urlretrieve(url, 'water_solubility.txt')
df = pd.read_csv('water_solubility.txt', sep=',')
PandasTools.AddMoleculeColumnToFrame(frame=df, smilesCol='smiles')
df.columns = ['ID', 'm_sol', 'p_sol', 'SMILES', 'ROMol']
df.head()
然后得到这样的结果