можно сдвинуть график на 1 бар назад и сравнить ошибки между таким прогнозом и вашей моделью :)
Хорошо, а теперь объясни, что ты хочешь, чтобы я сделала?
1. сделать новый тренинг с данными, сдвинутыми на один бар назад? Я не понимаю смысла такого поведения.
2. запустить тест обученной модели на данных, сдвинутых на один бар назад? Я тоже не понимаю смысла такого поведения, т.к. окно тестовых данных двигается вперед с шагом в один бар. Допустим, всего имеется 6300 тестовых баров, тест начался с 1 бара до 21 бара, второй шаг — с 2 бара до 22 бара, третий шаг — с 3 бара до 23 бара и так далее - каждое такое 20-барное окно делает свой индивидуальный прогноз.
Как сдвинуть один бар назад?
+
Как я уже сказала, всю логику делал ChatGPT. Я не сильна в машинном обучении?
+
Я добавила данные, на которых тестировалась обученная модель (например usdx)
Хорошо, а теперь объясни, что ты хочешь, чтобы я сделала?
1. сделать новый тренинг с данными, сдвинутыми на один бар назад? Я не понимаю смысла такого поведения.
2. запустить тест обученной модели на данных, сдвинутых на один бар назад? Я тоже не понимаю смысла такого поведения, т.к. окно тестовых данных двигается вперед с шагом в один бар. Допустим, всего имеется 6300 тестовых баров, тест начался с 1 бара до 21 бара, второй шаг — с 2 бара до 22 бара, третий шаг — с 3 бара до 23 бара и так далее - каждое такое 20-барное окно делает свой индивидуальный прогноз.
Как сдвинуть один бар назад?
+
Как я уже сказала, всю логику делал ChatGPT. Я не сильна в машинном обучении?
+
Я добавила данные, на которых тестировалась обученная модель (например usdx)
ошибка считается от разницы реальных цен и прогноза. Посчитать ее от разницы цен и сдвинутых цен на 1 бар и сравнить с ошибкой нейросети
это все можно не делать, просто для понимания, что ваш прогноз ничего не стоит и дальше с ним ничего не нужно делать :)
ошибка считается от разницы реальных цен и прогноза. Посчитать ее от разницы цен и сдвинутых цен на 1 бар и сравнить с ошибкой нейросети
это все можно не делать, просто для понимания, что ваш прогноз ничего не стоит и дальше с ним ничего не нужно делать :)
ушел заниматься более интересными вещами
Кажется, я понимаю, что вы имеете в виду, но нет, модель предсказывает следующее значение после последнего доступного значения. Модель не может заглянуть в будущее, используя проверяемые данные. Это было первое условие, которое было проверено для предотвращения подглядывания.
Если нет, подскажите, где в этом коде модель может заглянуть в будущее, используя тестовые данные?
Я не поняла, поясните, что именно вы хотите сравнить?
Тестирование происходит следующим образом:
"seq" - это тестовые данные.
"current_window = seq[start_index:end_index]" создает скользящее окно, которое перемещается от "0" до "len(seq)" по тестовым данным с шагом +1.
"predictions.append(round(next_number, 0))" прогнозы "next_number" записываются в "predictions" и, наконец, отображаются на графике вместе с тестовыми данными "seq".
# Define the starting index and the ending index of the current window
start_index = 0
end_index = minimum_window_size + 1while end_index <= len(seq):
# Get the current window of the sequence
current_window = seq[start_index:end_index]
# Create input/output sequences using a sliding window approach
inputs, outputs = np.array(
[current_window[i:i + window_size_value] for i in range(len(current_window) - window_size_value)]), \
current_window[window_size_value:]
# Split the data into training, validation, and test sets
random_state_value = variables['random_state']
X_train, X_test, y_train, y_test = train_test_split(inputs, outputs, test_size=test_size_value,
random_state=random_state_value)
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=round(test_size_value * 0.66, 1),
random_state=random_state_value)
# Evaluate the model on the test set
test_loss = model.evaluate(X_test, y_test, verbose=0)
# Use the trained model to make predictions on the sequence
last_window = np.array(current_window[-window_size_value:]).reshape(1, window_size_value)
next_number_scaled = model.predict(last_window)[0, 0]
# Rescale the predicted value back to the original scale of the sequence
next_number = scaler.inverse_transform([[next_number_scaled]])[0][0]
# Append the rounded predicted value to the list of predictions
predictions.append(round(next_number, 0))
# Update the starting and ending indices for the next window
start_index += 1
end_index += 1
Этот код используется для генерации прогнозов на основе модели машинного обучения, которая была обучена на некоторой последовательности данных.
start_index и end_index - это индексы, определяющие текущее окно последовательности, которое используется для создания входных и выходных последовательностей.
С помощью метода скользящего окна создаются входные и выходные последовательности. Интервал скользящего окна равен window_size_value , а шаг равен 1.
Данные разбиваются на обучающую, валидационную и тестовую выборки.
Модель оценивается на тестовой выборке, и значение потерь сохраняется в переменную test_loss .
Используя обученную модель, генерируется прогноз для следующего значения в последовательности seq . Для этого берется последнее окно длиной window_size_value и подается на вход модели. Модель выдает скалированное значение прогноза, которое затем переводится обратно в исходную шкалу последовательности с помощью объекта scaler . Результат округляется до ближайшего целого и добавляется в список прогнозов.
Затем индексы текущего окна сдвигаются на 1 вправо для создания следующего окна и генерации нового прогноза.
Таким образом, весь код используется для генерации прогнозов на основе обученной модели машинного обучения, которая может быть использована для прогнозирования последовательностей данных.
Кажется, я понимаю, что вы имеете в виду, но нет, модель предсказывает следующее значение после последнего доступного значения. Модель не может заглянуть в будущее, используя проверяемые данные. Это было первое условие, которое было проверено для предотвращения подглядывания.
Если нет, подскажите, где в этом коде модель может заглянуть в будущее, используя тестовые данные?
Модель заглядывает в будущее в тестовых данных, если берет данные текущего значения, которое предсказывает, а не предыдущего, или еще хуже следующего значения.
В общем если это прогноз на следующую свечу то не плохо. но код надо шерстить на предмет использования текущих данных.
И модель погонять на разных данных по времени и инструментам.
Кажется, я понимаю, что вы имеете в виду, но нет, модель предсказывает следующее значение после последнего доступного значения. Модель не может заглянуть в будущее, используя проверяемые данные. Это было первое условие, которое было проверено для предотвращения подглядывания.
Если нет, подскажите, где в этом коде модель может заглянуть в будущее, используя тестовые данные?
Этот код используется для генерации прогнозов на основе модели машинного обучения, которая была обучена на некоторой последовательности данных.
start_index и end_index - это индексы, определяющие текущее окно последовательности, которое используется для создания входных и выходных последовательностей.
С помощью метода скользящего окна создаются входные и выходные последовательности. Интервал скользящего окна равен window_size_value , а шаг равен 1.
Данные разбиваются на обучающую, валидационную и тестовую выборки.
Модель оценивается на тестовой выборке, и значение потерь сохраняется в переменную test_loss .
Используя обученную модель, генерируется прогноз для следующего значения в последовательности seq . Для этого берется последнее окно длиной window_size_value и подается на вход модели. Модель выдает скалированное значение прогноза, которое затем переводится обратно в исходную шкалу последовательности с помощью объекта scaler . Результат округляется до ближайшего целого и добавляется в список прогнозов.
Затем индексы текущего окна сдвигаются на 1 вправо для создания следующего окна и генерации нового прогноза.
Таким образом, весь код используется для генерации прогнозов на основе обученной модели машинного обучения, которая может быть использована для прогнозирования последовательностей данных.
Модель заглядывает в будущее в тестовых данных, если берет данные текущего значения, которое предсказывает, а не предыдущего, или еще хуже следующего значения.
В общем если это прогноз на следующую свечу то не плохо. но код надо шерстить на предмет использования текущих данных.
И модель погонять на разных данных по времени и инструментам.
Насколько я понимаю, этот кусок кода вырезает окно из тестовых данных и скармливает их обученной модели, чтобы сделать прогноз:
# Get the current window of the sequence
current_window = seq[start_index:end_index]
Но этот код хранит предсказанное значение в совершенно другом списке "predictions" и тестовые данные никак не смешивались с предсказанным:
# Append the rounded predicted value to the list of predictions
predictions.append(round(next_number, 0))
Насколько я понимаю, этот кусок кода вырезает окно из тестовых данных и скармливает их обученной модели, чтобы сделать прогноз:
Но этот код хранит предсказанное значение в совершенно другом списке "predictions" и тестовые данные никак не смешивались с предсказанным:
Можно принтовать время получения прогнозного значения и получения текущего значения. Модель же должна работать с данными последовательно. Получила последнее значение, предсказала следующее. Это надо как то увидеть. Макс и хотел посмотреть сдвинув график процент ошибок. Но тут еще и время получения прогноза важно. Или пошагово смотреть, получили прогноз, скормили значение, дальше прогноз, получи значение)))
Можно принтовать время получения прогнозного значения и получения текущего значения. Модель же должна работать с данными последовательно. Получила последнее значение, предсказала следующее. Это надо как то увидеть. Макс и хотел посмотреть сдвинув график процент ошибок. Но тут еще и время получения прогноза важно. Или пошагово смотреть, получили прогноз, скормили значение, дальше прогноз, получи значение)))
У меня есть вывод Метрики ошибок, но я также понимаю, что модель в этих конкретных тестах выполняет более 6000 итераций, чтобы сделать прогноз для следующего числа в каждом из них. Печать ошибки для каждой итерации приводит к непропорциональному потреблению ресурсов и непостижимому количеству информации.
# Evaluate the model on the test set
test_loss = model.evaluate(X_test, y_test, verbose=0)
Что такое "ошибка обучения модели", это метрика (loss = 0.0285, mse = 0.0007, mae = 0.0191, msle = 0.0003, rmse = 0.0252, r_square = 0.9091,
можно взять rmse
можно сдвинуть график на 1 бар назад и сравнить ошибки между таким прогнозом и вашей моделью :)
Хорошо, а теперь объясни, что ты хочешь, чтобы я сделала?
1. сделать новый тренинг с данными, сдвинутыми на один бар назад? Я не понимаю смысла такого поведения.
2. запустить тест обученной модели на данных, сдвинутых на один бар назад? Я тоже не понимаю смысла такого поведения, т.к. окно тестовых данных двигается вперед с шагом в один бар. Допустим, всего имеется 6300 тестовых баров, тест начался с 1 бара до 21 бара, второй шаг — с 2 бара до 22 бара, третий шаг — с 3 бара до 23 бара и так далее - каждое такое 20-барное окно делает свой индивидуальный прогноз.
Как сдвинуть один бар назад?
+
Как я уже сказала, всю логику делал ChatGPT. Я не сильна в машинном обучении?
+
Я добавила данные, на которых тестировалась обученная модель (например usdx)
Хорошо, а теперь объясни, что ты хочешь, чтобы я сделала?
1. сделать новый тренинг с данными, сдвинутыми на один бар назад? Я не понимаю смысла такого поведения.
2. запустить тест обученной модели на данных, сдвинутых на один бар назад? Я тоже не понимаю смысла такого поведения, т.к. окно тестовых данных двигается вперед с шагом в один бар. Допустим, всего имеется 6300 тестовых баров, тест начался с 1 бара до 21 бара, второй шаг — с 2 бара до 22 бара, третий шаг — с 3 бара до 23 бара и так далее - каждое такое 20-барное окно делает свой индивидуальный прогноз.
Как сдвинуть один бар назад?
+
Как я уже сказала, всю логику делал ChatGPT. Я не сильна в машинном обучении?
+
Я добавила данные, на которых тестировалась обученная модель (например usdx)
ошибка считается от разницы реальных цен и прогноза. Посчитать ее от разницы цен и сдвинутых цен на 1 бар и сравнить с ошибкой нейросети
это все можно не делать, просто для понимания, что ваш прогноз ничего не стоит и дальше с ним ничего не нужно делать :)
ушел заниматься более интересными вещами
ошибка считается от разницы реальных цен и прогноза. Посчитать ее от разницы цен и сдвинутых цен на 1 бар и сравнить с ошибкой нейросети
это все можно не делать, просто для понимания, что ваш прогноз ничего не стоит и дальше с ним ничего не нужно делать :)
ушел заниматься более интересными вещами
Кажется, я понимаю, что вы имеете в виду, но нет, модель предсказывает следующее значение после последнего доступного значения. Модель не может заглянуть в будущее, используя проверяемые данные. Это было первое условие, которое было проверено для предотвращения подглядывания.
Если нет, подскажите, где в этом коде модель может заглянуть в будущее, используя тестовые данные?
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Разговор с искусственным интеллектом (ИИ) о форексе.
Lilita Bogachkova, 2023.04.12 12:42
Я не поняла, поясните, что именно вы хотите сравнить?
Тестирование происходит следующим образом:
"seq" - это тестовые данные.
"current_window = seq[start_index:end_index]" создает скользящее окно, которое перемещается от "0" до "len(seq)" по тестовым данным с шагом +1.
"predictions.append(round(next_number, 0))" прогнозы "next_number" записываются в "predictions" и, наконец, отображаются на графике вместе с тестовыми данными "seq".
Этот код используется для генерации прогнозов на основе модели машинного обучения, которая была обучена на некоторой последовательности данных.
Таким образом, весь код используется для генерации прогнозов на основе обученной модели машинного обучения, которая может быть использована для прогнозирования последовательностей данных.
Кажется, я понимаю, что вы имеете в виду, но нет, модель предсказывает следующее значение после последнего доступного значения. Модель не может заглянуть в будущее, используя проверяемые данные. Это было первое условие, которое было проверено для предотвращения подглядывания.
Если нет, подскажите, где в этом коде модель может заглянуть в будущее, используя тестовые данные?
Модель заглядывает в будущее в тестовых данных, если берет данные текущего значения, которое предсказывает, а не предыдущего, или еще хуже следующего значения.
В общем если это прогноз на следующую свечу то не плохо. но код надо шерстить на предмет использования текущих данных.
И модель погонять на разных данных по времени и инструментам.
Кажется, я понимаю, что вы имеете в виду, но нет, модель предсказывает следующее значение после последнего доступного значения. Модель не может заглянуть в будущее, используя проверяемые данные. Это было первое условие, которое было проверено для предотвращения подглядывания.
Если нет, подскажите, где в этом коде модель может заглянуть в будущее, используя тестовые данные?
Этот код используется для генерации прогнозов на основе модели машинного обучения, которая была обучена на некоторой последовательности данных.
Таким образом, весь код используется для генерации прогнозов на основе обученной модели машинного обучения, которая может быть использована для прогнозирования последовательностей данных.
А какой ТФ?
Модель заглядывает в будущее в тестовых данных, если берет данные текущего значения, которое предсказывает, а не предыдущего, или еще хуже следующего значения.
В общем если это прогноз на следующую свечу то не плохо. но код надо шерстить на предмет использования текущих данных.
И модель погонять на разных данных по времени и инструментам.
Насколько я понимаю, этот кусок кода вырезает окно из тестовых данных и скармливает их обученной модели, чтобы сделать прогноз:
# Get the current window of the sequence current_window = seq[start_index:end_index]Но этот код хранит предсказанное значение в совершенно другом списке "predictions" и тестовые данные никак не смешивались с предсказанным:
А какой ТФ?
Таймфрейм только для Н1, т.к. Н1 везде одинакова, а меньше Н1 не актуально.
Насколько я понимаю, этот кусок кода вырезает окно из тестовых данных и скармливает их обученной модели, чтобы сделать прогноз:
Но этот код хранит предсказанное значение в совершенно другом списке "predictions" и тестовые данные никак не смешивались с предсказанным:
Можно принтовать время получения прогнозного значения и получения текущего значения. Модель же должна работать с данными последовательно. Получила последнее значение, предсказала следующее. Это надо как то увидеть. Макс и хотел посмотреть сдвинув график процент ошибок. Но тут еще и время получения прогноза важно. Или пошагово смотреть, получили прогноз, скормили значение, дальше прогноз, получи значение)))
Можно принтовать время получения прогнозного значения и получения текущего значения. Модель же должна работать с данными последовательно. Получила последнее значение, предсказала следующее. Это надо как то увидеть. Макс и хотел посмотреть сдвинув график процент ошибок. Но тут еще и время получения прогноза важно. Или пошагово смотреть, получили прогноз, скормили значение, дальше прогноз, получи значение)))
У меня есть вывод Метрики ошибок, но я также понимаю, что модель в этих конкретных тестах выполняет более 6000 итераций, чтобы сделать прогноз для следующего числа в каждом из них. Печать ошибки для каждой итерации приводит к непропорциональному потреблению ресурсов и непостижимому количеству информации.