# パラメータの取りうる範囲
    x_grid = np.atleast_2d(np.linspace(0, 10, 1001)[:1000]).T

    # 初期値として x=1, 9 の 2 点の探索をしておく.
    X = np.atleast_2d([1., 9.]).T
    y = blackbox_func(X).ravel()

    # Gaussian Processs Upper Confidence Bound (GP-UCB)アルゴリズム
    # --> 収束するまで繰り返す(収束条件などチューニングポイント)
    n_iteration = 20
    for i in range(n_iteration):

        # 既に分かっている値でガウス過程フィッティング
        # --> カーネル関数やパラメータはデフォルトにしています(チューニングポイント)
        range_g = 2**np.arange(-20, 11, dtype=float)
        optgamma = optimize_gamma(X, range_g)
        model = SVR(gamma=optgamma)
        model.fit(X, y)

        # 事後分布が求まる
        posterior_mean = model.predict(x_grid)
        #        posterior_sig = dist_knn(X, x_grid,i+1)
        posterior_sig = dist_ocsvm(X, x_grid, optgamma)

        # 目的関数を最大化する x を次のパラメータとして選択する
        # --> βを大きくすると探索重視(初期は大きくし探索重視しイテレーションに同期して減衰させ活用を重視させるなど、チューニングポイント)
        idx = acq_ucb(posterior_mean, posterior_sig, beta=100.0)
        x_next = x_grid[idx]

        plot(x_grid,
             y,
예제 #2
0
cv = ShuffleSplit(n_splits=5, test_size=0.2)
cv = KFold(n_splits=5, shuffle=True)
gscv = GridSearchCV(mod, param_grid, cv=cv)
gscv.fit(X_train, y_train)
print_gscv_score_rgr(gscv, X_train, X_test, y_train, y_test, cv)

#%%
# Novelty detection by One Class SVM with optimized hyperparameter
clf = OneClassSVM(nu=0.003,
                  kernel=gscv.best_params_['kernel'],
                  gamma=gscv.best_params_['gamma'])
clf.fit(X_train)
reliability1 = clf.predict(X_test)  # outliers = -1

# Novelty detection by One Class SVM with optimized hyperparameter
optgamma = optimize_gamma(X_train, range_g)
clf = OneClassSVM(nu=0.003, kernel=gscv.best_params_['kernel'], gamma=optgamma)
clf.fit(X_train)
reliability2 = clf.predict(X_test)  # outliers = -1

y_pred = gscv.predict(X_test)  # prediction
results = np.c_[y_pred, y_test, reliability1, reliability2]
columns = ['predicted y', 'observed y', 'reliability1', 'reliability2']
df = pd.DataFrame(results, columns=columns)
print(df)

#%%
for i in range(1):
    dcv(X, y, mod, param_grid)

print('{:.2f} seconds '.format(time() - start))