コード例 #1
0
def training_l(X, Y, X_test, Y_test, supp, c, s,
               epochs=10, n_hidden1=1, learning_rate=0.01, Ts=1000, step=1, C=3.):
    N, p = X.shape
    torch.manual_seed(1) # set seed 
    # Define neural network model
    model = Net_linear(n_feature=p, n_hidden1=n_hidden1, n_output=1)
    # reserve model for the save of best model
    best_model = Net_linear(n_feature=p, n_hidden1=n_hidden1, n_output=1)
    # Define optimization algorithm for two sets of parameters, where weight_decay is the lambdas
    optimizer = torch.optim.SGD(list(model.parameters()), lr=0.001, weight_decay=0.0025*c)
    optimizer0 = torch.optim.SGD(model.hidden0.parameters(), lr=0.001, weight_decay=0.0005*c)
    # Define loss function
    lf = torch.nn.MSELoss()
    # Take track of loss function values and supports over iteration
    hist = []
    SUPP = []
    supp_x = range(p) # initial support
    SUPP.append(supp_x)
    
    ### DFS algorithm
    for i in range(epochs):
        # One DFS epoch
        model, supp_x, _ = DFS_epoch(model, s, supp_x, X, Y, lf, optimizer0, optimizer, Ts, step)
        supp_x.sort()
        # Save current loss function value and support
        hist.append(lf(model(X), Y).data.numpy().tolist())
        SUPP.append(supp_x)
        # Prevent divergence of optimization over support, save the current best model
        if hist[-1] == min(hist):
            best_model.load_state_dict(model.state_dict())
            best_supp = supp_x
        # Early stop criteria
        if len(SUPP[-1]) == len(SUPP[-2]) and len(set(SUPP[-1]).difference(SUPP[-2])) == 0:
            break
    # metrics calculation
    fs = set(best_supp).difference(supp) # false selection number
    ns = set(supp).difference(best_supp) # negative selection number
    _err_train = mse(best_model, X, Y) # training error
    _err_test = mse(best_model, X_test, Y_test) # testing error
    _bic = N*np.log(_err_train) + C*s*np.log(N) # bic
    
    ### Second step training (for two-step procedure)
    _optimizer = torch.optim.Adam(list(best_model.parameters())[1:], lr=0.5)
    for _ in range(5000):
        out = best_model(X)
        loss = lf(out, Y)
        _optimizer.zero_grad()
        loss.backward()
        _optimizer.step()
        hist.append(loss.data.numpy().tolist())
    
    bic = N*np.log(loss.data.numpy().tolist()) + C*s*np.log(N) # bic based on final model
    err_train = mse(best_model, X, Y)
    err_test = mse(best_model, X_test, Y_test)
    return best_model, best_supp, bic, [_err_train, _err_test], [err_train, err_test]
コード例 #2
0
    def __init__(self, state_size, history_size=1, dropout_keep_prob=-1, embedding_size=-1, reuse=False):
        self.state_size = state_size

        with tf.variable_scope('Critic' if not reuse else "ShareLatent" , reuse=reuse):
            self.inputs = tf.placeholder(tf.float32, [None, history_size, self.state_size])
            self.returns = tf.placeholder(tf.float32, [None, ])

            self.inputs_flat = tf.reshape(self.inputs, [-1, self.state_size * history_size])

            if embedding_size != -1:
                self.task_input = tf.placeholder(tf.float32, [None, embedding_size])
                self.inputs_flat = tf.concat([self.task_input, self.inputs_flat], 1)
                self.W_fc1 = _fc_weight_variable([self.state_size * history_size + embedding_size, HIDDEN_SIZE], name = "W_fc1")
            else:
                self.W_fc1 = _fc_weight_variable([self.state_size * history_size, HIDDEN_SIZE], name = "W_fc1")

            self.b_fc1 = _fc_bias_variable([HIDDEN_SIZE], self.state_size, name = "b_fc1")
            self.fc1 = tf.nn.relu(tf.nn.bias_add(tf.matmul(self.inputs_flat, self.W_fc1), self.b_fc1))

            if dropout_keep_prob != -1:
                self.fc1 = tf.nn.dropout(self.fc1, dropout_keep_prob)

        with tf.variable_scope("Value"):
            self.W_fc2 = _fc_weight_variable([HIDDEN_SIZE, 1], name = "W_fc3")
            self.b_fc2 = _fc_bias_variable([1], HIDDEN_SIZE, name = "b_fc3")

            self.value = tf.nn.bias_add(tf.matmul(self.fc1, self.W_fc2), self.b_fc2)
            
        self.value_loss = tf.reduce_mean(mse(tf.squeeze(self.value), self.returns))
   
        self.variables = [self.W_fc1, self.b_fc1, self.W_fc2, self.b_fc2]
コード例 #3
0
    def __init__(self, state_size):
        self.state_size = state_size

        with tf.variable_scope('Critic'):
            self.inputs = tf.placeholder(tf.float32, [None, self.state_size])
            self.returns = tf.placeholder(tf.float32, [
                None,
            ])

            self.W_fc1 = self._fc_weight_variable([self.state_size, 256],
                                                  name="W_fc1")
            self.b_fc1 = self._fc_bias_variable([256],
                                                self.state_size,
                                                name="b_fc1")
            self.fc1 = tf.nn.relu(
                tf.matmul(self.inputs, self.W_fc1) + self.b_fc1)

        with tf.variable_scope("Value"):
            self.W_fc2 = self._fc_weight_variable([256, 1], name="W_fc3")
            self.b_fc2 = self._fc_bias_variable([1], 256, name="b_fc3")

            self.value = tf.matmul(self.fc1, self.W_fc2) + self.b_fc2

        self.value_loss = tf.reduce_mean(
            mse(tf.squeeze(self.value), self.returns))

        self.variables = [self.W_fc1, self.b_fc1, self.W_fc2, self.b_fc2]
コード例 #4
0
def main(p_miss=0.5,
         hidden_size=100,
         epochs=70,
         lr=0.001,
         dataset="drive",
         mode="mcar",
         para=0.5,
         train=None):

    n, p, xmiss, xhat_0, mask, data_x, data_y = load_data(p_miss,
                                                          dataset=dataset,
                                                          mode=mode,
                                                          para=para,
                                                          train=train)

    imputer = MiceImputer(np.nan)
    X = xmiss

    X_filled, specs = imputer.transform(
        np.array(X), (hidden_size, hidden_size, hidden_size),
        epochs=epochs,
        lr=lr,
        iterations=10)

    mse_nn = mse(X_filled, data_x, mask)
    print("MSE MICE_NN : ", mse_nn)

    return X_filled, mse_nn
コード例 #5
0
    def learn(self):
        env = self.env

        for episode in range(1, self.num_episodes + 1):
            env.reset()
            state1 = env.observe()
            E = np.zeros_like(self.w)

            while state1 != TERMINAL_STATE:
                Qhat1, action1 = self.policy(state1)
                state2, reward = env.step(action1)
                Qhat2, action2 = self.policy(state2)

                feats1 = phi(state1, action1)
                grad_w_Qhat1 = feats1

                delta = reward + self.gamma * Qhat2 - Qhat1
                E = self.gamma * self.lmbd * E + grad_w_Qhat1
                dw = self.alpha * delta * E

                self.w += dw
                state1 = state2

            if self.save_error_history:
                self.Q = expand_Q(self.w)
                self.error_history.append((episode, mse(self.Q, self.opt_Q)))

        self.Q = expand_Q(self.w)
        return self.Q
コード例 #6
0
ファイル: maxvar_analysis.py プロジェクト: vishalbelsare/mvtv
def gtv_cvlam(X, y, q, num_folds=5, num_lams=20):
    n = len(X)
    folds = create_folds(n, num_folds)
    scores = np.zeros(num_lams)
    lams = None
    for i, fold in enumerate(folds):
        mask = np.ones(n, dtype=bool)
        mask[fold] = False
        x_train, y_train = X[mask], y[mask]
        x_test, y_test = X[~mask], y[~mask]
        data, weights, grid = bucket_vals(x_train, y_train, q)
        results = solve_gfl(data,
                            None,
                            weights=weights,
                            full_path=True,
                            minlam=0.1,
                            maxlam=20.,
                            numlam=num_lams)
        fold_score = np.array([
            mse(y_test, predict(x_test, beta, grid))
            for beta in results['beta']
        ])
        scores += fold_score
        if i == 0:
            lams = results['lambda']
    scores /= float(num_folds)
    lam_best = lams[np.argmin(scores)]
    data, weights, grid = bucket_vals(X, y, q)
    beta = solve_gfl(data, None, weights=weights, lam=lam_best)
    return beta.reshape(q), grid
コード例 #7
0
def ml(ml_data, target, ml_keys, ml_score_keys):
    import xgboost

    global x_train_ibis_original
    global y_train_ibis_original
    global x_valid_ibis_original
    global y_valid_ibis_original

    ml_times = {key: 0.0 for key in ml_keys}
    ml_scores = {key: 0.0 for key in ml_score_keys}

    (x_train, y_train, x_test,
     y_test), ml_times["t_train_test_split"] = split_step(ml_data, target)

    if target == 'target0':
        x_train_ibis_original = x_train
        y_train_ibis_original = y_train
        x_valid_ibis_original = x_test
        y_valid_ibis_original = y_test

    t0 = timer()
    training_dmat_part = xgboost.DMatrix(data=x_train, label=y_train)
    testing_dmat_part = xgboost.DMatrix(data=x_test, label=y_test)
    ml_times["t_dmatrix"] = round((timer() - t0) * 1000)

    watchlist = [(testing_dmat_part, "eval"), (training_dmat_part, "train")]
    xgb_params = {
        "objective": "binary:logistic",
        "tree_method": "hist",
        "max_depth": 1,
        "nthread": 56,
        "eta": 0.1,
        "silent": 1,
        "subsample": 0.5,
        "colsample_bytree": 0.05,
        "eval_metric": "auc",
    }

    t0 = timer()
    model = xgboost.train(
        xgb_params,
        dtrain=training_dmat_part,
        num_boost_round=10000,
        evals=watchlist,
        early_stopping_rounds=30,
        maximize=True,
        verbose_eval=1000,
    )
    ml_times["t_train"] = round((timer() - t0) * 1000)

    t0 = timer()
    yp = model.predict(testing_dmat_part)
    ml_times["t_inference"] = round((timer() - t0) * 1000)

    ml_scores["mse"] = mse(y_test, yp)
    ml_scores["cod"] = cod(y_test, yp)

    ml_times["t_ml"] += round(ml_times["t_train"] + ml_times["t_inference"])

    return ml_scores, ml_times
コード例 #8
0
ファイル: part3.py プロジェクト: dteoh/easy21
def main():
    mse_xs = []
    mse_ys = []
    q_star_sa = mc_control(1000000)
    for lamba in range(0, 11):
        for (_, q_sa) in sarsa_lambda(num_episodes=1000, lamba=lamba / 10):
            mse_xs.append(lamba / 10)
            mse_ys.append(mse(q_sa, q_star_sa))

    mse_0_xs = []
    mse_0_ys = []
    for (n, q_sa) in sarsa_lambda(num_episodes=1000,
                                  lamba=0,
                                  yield_progress=True):
        mse_0_xs.append(n)
        mse_0_ys.append(mse(q_sa, q_star_sa))

    mse_1_xs = []
    mse_1_ys = []
    for (n, q_sa) in sarsa_lambda(num_episodes=1000,
                                  lamba=1,
                                  yield_progress=True):
        mse_1_xs.append(n)
        mse_1_ys.append(mse(q_sa, q_star_sa))

    fig, axarr = plt.subplots(1, 3)
    ax0 = axarr[0]
    ax0.plot(mse_xs, mse_ys)
    ax0.axis([0, 1, 0, 1])
    ax0.set_xlabel("lambda")
    ax0.set_ylabel("MSE")

    ax1 = axarr[1]
    ax1.plot(mse_0_xs, mse_0_ys)
    ax1.axis([0, 1000, 0, 1])
    ax1.set_xlabel("Episode")
    ax1.set_ylabel("MSE")
    ax1.set_title("lambda=0")

    ax2 = axarr[2]
    ax2.plot(mse_1_xs, mse_1_ys)
    ax2.axis([0, 1000, 0, 1])
    ax2.set_xlabel("Episode")
    ax2.set_ylabel("MSE")
    ax2.set_title("lambda=1")

    plt.show()
コード例 #9
0
def ml(X, y, random_state, n_runs, test_size, optimizer, ml_keys,
       ml_score_keys):
    if optimizer == "intel":
        print("Intel optimized sklearn is used")
        from daal4py.sklearn.model_selection import train_test_split
        import daal4py.sklearn.linear_model as lm
    if optimizer == "stock":
        print("Stock sklearn is used")
        from sklearn.model_selection import train_test_split
        import sklearn.linear_model as lm
    else:
        print(
            f"Intel optimized and stock sklearn are supported. {optimizer} can't be recognized"
        )
        sys.exit(1)

    clf = lm.Ridge()

    mse_values, cod_values = [], []
    ml_times = {key: 0.0 for key in ml_keys}
    ml_scores = {key: 0.0 for key in ml_score_keys}

    print("ML runs: ", n_runs)
    for i in range(n_runs):
        (X_train, y_train, X_test,
         y_test), split_time = split(X,
                                     y,
                                     test_size=test_size,
                                     random_state=random_state)
        ml_times["t_train_test_split"] = split_time
        random_state += 777

        t0 = timer()
        model = clf.fit(X_train, y_train)
        ml_times["t_train"] += round((timer() - t0) * 1000)

        t0 = timer()
        y_pred = model.predict(X_test)
        ml_times["t_inference"] += round((timer() - t0) * 1000)

        mse_values.append(mse(y_test, y_pred))
        cod_values.append(cod(y_test, y_pred))

    ml_times["t_ml"] += ml_times["t_train"] + ml_times["t_inference"]

    ml_scores["mse_mean"] = sum(mse_values) / len(mse_values)
    ml_scores["cod_mean"] = sum(cod_values) / len(cod_values)
    ml_scores["mse_dev"] = pow(
        sum([(mse_value - ml_scores["mse_mean"])**2
             for mse_value in mse_values]) / (len(mse_values) - 1),
        0.5,
    )
    ml_scores["cod_dev"] = pow(
        sum([(cod_value - ml_scores["cod_mean"])**2
             for cod_value in cod_values]) / (len(cod_values) - 1),
        0.5,
    )

    return ml_scores, ml_times
コード例 #10
0
ファイル: main.py プロジェクト: a-sidorova/image-processing
def test_gauss_filter(img):
    print('\t[Loading...] Calculating..')
    start = perf_counter()
    result = gauss_filter(img)
    finish = perf_counter()
    cv2.imshow('Gauss Filter', result)
    print('\tTime: ' + str(finish - start))
    mse_value = mse(img, result)
    print('\tMSE: ' + str(mse_value) + '\n')
コード例 #11
0
def compute_dist_distribution(npy_path_list, average_image):
    n = len(npy_path_list)
    result = np.empty(n)

    for i in range(n):
        cur_img = np.load(npy_path_list[i])
        result[i] = utils.mse(average_image, cur_img)

    return result
コード例 #12
0
ファイル: main.py プロジェクト: a-sidorova/image-processing
def test_opencv_bilateral_filter(img):
    print('\t[Loading...] Calculating..')
    result = img.copy()
    start = perf_counter()
    cv2.bilateralFilter(result, 5, 50, 100)
    finish = perf_counter()
    cv2.imshow('OpenCV Bilateral Filter', result)
    print('\tTime: ' + str(finish - start))
    mse_value = mse(img, result)
    print('\tMSE: ' + str(mse_value) + '\n')
コード例 #13
0
    def validate(self):

        test_data = self.r_test
        data = self.r_train

        for u in self.ux:
            for i in self.ix:
                data[u, i] = self.predict(u, i)

        print('Mean Squared Error: {}'.format(mse(data, test_data)))
コード例 #14
0
ファイル: a2c.py プロジェクト: bsdlab/FlappyBird_agents
 def get_loss(model, placeholder_dict):
     a = placeholder_dict["A"]
     adv = placeholder_dict["ADV"]
     r = placeholder_dict["R"]
     # Compute cross entropy loss between estimated distribution of action and 'true' distribution of actions
     chosen_action_log_probs = tf.nn.sparse_softmax_cross_entropy_with_logits(
         logits=model.pi_logit, labels=a)
     pg_loss = tf.reduce_mean(adv * chosen_action_log_probs)  # minimize
     vf_loss = tf.reduce_mean(mse(tf.squeeze(model.vf), r))  # minimize
     entropy = -tf.reduce_mean(cat_entropy(model.pi_logit))  # maximize
     return pg_loss, entropy, vf_loss, model.vf, chosen_action_log_probs, None, None
コード例 #15
0
ファイル: gradients.py プロジェクト: GiovaniGitHub/notes
def adjust_weights(X, y, w, b, epochs, losses, lr, func_adjust):

    for _ in range(epochs):
        y_hat = dot(X, w) + b
        dw, db = func_adjust(X, y, y_hat)
        w -= lr * dw
        b -= lr * db

        error = mse(y, dot(X, w) + b)
        losses.append(error)

    return w, b, losses
コード例 #16
0
 def loss(self, x, y, training=True):
     with tf.name_scope('loss'):
         z = self._encode(x, training=training)
         x_h = self._decode(z, training=training)
         loss = dict()
         #loss['pmse'] = p_mse(x, x_h)
         #loss['corr'] = cc(x, x_h)
         #loss['diff'] = l1(x, x_h)
         loss['mse'] = mse(y, x_h)
         #tf.summary.scalar('pmse', loss['pmse'])
         #tf.summary.scalar('corr', loss['corr'])
         #tf.summary.scalar('diff', loss['diff'])
         tf.summary.scalar('mse', loss['mse'])
     return loss
コード例 #17
0
def test_canny(img):
    start = perf_counter()
    res = canny(img)
    finish = perf_counter()
    cv2.imshow('Canny', res)
    print('Time = ' + str(finish - start))

    start = perf_counter()
    res_cv = cv2.Canny(img, 50, 70)
    finish = perf_counter()
    cv2.imshow('OpenCV Canny', res_cv)
    print('Time_opencv = ' + str(finish - start))

    mse_value = mse(res, res_cv)
    print('MSE: ' + str(mse_value) + '\n')
コード例 #18
0
def train(target_year):
    print(target_year)
    cache_path = './cache'
    if os.path.exists(os.path.join(cache_path, "{}_boosted_tree.pkl".format(target_year))):
        df = pickle.load(open(os.path.join(cache_path, "{}_boosted_tree.pkl".format(target_year)), 'rb'))
    else:
        df = load_data(target_year)
        pickle.dump( df, open(os.path.join(cache_path, "{}_boosted_tree.pkl".format(target_year)), 'wb'))
    selected_feature = const_selected_feature
    X = df[selected_feature].values
    bde = joblib.load('dictionary/category_encoder.pkl')
    # bde = ce.BinaryEncoder(cols=categorical_feature, return_df=False)
    venue_embedding = bde.transform(df[['venue']]).values
    X = np.hstack((X, venue_embedding))

    nlp_pipeline = joblib.load('dictionary/nlp_pipeline.pkl')
    embeddings = nlp_pipeline.transform(df['summary'].values)
    X = np.hstack((X, embeddings))

    y = df['citationCount'].values
    y = np.clip( y, 0, 41)



    kf = KFold(n_splits=5)
    accuracies = []
    r2_correlations = []
    
    for train_index, test_index in tqdm(kf.split(y)):
        ensemble = build_model()
        X_train, X_test = X[train_index], X[test_index]
        y_train, y_test = y[train_index], y[test_index]

        # ensemble.fit(X_train, y_train)
        # y_pred = ensemble.predict(X_test)
        y_pred = [np.mean(y_train)]*len(y_test)
        mse_score = mse(y_pred, y_test)
        r2 = r2_score(y_test, y_pred)
        r2_correlations.append(r2)
        accuracies.append(mse_score)    

    print("MSE: {} ({})".format(np.mean(accuracies), np.std(accuracies)))
    print("R2 : {} ({})".format(np.mean(r2_correlations), np.std(r2_correlations)))
    print("Sample : ")
    print(y_pred[:10])
    print(y_test[:10])
コード例 #19
0
def getBestMatchIndex(input_image, boundingRect, subImage, arabicTemplates, yUps, yDowns):
    bestError,result,index = 1000000,0,0
    yUps = np.concatenate((np.zeros(10),yUps),axis=1)
    yDowns = np.concatenate((np.zeros(10),yDowns),axis=1)
    for image in arabicTemplates:
            subImage = getSubImage(boundingRect ,input_image,yUp=yUps[index],yDown=yDowns[index])
            subImage = cv2.cvtColor(subImage,cv2.COLOR_BGR2GRAY)
            height,width = subImage.shape
            image = cv2.resize(image,(width, height), interpolation = cv2.INTER_CUBIC)
            image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
            #ret,image = cv2.threshold(image,127,255,0)
            mseError = mse(subImage, image)
            if(mseError < bestError):
                bestError = mseError
                result = index
            index+=1
    return result
コード例 #20
0
ファイル: CNNTrainer.py プロジェクト: rplab-snu/MAR
    def valid(self, epoch, val_loader):
        print("\nStart Val")
        self.G.eval()
        mse_loss = 0
        for i, (input_, target_, _) in enumerate(val_loader):
            input_ = Variable(input_, volatile=True).cuda()
            target_ = Variable(target_, volatile=True).cuda()
            output_ = G(input_)

            target_ = target_.cpu.data[0].numpy()
            output_ = output_.cpu.data[0].numpy()

            mse_loss += utils.mse(output_, target_)

        mse_loss /= len(val_loader)
        print("[Val] epoch:{} / best_mse:{}\n".format(epoch, best_mse))
        if mse_loss < self.best_mse:
            self.best_mse = mse_loss.data[0]
            self.save()
        print("End Val\n")
コード例 #21
0
def eval_togtd_per_run(env, truth, stat_dist, runtime, runtimes, episodes,
                       target, behavior, gamma, Lambda, alpha, beta,
                       evaluation):
    print('running %d of %d for togtd' % (runtime + 1, runtimes))
    value_trace = true_online_gtd(env,
                                  episodes,
                                  target,
                                  behavior,
                                  Lambda,
                                  gamma=gamma,
                                  alpha=alpha,
                                  beta=beta,
                                  evaluation=evaluation)
    if evaluation is not None:
        return value_trace.T
    else:
        result = np.zeros((1, episodes))
        for j in range(len(value_trace)):
            result[0, j] = mse(value_trace[j], truth, stat_dist)
        return result
コード例 #22
0
def runTests(X, Y):
    Xtr, Xte, Ytr, Yte = utils.splitData(X, Y, 0.9)

    print("X and Y shapes =", X.shape, Y.shape)

    results, estimator = nn.train(Xtr, Ytr)

    print(results)

    estimator.fit(Xtr, Ytr)
    Yhat = estimator.predict(Xte)

    mse = utils.mse(Yte, Yhat)

    print("mse on testing data is", mse)

    return (
        results,
        mse,
    )
コード例 #23
0
ファイル: gradients.py プロジェクト: GiovaniGitHub/notes
def adjust_weights_with_batch(X, y, w, b, epochs, batch, losses, lr, func_adjust):
    n_rows, _ = X.shape
    for _ in range(epochs):
        for i in range((n_rows - 1) // batch + 1):

            start_i = i * batch
            end_i = start_i + batch
            idx = list(range(start_i, end_i))

            Xb = X[idx, :]
            yb = y[idx, :]
            y_hat = dot(Xb, w) + b

            dw, db = func_adjust(Xb, yb, y_hat)

            w -= lr * dw
            b -= lr * db
        error = mse(y, dot(X, w) + b)
        losses.append(error)

    return w, b, losses
コード例 #24
0
ファイル: sarsa.py プロジェクト: hartikainen/easy21
    def learn(self):
        env = self.env
        Q = self.Q
        N = np.zeros(STATE_SPACE_SHAPE)

        for episode in range(1, self.num_episodes + 1):
            env.reset()
            state1 = env.observe()
            E = np.zeros(STATE_SPACE_SHAPE)  # eligibility traces

            while state1 != TERMINAL_STATE:
                action1 = epsilon_greedy_policy(Q, N, state1)
                state2, reward = env.step(action1)

                dealer1, player1 = state1
                idx1 = (dealer1 - 1, player1 - 1, action1)
                Q1 = Q[idx1]

                if state2 == TERMINAL_STATE:
                    Q2 = 0.0
                else:
                    action2 = epsilon_greedy_policy(Q, N, state2)
                    dealer2, player2 = state2
                    idx2 = (dealer2 - 1, player2 - 1, action2)
                    Q2 = Q[idx2]

                N[idx1] += 1
                E[idx1] += 1

                alpha = 1.0 / N[idx1]
                delta = reward + self.gamma * Q2 - Q1
                Q += alpha * delta * E
                E *= self.gamma * self.lmbd

                state1 = state2

            if self.save_error_history:
                self.error_history.append((episode, mse(self.Q, self.opt_Q)))

        return Q
コード例 #25
0
def mSDA_cv(p, x, y, n_cv=5):

  kf = KFold(n_splits = n_cv)
  res = np.zeros((p.size, n_cv))

  for j, pj in enumerate(p):
    i = 0
    for train, test in kf.split(x):
      x_temp, y_temp = x[train], y[train]
      x_test, y_test = x[test], y[test]

      fit_sda = mSDA(x_temp.T,pj,1)
      x_sda = fit_sda[-1][-1].T
      w_sda = fit_sda[0]
      x_test_sda = mSDA_features(w_sda, x_test.T).T

      lr_sda = linear_model.LinearRegression()
      lr_sda.fit(x_sda, y_temp)
      res[j,i] = utils.mse(lr_sda, x_test_sda, y_test)

      i += 1
  res = np.mean(res,1)
  return  p[np.argmin(res)]
コード例 #26
0
ファイル: sarsa.py プロジェクト: s0phia-/easy21
 def learn(self, actions=actions, terminal=terminal):
     N = np.zeros(self.state_space)
     Q = np.zeros(self.state_space)
     if self.save_error == True:
         self.error = []
     for _ in range(0, self.episodes):
         game = self.env()
         state = game.state
         E = np.zeros(self.state_space)
         action = random.choice(actions)
         for _ in range(0, self.max_steps):
             state_prime, reward = game.step(action)
             player, dealer = state
             index = player - 1, dealer - 1, action
             N[index] += 1
             if state_prime == terminal:
                 td_error = reward - Q[index]
             else:
                 action_prime = ep_greedy(N, Q, state_prime, self.N_0)
                 player_prime, dealer_prime = state_prime
                 index_prime = player_prime - 1, dealer_prime - 1, action_prime
                 td_error = reward + (Q[index_prime] - Q[index])
             E[index] += 1
             alpha = 1 / N[index]
             Q += alpha * td_error * E
             E *= self.lmbda * self.gamma
             if state_prime == terminal:
                 break
             state, action = state_prime, action_prime
         if self.save_error == True:
             mse_ep = mse(Q, self.q_star)
             self.error.append(mse_ep)
     if self.save_error == True:
         return (Q, self.error)
     else:
         return (Q)
コード例 #27
0
    def test_mse_gives_0(self):

        x = np.array([0, 0])
        positions = [np.array([1, 0])]
        distances = [1]
        self.assertEqual(utils.mse(x, positions, distances), 0)
コード例 #28
0
 def test_mse_gives_non_zero_for_multiple_beacons(self):
     x = np.array([0, 0])
     positions = [np.array([1, 0]), np.array([1, 0])]
     distances = [1.5, 2]
     self.assertEqual(utils.mse(x, positions, distances), 1.25 / 2)
コード例 #29
0
    def computeScore(self,dart_image):    
        if(self.boardImage is None):
            return False,False
        else:
            ### set output image
            self.outputBoardImage = self.boardImage.copy()
            ###scale dart image
            self.dartImage = transform.rescale(dart_image, 0.8, anti_aliasing=True,multichannel=True)
            self.dartImage = skimage.img_as_ubyte(self.dartImage)
            ### crop dart image
            self.dartImage = utils.crop_image(self.dartImage)
            if(self.dartImage is None):
                return False,False

            ### align the two images using SIFT TECHNIQUE
            self.dartImage = utils.alignImages(self.dartImage,self.boardImage)
            
            ###### Difference of 2 Images 
            diff = utils.mse(self.boardImage,self.dartImage)
            if(diff == 0):### the two images are the same
                return False,False
            diff_image = utils.computeDifference(cv2.cvtColor(self.dartImage,cv2.COLOR_RGB2GRAY),cv2.cvtColor(self.boardImage,cv2.COLOR_RGB2GRAY))
            dart = np.multiply(diff_image,self.myMask.board)

            ####Find primary orientation of largest difference region
            [rows, columns, channels] = self.boardImage.shape
            dart_square = np.power(dart,2)
            SE = disk(np.round(rows/100))
            dart_square_threshed = dart_square > 0.2 * threshold_otsu(dart_square)
            self.myMask.dart = binary_dilation(dart_square_threshed,selem=SE)
            label_img = label(self.myMask.dart)
            region = regionprops(label_image=label_img)
            max_index = utils.get_max_index(region)

            #get the oriention in degrees
            orientation = region[max_index].orientation
            orientation = np.degrees(orientation)-90 # -90 to adjust the orientation

            #get the line structure elemet with orientation
            SE_line = utils.strel_line(length=50,degrees=orientation)

            #close using the line to get the true shape of dart touching the board
            self.myMask.dart = closing(dart_square_threshed,selem=SE_line)

            #get the contours of the dart then detect the extrem left point which is the point the dart touch the board in
            gray_dart = skimage.img_as_ubyte(self.myMask.dart)
            cnts = cv2.findContours(gray_dart, cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE)
            cnts = imutils.grab_contours(cnts)
            c = max(cnts, key=cv2.contourArea)
            extLeft = tuple(c[c[:, :, 0].argmin()][0])

            ### compare the xhit and yhit of the dart with board to know which region the dart hit
            self.dartScore = self.find_hitRegion(xhit=extLeft[0],yhit=extLeft[1],center=self.center,region=self.regions_details)

            ### draw a contour of the hit region
            hit_region = skimage.img_as_ubyte(self.myMask.hit)
            cnts = cv2.findContours(hit_region, cv2.RETR_CCOMP,cv2.CHAIN_APPROX_SIMPLE)
            cnts = imutils.grab_contours(cnts)
            cv2.drawContours(self.outputBoardImage, cnts, -1, (50, 255, 50), 5)

            return self.dartScore ,self.outputBoardImage
コード例 #30
0
def pandas_original():
    import pandas as pd
    import xgboost as xgb

    global x_train_pandas_original
    global y_train_pandas_original
    global x_valid_pandas_original
    global y_valid_pandas_original

    PATH = '/localdisk/benchmark_datasets/santander'

    train_pd = pd.read_csv('%s/train.csv' % PATH)

    for i in range(200):
        col = 'var_%d' % i
        var_count = train_pd.groupby(col).agg({col: 'count'})

        var_count.columns = ['%s_count' % col]
        var_count = var_count.reset_index()

        train_pd = train_pd.merge(var_count, on=col, how='left')

    for i in range(200):
        col = 'var_%d' % i

        mask = train_pd['%s_count' % col] > 1

        train_pd.loc[mask, '%s_gt1' % col] = train_pd.loc[mask, col]

    # train, test data split
    train, valid = train_pd[:-10000], train_pd[-10000:]
    x_train_pandas_original = train.drop(['target', 'ID_code'], axis=1)
    y_train_pandas_original = train['target']
    x_valid_pandas_original = valid.drop(['target', 'ID_code'], axis=1)
    y_valid_pandas_original = valid['target']

    xgb_params = {
        'objective': 'binary:logistic',
        'tree_method': 'hist',
        'max_depth': 1,
        'nthread': 56,
        'eta': 0.1,
        'silent': 1,
        'subsample': 0.5,
        'colsample_bytree': 0.05,
        'eval_metric': 'auc',
    }
    dtrain = xgb.DMatrix(data=x_train_pandas_original,
                         label=y_train_pandas_original)
    dvalid = xgb.DMatrix(data=x_valid_pandas_original,
                         label=y_valid_pandas_original)

    watchlist = [(dvalid, 'eval'), (dtrain, 'train')]
    clf = xgb.train(xgb_params,
                    dtrain=dtrain,
                    num_boost_round=10000,
                    evals=watchlist,
                    early_stopping_rounds=30,
                    maximize=True,
                    verbose_eval=1000)

    yp = clf.predict(dvalid)

    score_mse = mse(y_valid_pandas_original, yp)
    score_cod = cod(y_valid_pandas_original, yp)

    print('[pandas_original] Scores: ')
    print('  mse = ', score_mse)
    print('  cod = ', score_cod)