示例#1
0
        layer_size = [(8, ), (10, ), (50, ), (10, 4), (8, 3)]
        solvers = ['adam', 'lbfgs']
        learning_rate = ['constant', 'invscaling', 'adaptive']
        learning_rate_init = [0.001, 0.005, 0.01, 0.05]
        act = ['relu', 'logistic', 'tanh']

        # Get all possible configs
        configs = []
        for l in layer_size:
            for s in solvers:
                for lr in learning_rate:
                    for lri in learning_rate_init:
                        for a in act:
                            configs.append({
                                'params': {
                                    'hidden_layer_sizes': l,
                                    'solver': s,
                                    'learning_rate': lr,
                                    'learning_rate_init': lri,
                                    'activation': a
                                },
                                'x_train': x_train,
                                'y_train': y_train,
                                'x_test': x_test,
                                'y_test': y_test
                            })
        return configs


ModelFactory.register_model('mlp', MLPModel)
示例#2
0
    def predict(self, x, **kwargs):
        pred = self.model.predict(x)
        return pred

    @with_xy
    def get_grid_search_configs(self, **kwargs):
        kernels = ['rbf']
        cs = np.arange(0.5, 5.0, 0.5)
        gammas = ['auto', 0.001, 0.005, 0.01, 0.05]

        # Get all possible configs
        configs = []
        for k in kernels:
            for c in cs:
                for g in gammas:
                    configs.append({
                        'params': {
                            'kernel': k,
                            'C': c,
                            'gamma': g,
                        },
                        'x_train': kwargs.get('x_train'),
                        'y_train': kwargs.get('y_train'),
                        'x_test': kwargs.get('x_test'),
                        'y_test': kwargs.get('y_test')
                    })
        return configs


ModelFactory.register_model('svc', SVCModel)
示例#3
0
        # Maximum number of iterations of the k-means algorithm for a single run
        max_iter = [150, 300, 600]
        # Relative tolerance with regards to inertia to declare convergence
        tolerance = [0.0001, 0.0005, 0.0010]

        # Get all possible configs
        configs = []
        for c in n_clusters:
            for n in n_init:
                for i in max_iter:
                    for t in tolerance:
                        configs.append({
                            'params': {
                                'n_clusters': c,
                                'init':
                                'k-means++',  # k-means++, random or ndarray
                                'n_init': n,
                                'max_iter': i,
                                'tol': t,
                                'n_jobs': None,
                            },
                            'x_train': kwargs.get('x_train'),
                            'y_train': kwargs.get('y_train'),
                            'x_test': kwargs.get('x_test'),
                            'y_test': kwargs.get('y_test')
                        })
        return configs


ModelFactory.register_model('kmeans', KMeansModel)
示例#4
0
    @with_xy
    def get_grid_search_configs(self, **kwargs):
        weights = ['uniform', 'distance']
        n_neighbors = [2, 3, 5, 9]
        leaf_size = [10]
        P = [2]

        # Get all possible configs
        configs = []
        for w in weights:
            for n in n_neighbors:
                for l in leaf_size:
                    for p in P:
                        configs.append({
                            'params': {
                                'n_neighbors': n,
                                'weights': w,
                                'leaf_size': l,
                                'p': p,
                                'n_jobs': None
                            },
                            'x_train': kwargs.get('x_train'),
                            'y_train': kwargs.get('y_train'),
                            'x_test': kwargs.get('x_test'),
                            'y_test': kwargs.get('y_test')
                        })
        return configs


ModelFactory.register_model('knn', KNNModel)
示例#5
0
                    self.params.get('alpha'), self.params.get('beta')))
            return

    @with_x
    def get_grid_search_configs(self, **kwargs):
        x_train = kwargs.get('x_train')
        x_test = kwargs.get('x_test')

        seasonal_periods = range(1, 14)
        alpha = np.arange(0.5, 3, 0.5)
        beta = np.arange(0.0, 3.0, 0.5)

        # Get all possible configs
        configs = []
        for p in seasonal_periods:
            for a in alpha:
                for b in beta:
                    configs.append({
                        'params': {
                            'seasonal_periods': p,
                            'alpha': a,
                            'beta': b,
                        },
                        'x_train': x_train,
                        'x_test': x_test
                    })
        return configs


ModelFactory.register_model('expsmooth', ExpSmoothModel)
示例#6
0
            return to_discrete_double(forecast, -0.01, 0.01)
        except (ValueError, np.linalg.linalg.LinAlgError):
            logger.error('{}: convergence error'.format(str(self.model.get_params())))

    @with_x
    def get_grid_search_configs(self, **kwargs):
        x_train = kwargs.get('x_train')
        x_test = kwargs.get('x_test')

        p_values = range(0,6)
        d_values = range(0,6)
        q_values = range(0,6)
        # If series is stationary, don't apply differentiation
        adf = adfuller(x_train)  # 0 is score, 1 is pvalue
        if adf[1] < 0.05:  # Null hp rejected, series is stationary and requires no differentiation
            logger.info('Series is stationary, no need for differencing')
            d_values = [0] # Set d = 0
        # Get all possible configs
        configs = []
        for p in p_values:
            for d in d_values:
                for q in q_values:
                    configs.append({
                        'params':{'order': (p,d,q)},
                        'x_train' : x_train,
                        'x_test' : x_test
                    })
        return configs

ModelFactory.register_model('arima', ARIMAModel)
示例#7
0
        if has_negative(x):
            x = scale(x, scaler='minmax', feature_range=(0, 1))
        pred = self.model.predict(x)
        return pred

    @with_xy
    def get_grid_search_configs(self, **kwargs):
        alpha = [
            0.0000000001, 0.001, 0.005, 0.01, 0.05, 0.1, 0.3, 0.5, 0.8, 1.0,
            1.5, 2.0
        ]
        fit_prior = [True, False]
        # Get all possible configs
        configs = []
        for k in alpha:
            for f in fit_prior:
                configs.append({
                    'params': {
                        'alpha': k,
                        'fit_prior': f
                    },
                    'x_train': kwargs.get('x_train'),
                    'y_train': kwargs.get('y_train'),
                    'x_test': kwargs.get('x_test'),
                    'y_test': kwargs.get('y_test')
                })
        return configs


ModelFactory.register_model('mnb', MNBModel)
示例#8
0
    @with_x
    def get_grid_search_configs(self, **kwargs):
        x_train = kwargs.get('x_train')
        x_test = kwargs.get('x_test')

        p_values = range(0, 6)
        d_values = range(0, 6)
        q_values = range(0, 6)
        # If series is stationary, don't apply differentiation
        adf = adfuller(x_train)  # 0 is score, 1 is pvalue
        if adf[1] < 0.05:  # Null hp rejected, series is stationary and requires no differentiation
            logger.info('Series is stationary, no need for differencing')
            d_values = [0]  # Set d = 0
        # Get all possible configs
        configs = []
        for p in p_values:
            for d in d_values:
                for q in q_values:
                    configs.append({
                        'params': {
                            'order': (p, d, q)
                        },
                        'x_train': x_train,
                        'x_test': x_test
                    })
        return configs


ModelFactory.register_model('sarima', SARIMAModel)
import logging
from lib.log import logger
from lib.symbol import Symbol, DatasetType
from lib.models import ModelFactory
from lib.job import Job
from lib.report import ReportCollection
import pandas as pd

logger.setup(filename='../job_test.log',
             filemode='w',
             root_level=logging.DEBUG,
             log_level=logging.DEBUG,
             logger='job_test')
ModelFactory.discover()

ohlcv = pd.read_csv("./data/result/ohlcv.csv",
                    sep=',',
                    encoding='utf-8',
                    index_col='Date',
                    parse_dates=True)
btc = pd.read_csv("./data/coinmetrics.io/btc.csv",
                  sep=',',
                  encoding='utf-8',
                  index_col='date',
                  parse_dates=True)

_sym = 'BTC'
s = Symbol(_sym,
           ohlcv=ohlcv,
           blockchain=btc,
           column_map={