def test_get_x_y_for_patterns(self): c1 = Candle(datetime.now(), 1, 2, 3) c2 = Candle(datetime.now(), 4, 5, 6) p = Pattern([c1, c2], 'test1') c3 = Candle(datetime.now(), 7, 8, 9) c4 = Candle(datetime.now(), 10, 11, 12) p1 = Pattern([c3, c4], 'test2') X, y = get_x_y_for_patterns([p, p1], 'test2') self.assertEqual(y, [0, 1]) self.assertTrue(numpy.allclose(X[0], [0.5, 1.5])) self.assertTrue(numpy.allclose(X[1], [0.83333333, 1.16666667]))
from sklearn.model_selection import KFold, cross_val_score from PatternsCollector import get_patterns_for_window_and_num, get_x_y_for_patterns nums = [10, 20, 40, 80, 160, 320] i = 0 wrange = [2] lrange = [10] values = list() legends = list() for wnd in wrange: for l in lrange: scores = [] patterns = get_patterns_for_window_and_num(wnd, l) X, y = get_x_y_for_patterns(patterns, 'buy') for n in nums: i = i + 1 kf = KFold(n_splits=5, shuffle=True, random_state=100) model = GradientBoostingClassifier(n_estimators=n, random_state=100) ms = cross_val_score(model, X, y, cv=kf, scoring='roc_auc') scores.append(np.mean(ms)) print( 'Calculated {0}-{1}, num={2}, {3:.3f}%'.format( wnd, l, n, 100 * i / float((len(nums) * len(wrange) * len(lrange)))) ) values.append(scores)