Пример #1
0
 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)