Discusión sobre el artículo "Python, ONNX y MetaTrader 5: Creamos un modelo RandomForest con preprocesamiento de datos RobustScaler y PolynomialFeatures"
future_pr = dataset['<CLOSE>'].iloc[i + rand] debería ser: De lo contrario, obtendrá un error:
Una referencia de columna incorrecta en tu función labelling_relabeling_regression. Seguía obteniendo errores porque intenta acceder a la columna '<CIERRE>' en su conjunto de datos, pero pandas es incapaz de encontrarla porque el nombre correcto de la columna es 'close' , no '<CIERRE>' . La distinción entre mayúsculas y minúsculas y los corchetes angulares adicionales hacen que pandas lance un KeyError .
Es un error muy simple pero alguien que lo siga podría confundirse y abandonar.
Dado que el resto de su código está utilizando <CLOSE> ... su probablemente mejor sólo tiene que añadir una línea como:
dataset = dataset.rename(columns={'close': '<CLOSE>'})
He encontrado un error en el código:
debería ser:
De lo contrario obtendrás un error:
Referencia de columna incorrecta en tu función labelling_relabelling_regression. Seguía obteniendo errores porque está intentando acceder a la columna '<CLOSE>' de su conjunto de datos, pero pandas no puede encontrarla porque el nombre correcto de la columna es 'close', no '<CLOSE>'. Debido a la distinción entre mayúsculas y minúsculas y los paréntesis angulares adicionales, pandas lanza un KeyError.
Un error muy simple, pero alguien que pase por allí podría confundirse y darse por vencido.
Dado que el resto de su código utiliza <CLOSE> ... probablemente sea mejor añadir una línea como:
dataset = dataset.rename(columns={'close': '<CLOSE>'})
Muchas gracias, le echaré un vistazo, ¡puede que se me pasara al editar el código!(
No hay problema señor. Una recomendación más - para aquellas personas que no utilizan google colab y sólo trabajan en su propia máquina o en AWS o algo así, no necesitan importar gdown
en su lugar utilizar lo siguiente:
Primero
Segundo
reemplaza la siguiente sección
# Save the pipeline
joblib.dump(pipeline, 'rf_pipeline.joblib')
# Convert pipeline to ONNX
onnx_model = convert_sklearn(pipeline, initial_types=initial_type)
# Save the model in ONNX format
model_onnx_path = "rf_pipeline.onnx"
onnx.save_model(onnx_model, model_onnx_path)
# Save the model in ONNX format
model_onnx_path = "rf_pipeline.onnx"
onnx.save_model(onnx_model, model_onnx_path)
# Connect Google Drive (if you work in Colab and this is necessary)
from google.colab import drive
drive.mount('/content/drive')
# Specify the path to Google Drive where you want to move the model
drive_path = '/content/drive/My Drive/' # Make sure the path is correct
rf_pipeline_onnx_drive_path = os.path.join(drive_path, 'rf_pipeline.onnx')
# Move ONNX model to Google Drive
shutil.move(model_onnx_path, rf_pipeline_onnx_drive_path)
print('The rf_pipeline model is saved in the ONNX format on Google Drive:', rf_pipeline_onnx_drive_path) por:
print(f'El modelo rf_pipeline en formato ONNX se guarda localmente en: {local_onnx_path}')
el modelo se guardará en una subcarpeta llamada subdirectorio /model. Esto también almacenará su modelo como archivo jplotlib, en caso de que lo necesite para el tiempo de ejecución. Además, ambos modelos se pueden ejecutar directamente desde python para obtener predicciones.
No hay problema señor. Otra recomendación es para aquellos que no utilizan google colab y sólo se ejecutan en su máquina o en AWS, no necesitan importar gdown
En su lugar utilicen lo siguiente:
Primero:
.
Segundo:
reemplazar la siguiente sección
por:
print(f'El modelo rf_pipeline en formato ONNX se guarda localmente en la dirección: {local_onnx_path}')
El modelo se guardará en el subdirectorio /model. Aquí es también donde el modelo se almacenará como un archivo jplotlib, en caso de que lo necesite en tiempo de ejecución. Además, ambos modelos pueden ejecutarse directamente desde python para obtener predicciones.
Corregido, lanzada la versión del archivo tutorial al moderador para su aprobación.
Sí, todavía no he llegado al aprendizaje por refuerzo))))))
¿Por qué no se utilizó el gradient bousting como algoritmo más reciente (ya que te quejas de que random forest ya es antiguo)? ¿Simplemente ocurrió o hubo alguna razón? Creo que hay bousting en sklearn.
¿Por qué no se utilizó el gradient bousting como algoritmo más reciente (ya que te quejas de que random forest ya es antiguo)? ¿Simplemente ocurrió o hubo alguna razón? Creo que hay bousting en sklearn.
Es sólo que el bosque fue elegido como un ejemplo sencillo)Boosting en el próximo artículo, ahora lo estoy haciendo un poco)
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Usted acepta la política del sitio web y las condiciones de uso
Artículo publicado Python, ONNX y MetaTrader 5: Creamos un modelo RandomForest con preprocesamiento de datos RobustScaler y PolynomialFeatures:
En este artículo, crearemos un modelo de bosque aleatorio en Python, entrenaremos el modelo y lo guardaremos como un pipeline ONNX con preprocesamiento de datos. Además, usaremos el modelo en el terminal MetaTrader 5.
El bosque aleatorio, o RandomForest, es una potente herramienta en el arsenal del aprendizaje automático. Para entender mejor cómo funciona, lo visualizaremos como un enorme grupo de personas que se reúnen y toman decisiones colectivas. No obstante, en lugar de personas reales, cada persona de este grupo supone un clasificador o predictor independiente de la situación actual. Dentro de este grupo, las personas son árboles de decisión, cada uno capaz de tomar decisiones basadas en determinadas características. Cuando un bosque aleatorio toma una decisión, usa el principio democrático y la votación: cada árbol expresa su opinión y se toma una decisión basada en múltiples votos.
El bosque aleatorio se ha usado ampliamente en multitud de campos, y su flexibilidad lo hace adecuado tanto para tareas de clasificación como de regresión. En una tarea de clasificación, el modelo decide a cuál de las clases predefinidas asignar el estado actual. Por ejemplo, en el mercado financiero, esto podría significar la decisión de comprar (clase 1) o vender (clase 0) un activo en función de múltiples características.
Sin embargo, en este artículo profundizaremos en el problema de la regresión. La regresión en el aprendizaje automático supone un intento de predecir los valores numéricos futuros de una serie temporal usando como base sus valores pasados. En lugar de la clasificación, en la que asignamos objetos a clases específicas, en la regresión intentamos predecir números concretos. Puede tratarse, por ejemplo, de predecir los precios de las acciones en el mercado financiero, predecir la temperatura o cualquier otra variable numérica.
Autor: Yevgeniy Koshtenko