コード例 #1
0
    def regression2Cls_score(self):

        c = self.config
        #c['checkpoint_dir'] = './model/test_onlyEnc_biderect_gru_orth_init'

        tv_gen = dp.train_validation_generaotr()
        _, evalSet, *_ = tv_gen.generate_train_val_set_mStock(
            c['src_file_path'],
            c['input_stocks'],
            c['input_step'],
            c['predict_step'],
            c['train_eval_ratio'],
            metafile=c['meta_file_path'])

        if c['feature_size'] == None: c['feature_size'] = evalSet.shape[-1]
        c['batch_size'] = len(evalSet)
        train, label = np.split(evalSet, [c['input_step']], axis=1)
        train = np.reshape(train[:, :, :c['feature_size']],
                           (c['batch_size'], c['input_step'], -1))
        label_reg = label[:, :, 3]

        tf.reset_default_graph()
        x = tf.placeholder(tf.float32,
                           [None, c['input_step'], c['feature_size']])
        y = tf.placeholder(tf.float32, [None, c['predict_step']])
        predict_reg = mz.model_zoo(c, x, y, dropout=1.0,
                                   is_train=False).decoder_output

        predict_reg_resore = predict_reg * self.std + self.mean
        label_reg_restore = y * self.std + self.mean

        with tf.Session() as sess:

            saver = tf.train.Saver()

            if ut.load_ckpt(saver, sess, c['checkpoint_dir'], c['ckpt_name']):
                print(" [*] Load SUCCESS")
            else:
                print(" [!] Load failed...")

            predict_s, label_reg_s = sess.run(
                [predict_reg_resore, label_reg_restore],
                feed_dict={
                    x: train,
                    y: label_reg
                })

            label_cls = np.argmax(label[:, :, -3:], axis=-1)
            last_price = np.reshape(label_reg_s[:, -1], (-1, 1))
            concat_price = np.concatenate((last_price, predict_s), axis=1)

            _, cls_res = self.generate_cls_from_reg(concat_price)

            sess.close()

        match_matrix = np.equal(cls_res, label_cls)
        match_matrix = match_matrix * 0.5 * self.weighted_array
        score = np.mean(np.sum(match_matrix, axis=1))

        return score, match_matrix, cls_res, label_cls, label_reg
コード例 #2
0
    def classification_score(self):

        tf.reset_default_graph()
        c = self.config

        tv_gen = dp.train_validation_generaotr()
        _, evalSet, *_ = tv_gen.generate_train_val_set_mStock(
            c['src_file_path'],
            c['input_stocks'],
            c['input_step'],
            c['predict_step'],
            c['train_eval_ratio'],
            metafile=c['meta_file_path'])

        if c['feature_size'] == None: c['feature_size'] = evalSet.shape[-1]
        c['batch_size'] = len(evalSet)
        train, label = np.split(evalSet, [c['input_step']], axis=1)
        train = np.reshape(train[:, :, :c['feature_size']],
                           (c['batch_size'], c['input_step'], -1))
        label_cls = label[:, :, -3:]

        x = tf.placeholder(tf.float32,
                           [None, c['input_step'], c['feature_size']])
        y = tf.placeholder(tf.float32, [None, c['predict_step'], 3])

        logits = mz.model_zoo(c, x, y, dropout=1.0,
                              is_train=False).decoder_output
        softmax_out = tf.nn.softmax(logits)
        predict_cls = tf.argmax(tf.nn.softmax(logits), axis=-1)
        ground_truth = tf.argmax(y, axis=-1)

        plane_result = tf.cast(tf.equal(predict_cls, ground_truth), tf.float32)
        weighted_result = plane_result * 0.5 * self.weighted_array
        score_tf = tf.reduce_sum(weighted_result, axis=1)
        mean_score = tf.reduce_mean(score_tf)

        with tf.Session() as sess:

            saver = tf.train.Saver()

            if ut.load_ckpt(saver, sess, c['checkpoint_dir'], c['ckpt_name']):
                print(" [*] Load SUCCESS")
            else:
                print(" [!] Load failed...")

            loss_s, softmax_out_s, predict_s, gt = sess.run(
                [logits, softmax_out, predict_cls, ground_truth],
                feed_dict={
                    x: train,
                    y: label_cls
                })
            result_cls, score, w_score, mean_score_cls = sess.run(
                [plane_result, score_tf, weighted_result, mean_score],
                feed_dict={
                    x: train,
                    y: label_cls
                })

        return mean_score_cls, softmax_out_s, gt
コード例 #3
0
    def regression_score(self):

        c = self.config
        tv_gen = dp.train_validation_generaotr()
        _, evalSet, *_ = tv_gen.generate_train_val_set_mStock(
            c['src_file_path'],
            c['input_stocks'],
            c['input_step'],
            c['predict_step'],
            c['train_eval_ratio'],
            metafile=c['meta_file_path'])

        if c['feature_size'] == None: c['feature_size'] = evalSet.shape[-1]
        c['batch_size'] = len(evalSet)

        train, label = np.split(evalSet, [c['input_step']], axis=1)
        train = np.reshape(train[:, :, :c['feature_size']],
                           (c['batch_size'], c['input_step'], -1))
        label_reg = label[:, :, 3]

        tf.reset_default_graph()
        x = tf.placeholder(tf.float32,
                           [None, c['input_step'], c['feature_size']])
        y = tf.placeholder(tf.float32, [None, c['predict_step']])
        predict_reg = mz.model_zoo(c, x, y, dropout=1.0,
                                   is_train=False).decoder_output

        predict_reg_resore = predict_reg * self.std + self.mean
        label_reg_restore = label_reg * self.std + self.mean

        abs_loss = tf.abs(predict_reg_resore - label_reg_restore)
        score_ref = ((label_reg_restore - abs_loss) / label_reg_restore) * 0.5
        w_score = self.weighted_array * score_ref
        mean_score = tf.reduce_mean(tf.reduce_sum(w_score, axis=1))

        with tf.Session() as sess:

            saver = tf.train.Saver()

            if ut.load_ckpt(saver, sess, c['checkpoint_dir'], c['ckpt_name']):
                print(" [*] Load SUCCESS")
            else:
                print(" [!] Load failed...")

            predict = sess.run(predict_reg, feed_dict={x: train, y: label_reg})
            loss, plain_scores, w_scores, mean_score_reg = sess.run(
                [abs_loss, score_ref, w_score, mean_score],
                feed_dict={
                    x: train,
                    y: label_reg
                })

            sess.close()

        return mean_score_reg, predict, label_reg
コード例 #4
0
    mask = np.zeros(np.shape(data)[-1], dtype=bool)

    for i in range(len(mask)):
        if i in feature_mask:
            mask[i] = True
        else:
            mask[i] = False

    return data[:, mask]


tf.reset_default_graph()
c = conf.config('trial_cnn_cls').config['common']
sample_window = c['input_step'] + c['predict_step']

tv_gen = dp.train_validation_generaotr()

f = tv_gen._load_data(c['src_file_path'])
stock = tv_gen._selectData2array(f, ['0050'], None)

train = stock[:769]
validation = stock[769:]

train_data = train
train_label = train[:, -3:]
validation_data = validation
validation_label = validation[:, -3:]

#Train shift 1 day
lag_day = 5
train_data = train_data[:-lag_day]
コード例 #5
0
def get_ens_model(lagday=5,
                  model_temp=xgb.XGBClassifier(max_depth=3,
                                               learning_rate=0.05,
                                               n_estimators=500,
                                               silent=True)):

    print('**********Generate model for {} day***********'.format(lagday))

    c = conf.config('trial_cnn_cls').config['common']
    *_, meta = gu.read_metafile(c['meta_file_path'])
    tv_gen = dp.train_validation_generaotr()
    f = tv_gen._load_data(c['src_file_path'])
    data = tv_gen._selectData2array(f, f.index[:-4], None)

    data_velocity = (data[1:, 0:4] - data[:-1, 0:4]) / (data[:-1, 0:4] + 0.1)
    data = data[1:]

    train_sample = data[:-30]
    train_sample_v = data_velocity[:-30]
    flat_train_sample = np.reshape(np.transpose(train_sample, (0, 2, 1)),
                                   (-1, 94))
    flat_train_sample_velocity = np.reshape(
        np.transpose(train_sample_v, (0, 2, 1)), (-1, 4))

    test_sample = data[-30:]
    test_sample_v = data_velocity[-30:]
    flat_test_sample = np.reshape(np.transpose(test_sample, (0, 2, 1)),
                                  (-1, 94))
    flat_test_sample_velocity = np.reshape(
        np.transpose(test_sample_v, (0, 2, 1)), (-1, 4))

    #
    #    flat_train_sample = train_data['train']
    #    flat_train_sample_velocity = train_data['train_velocity']
    #
    #    flat_test_sample = test_data['test']
    #    flat_test_sample_velocity = test_data['test_velocity']

    fe_train = feature_extractor(flat_train_sample, flat_train_sample_velocity)
    d_ratio = fe_train.ratio()
    d_kdj_ratio = fe_train.kdj_ratio()
    d_ratio_velocity = fe_train.ratio_velocity()
    d_ud = fe_train.ud()
    d_kdj_macd_rssi_ratio = fe_train.kdj_macd_rssi_ratio()

    fe_test = feature_extractor(flat_test_sample, flat_test_sample_velocity)
    d_ratio_test = fe_test.ratio()
    d_kdj_ratio_test = fe_test.kdj_ratio()
    d_ratio_velocity_test = fe_test.ratio_velocity()
    d_ud_test = fe_test.ud()
    d_kdj_macd_rssi_ratio_test = fe_test.kdj_macd_rssi_ratio()

    train_label_raw = np.stack(
        (flat_train_sample[:, -3] + flat_train_sample[:, -2],
         flat_train_sample[:, -1]),
        axis=1)
    test_label_raw = np.stack(
        (flat_test_sample[:, -3] + flat_test_sample[:, -2],
         flat_test_sample[:, -1]),
        axis=1)

    model_dict = {}
    predict_dict = {}
    #*****ratio********
    train, train_label = data_label_shift(d_ratio,
                                          train_label_raw,
                                          lag_day=lagday)
    test, test_label = data_label_shift(d_ratio_test,
                                        test_label_raw,
                                        lag_day=lagday)
    train_label = np.argmax(train_label, axis=-1)
    test_label = np.argmax(test_label, axis=-1)

    model = xgb.XGBClassifier(max_depth=3,
                              learning_rate=0.05,
                              n_estimators=500,
                              silent=True)
    model.fit(train, train_label)
    model_dict['ratio'] = model

    y_xgb_train = model.predict(train)
    y_xgb_v = model.predict(test)
    predict_dict['ratio'] = [y_xgb_train, y_xgb_v]

    print("Train Accuracy [ratio]: ", accuracy_score(y_xgb_train, train_label))
    print("Validation Accuracy [ratio]: ", accuracy_score(y_xgb_v, test_label))

    #*****kdj_ratio********
    train = d_kdj_ratio[:-lagday]
    test = d_kdj_ratio_test[:-lagday]

    model = xgb.XGBClassifier(max_depth=3,
                              learning_rate=0.05,
                              n_estimators=500,
                              silent=True)
    model.fit(train, train_label)
    model_dict['kdj_ratio'] = model

    y_xgb_train = model.predict(train)
    y_xgb_v = model.predict(test)
    predict_dict['kdj_ratio'] = [y_xgb_train, y_xgb_v]

    print("Train Accuracy [kdj_ratio]: ",
          accuracy_score(y_xgb_train, train_label))
    print("Validation Accuracy [kdj_ratio]: ",
          accuracy_score(y_xgb_v, test_label))

    #*****ratio_velocity********
    train = d_ratio_velocity[:-lagday]
    test = d_ratio_velocity_test[:-lagday]

    model = xgb.XGBClassifier(max_depth=3,
                              learning_rate=0.05,
                              n_estimators=500,
                              silent=True)
    model.fit(train, train_label)
    model_dict['ratio_velocity'] = model

    y_xgb_train = model.predict(train)
    y_xgb_v = model.predict(test)
    predict_dict['ratio_velocity'] = [y_xgb_train, y_xgb_v]

    print("Train Accuracy [ratio_velocity]: ",
          accuracy_score(y_xgb_train, train_label))
    print("Validation Accuracy [ratio_velocity]: ",
          accuracy_score(y_xgb_v, test_label))

    #*****ud********
    train = d_ud[:-lagday]
    test = d_ud_test[:-lagday]

    model = xgb.XGBClassifier(max_depth=3,
                              learning_rate=0.05,
                              n_estimators=500,
                              silent=True)
    model.fit(train, train_label)
    model_dict['ud'] = model

    y_xgb_train = model.predict(train)
    y_xgb_v = model.predict(test)

    predict_dict['ud'] = [y_xgb_train, y_xgb_v]

    print("Train Accuracy [ud]: ", accuracy_score(y_xgb_train, train_label))
    print("Validation Accuracy [ud]: ", accuracy_score(y_xgb_v, test_label))

    #*****kdj_macd_rssi_ratio********
    train = d_kdj_macd_rssi_ratio[:-lagday]
    test = d_kdj_macd_rssi_ratio_test[:-lagday]

    model = xgb.XGBClassifier(max_depth=3,
                              learning_rate=0.05,
                              n_estimators=500,
                              silent=True)
    model.fit(train, train_label)
    model_dict['kdj_macd_rssi_ratio'] = model

    y_xgb_train = model.predict(train)
    y_xgb_v = model.predict(test)

    predict_dict['kdj_macd_rssi_ratio'] = [y_xgb_train, y_xgb_v]

    print("Train Accuracy [kdj_macd_rssi_ratio]: ",
          accuracy_score(y_xgb_train, train_label))
    print("Validation Accuracy [kdj_macd_rssi_ratio]: ",
          accuracy_score(y_xgb_v, test_label))

    #*********Generate assemble input***********

    predict_train = []
    predict_test = []
    for k in predict_dict:
        predict_train.append(predict_dict[k][0])
        predict_test.append(predict_dict[k][1])

    predict_train = np.stack(predict_train, axis=1)
    predict_test = np.stack(predict_test, axis=1)

    model = xgb.XGBClassifier(max_depth=3,
                              learning_rate=0.05,
                              n_estimators=10,
                              silent=True)
    model.fit(predict_train, train_label)
    model_dict['ensemble'] = model
    y_xgb_train_ens = model.predict(predict_train)
    y_xgb_v_ens = model.predict(predict_test)

    print("Train Accuracy [Ens]: ", accuracy_score(y_xgb_train_ens,
                                                   train_label))
    print("Validation Accuracy [Ens]: ",
          accuracy_score(y_xgb_v_ens, test_label))

    return model_dict