def test_regressor_modifications(self): regressor = KernelRidge(alpha=1e-8, kernel="rbf", gamma=0.1) kpcovr = self.model(mixing=0.5, regressor=regressor, kernel="rbf", gamma=0.1) # KPCovR regressor matches the original self.assertTrue( regressor.get_params() == kpcovr.regressor.get_params()) # KPCovR regressor updates its parameters # to match the original regressor regressor.set_params(gamma=0.2) self.assertTrue( regressor.get_params() == kpcovr.regressor.get_params()) # Fitting regressor outside KPCovR fits the KPCovR regressor regressor.fit(self.X, self.Y) self.assertTrue(hasattr(kpcovr.regressor, "dual_coef_")) # Raise error during KPCovR fit since regressor and KPCovR # kernel parameters now inconsistent with self.assertRaises(ValueError) as cm: kpcovr.fit(self.X, self.Y) self.assertTrue( str(cm.message), "Kernel parameter mismatch: the regressor has kernel parameters " "{kernel: linear, gamma: 0.2, degree: 3, coef0: 1, kernel_params: None}" " and KernelPCovR was initialized with kernel parameters " "{kernel: linear, gamma: 0.1, degree: 3, coef0: 1, kernel_params: None}", )
def fun_krr_fs(x, *args): X, y, flag, n_splits, random_seed = args clf = KernelRidge(kernel='rbf', ) n_samples, n_var = X.shape kernel = { 2: 'linear', 3: 'poly', 0: 'rbf', 1: 'sigmoid', 4: 'laplacian', 5: 'chi2' } p = { 'alpha': x[0], 'kernel': kernel[int(round(x[1]))], 'gamma': x[2], 'degree': int(round(x[3])), 'coef0': x[4], 'kernel_params': { 'C': x[5], }, } clf.set_params(**p) n_param = len(p) if len(x) <= n_param: ft = np.array([1 for i in range(n_var)]) ft = np.where(ft > 0.5) else: ft = np.array([1 if k > 0.5 else 0 for k in x[2::]]) ft = np.where(ft > 0.5) n_splits = n_splits try: #cv=KFold(n_splits=n_splits, shuffle=True, random_state=random_seed) cv = KFold(n_splits=n_splits, shuffle=True, random_state=int(random_seed)) #cv=StratifiedKFold(n_splits=n_splits, shuffle=True, random_state=int(random_seed)) y_p = cross_val_predict(clf, X, y, cv=cv, n_jobs=1) #r = mean_squared_error(y,y_p)**0.5 r = RMSE(y_p, y) r2 = MAPE(y_p, y) r3 = RRMSE(y_p, y) r4 = -r2_score(y_p, y) #r = -accuracy_score(y,y_p) #r = -precision_score(y,y_p) #r = -f1_score(y,y_p,average='weighted') except: y_p = [None] r = 1e12 # print (r,'\t',p,'\t',ft) if flag == 'eval': return r else: clf.fit(X[:, ft].squeeze(), y) return { 'Y_TRUE': y, 'Y_PRED': y_p, 'EST_PARAMS': p, 'PARAMS': x, 'EST_NAME': 'KRR', 'ESTIMATOR': clf, 'ACTIVE_VAR': ft, 'DATA': X, 'SEED': random_seed, 'ERROR_TRAIN': { 'RMSE': r, 'MAPE': r2, 'RRMSE': r3, 'R2_SCORE': r4 } }
n_alphas = 50 alphas = np.logspace(-1, 8, n_alphas) ridge = Ridge(fit_intercept=True) kernel_ridge = KernelRidge(kernel='poly', gamma=1, degree=3, coef0=1) test_scores_ridge = [] test_scores_kernel = [] for alpha in alphas: ridge.set_params(alpha=alpha) ridge.fit(X_train_sc, y_train_sc) test_mse = mean_squared_error_scorer(ridge, X_test_sc, y_test_sc) test_scores_ridge.append(test_mse) kernel_ridge.set_params(alpha=alpha) kernel_ridge.fit(X_train_sc, y_train_sc) test_mse = mean_squared_error_scorer(kernel_ridge, X_test_sc, y_test_sc) test_scores_kernel.append(test_mse) poly = PolynomialNetworkRegressor(degree=3, n_components=2, tol=1e-3, warm_start=True, random_state=0) test_scores_poly = [] for alpha in alphas: poly.set_params(beta=alpha) poly.fit(X_train_sc, y_train_sc)
n_alphas = 50 alphas = np.logspace(-1, 8, n_alphas) ridge = Ridge(fit_intercept=True) kernel_ridge = KernelRidge(kernel='poly', gamma=1, degree=3, coef0=1) test_scores_ridge = [] test_scores_kernel = [] for alpha in alphas: ridge.set_params(alpha=alpha) ridge.fit(X_train_sc, y_train_sc) test_mse = mean_squared_error_scorer(ridge, X_test_sc, y_test_sc) test_scores_ridge.append(test_mse) kernel_ridge.set_params(alpha=alpha) kernel_ridge.fit(X_train_sc, y_train_sc) test_mse = mean_squared_error_scorer(kernel_ridge, X_test_sc, y_test_sc) test_scores_kernel.append(test_mse) poly = PolynomialNetworkRegressor(degree=3, n_components=2, tol=1e-3, warm_start=True, random_state=0) test_scores_poly = [] for alpha in alphas: poly.set_params(beta=alpha) poly.fit(X_train_sc, y_train_sc) test_mse = mean_squared_error_scorer(poly, X_test_sc, y_test_sc) test_scores_poly.append(test_mse)