physbo.search.score のソースコード

import numpy as np
import scipy.stats

[ドキュメント]def EI(predictor, training, test, fmax=None): """ Maximum expected improvement. Parameters ---------- predictor: predictor object Base class is defined in physbo.predictor. training: physbo.variable Training dataset. If already trained, the model does not use this. test: physbo.variable Inputs fmax: float Max value of posterior probability distribution. If not set fmax, the max value of posterior mean of weights is set. Returns ------- score: numpy.ndarray """ fmean = predictor.get_post_fmean(training, test) fcov = predictor.get_post_fcov(training, test) fstd = np.sqrt(fcov) if fmax is None: fmax = np.max(predictor.get_post_fmean(training, training)) temp1 = (fmean - fmax) temp2 = temp1 / fstd score = temp1 * scipy.stats.norm.cdf(temp2) \ + fstd * scipy.stats.norm.pdf(temp2) return score
[ドキュメント]def PI(predictor, training, test, fmax=None): """ Maximum probability of improvement. Parameters ---------- predictor: predictor object Base class is defined in physbo.predictor. training: physbo.variable Training dataset. If already trained, the model does not use this. test: physbo.variable Inputs fmax: float Max value of posterior probability distribution. If not set fmax, the max value of posterior mean of weights is set. Returns ------- score: numpy.ndarray """ fmean = predictor.get_post_fmean(training, test) fcov = predictor.get_post_fcov(training, test) fstd = np.sqrt(fcov) if fmax is None: fmax = np.max(predictor.get_post_fmean(training, training)) temp = (fmean - fmax)/fstd score = scipy.stats.norm.cdf(temp) return score
[ドキュメント]def TS(predictor, training, test, alpha=1): """ Thompson sampling (See Sec. 2.1 in Materials Discovery Volume 4, June 2016, Pages 18-21) Parameters ---------- predictor: predictor object Base class is defined in physbo.predictor. training: physbo.variable Training dataset. If already trained, the model does not use this. test: physbo.variable Inputs alpha: float noise for sampling source (default: 1.0) Returns ------- score: numpy.ndarray """ score = predictor.get_post_samples(training, test, alpha=alpha) try: score.shape[1] score[0, :] except: pass return score