Un canal de aprendizaje automático conversacional inteligente que integra agentes de Langchain y XGBOost para flujos de trabajo de ciencia de datos automatizados

En este tutorial, combinamos el poder analítico de xgboost con la inteligencia conversacional de Langchain. Construimos una tubería de extremo a extremo que puede generar conjuntos de datos sintéticos, entrenar un modelo XGBOOST, evaluar su rendimiento y visualizar ideas clave, todas orquestadas a través de herramientas modulares de Langchain. Al hacer esto, demostramos cómo la IA conversacional puede interactuar sin problemas con los flujos de trabajo de aprendizaje automático, permitiendo a un agente administrar de manera inteligente todo el ciclo de vida de ML de manera estructurada y humana. A través de este proceso, experimentamos cómo la integración de la automatización basada en el razonamiento puede hacer que el aprendizaje automático sea interactivo y explicable. Mira los códigos completos aquí.

! Pip instale langchain langchain-community langchain-core xgboost scikit-learn pandas numpy matplotlib Import de importación como PD PD Import Numpy como NP Import XGBOOST AS XGB de sklearn.datasets importación_classificación de sklearn.model_selection clasificación_report, confusion_matrix import matplotlib.pyplot como plt import seaborn como sns de langchain. Tools Import Tool de langchain.agents import agentType, inicialize_agent desde langchain.memory importación de importación de langchain. langchain_community.llms.fake import fakelistllm import json

Comenzamos instalando e importando todas las bibliotecas esenciales necesarias para este tutorial. Utilizamos Langchain para la integración de AI de agente, XGBOost y Scikit-Learn para el aprendizaje automático, y pandas, Numpy y Seaborn para el manejo y visualización de datos. Mira los códigos completos aquí.

class DataManager: “” “administra la generación de conjuntos de datos y el preprocesamiento” “” def __init __ (self, n_samples = 1000, n_features = 20, random_state = 42): self.n_samples = n_samples self.n_features = n_features self.random_state = random_state self.x_train, self.xest, self.xest, self.xest, self.xest, self.xest, self.xest, self.xest, self.xest, self.xest, self.xest, self.xest, self.xest, self.xest, self.xest. self.y_train, self.y_test = none, ninguno, ninguno, ninguno self.feature_names = [f’feature_{i}’ for i in range(n_features)]

Def Generate_Data (self): “” “Genere el conjunto de datos de clasificación sintética” “” x, y = make_classification (n_samples = self.n_samples, n_features = self.n_features, n_informative = 15, n_redund = 5, random_state = self.random_state) self.x_train, self. self.y_test = trenes_test_split (x, y, test_size = 0.2, random_state = self.random_state) return f “conjunto de datos generado: {self.x_train.shape[0]} muestras de trenes, {self.x_test.shape[0]} muestras de prueba “def get_data_summary (self):” “” Devuelve estadísticas resumidas del conjunto de datos “” “” Si Self.x_train es Ninguno: return “No hay datos generados todavía. Genere los datos primero. “Resumen = {” Train_samples “: self.x_train.shape[0]”test_samples”: self.x_test.shape[0]”Características”: self.x_train.shape[1]”class_distribution”: {“Train”: {0: int (np.sum (self.y_train == 0)), 1: int (np.sum (self.y_train == 1))}, “test”: {0: int (np.sum (self.y_test == 0)), 1: int (np.sum (self.y_test) return json.dumps (resumen, sangría = 2)

Definimos la clase DataManager para manejar las tareas de generación de conjuntos de datos y preprocesamiento. Aquí, creamos datos de clasificación sintética utilizando la función de clasificación Make_Classification de Scikit-Learn, los dividimos en conjuntos de entrenamiento y prueba, y generamos un resumen conciso que contiene recuentos de muestras, dimensiones de características y distribuciones de clases. Mira los códigos completos aquí.

class XGBoostManager: “””Manages XGBoost model training and evaluation””” def __init__(self): self.model = None self.predictions = None self.accuracy = None self.feature_importance = None def train_model(self, X_train, y_train, params=None): “””Train XGBoost classifier””” if params is None: params = {” MAX_DEPTH ‘: 6,’ Learning_Rate ‘: 0.1,’ n_estimators ‘: 100,’ Objective ‘:’ binary: logistic ‘,’ random_state ‘: 42} self.model = xgb.xgbbBcClassifier[‘n_estimators’]} Estimadores “Def Evaluate_Model (self, x_test, y_test):” “” Evaluar el rendimiento del modelo “” “si self.model es ninguno: return” No hay modelo entrenado todavía. Please train model first.” self.predictions = self.model.predict(X_test) self.accuracy = accuracy_score(y_test, self.predictions) report = classification_report(y_test, self.predictions, output_dict=True) result = { “accuracy”: float(self.accuracy), “precision”: float(report[‘1’][‘precision’]), “Recordar”: Float (informe[‘1’][‘recall’]), “F1_Score”: Float (informe[‘1’][‘f1-score’])} return json.dumps (resultado, indent = 2) def get_feature_importance (self, larging_names, top_n = 10): “” “Obtenga las características más importantes” “” “Si self.model es ninguno: return” no hay modelo capacitado todavía “. importancia = self.model.feature_importances_ caracteres_imp_df = pd.dataFrame ({‘característica’: características_names, ‘importancia’: importancia}). sort_values ​​(‘importancia’, ascending = false) return_imp_df.head (top_n) .to_string () Def visualize_Results (self, x_test, y_test, “” “. visualizaciones para los resultados del modelo “” “si self.model no es ninguna: imprime (” no hay modelo entrenado todavía “) return fig, exes = plt.subplots (2, 2, figSize = (15, 12)) cm = confusion_matrix (y_test, self.predicciones) sns.heatmap (cm, annot, fmt =” d “, cay[0, 0]) hachas[0, 0].set_title (‘Matriz de confusión’) ejes[0, 0].set_ylabel (‘verdadero etiqueta’) ejes[0, 0].set_xlabel (‘etiqueta predicción’) importancia = self.model.feature_importances_ indices = np.argsort (importancia)[-10:]
hachas[0, 1].Barh (rango (10), importancia[indices]) hachas[0, 1].set_yticks (rango (10)) ejes[0, 1].set_yticklabels ([feature_names[i] para i en índices]) hachas[0, 1].set_title (‘ejes de las 10 importantes de características superiores’)[0, 1].set_xlabel (‘importancia’) ejes[1, 0]. Hist ([y_test, self.predictions]etiqueta =[‘True’, ‘Predicted’]contenedores = 2) hachas[1, 0].set_title (‘verdadero vs distribución predicha’) ejes[1, 0].legend () hachas[1, 0].set_xticks ([0, 1]) Train_sizes = [0.2, 0.4, 0.6, 0.8, 1.0]
Train_scores = [0.7, 0.8, 0.85, 0.88, 0.9]
hachas[1, 1].plot (Train_Sizes, Train_Scores, Marker = “O”) Axes[1, 1].set_title (‘curva de aprendizaje (simulado)’) ejes[1, 1].set_xlabel (‘tamaño de conjunto de entrenamiento’) ejes[1, 1].set_ylabel (‘precisión’) ejes[1, 1].Grid (true) plt.tight_layout () plt.show ()

Implementamos XGBOostManager para capacitar, evaluar e interpretar nuestro clasificador de extremo a extremo. Se ajustamos a un clasificador XGB, calculamos la precisión y las métricas por clase, extraemos importantes de características principales y visualizamos los resultados utilizando una matriz de confusión, un cuadro de importancia, comparación de distribución y una simple vista de curva de aprendizaje. Mira los códigos completos aquí.

def create_ml_agent (data_manager, xgb_manager): “” “Crear agente Langchain con herramientas ml” “” herramientas = [
Tool(
name=”GenerateData”,
func=lambda x: data_manager.generate_data(),
description=”Generate synthetic dataset for training. No input needed.”
),
Tool(
name=”DataSummary”,
func=lambda x: data_manager.get_data_summary(),
description=”Get summary statistics of the dataset. No input needed.”
),
Tool(
name=”TrainModel”,
func=lambda x: xgb_manager.train_model(
data_manager.X_train, data_manager.y_train
),
description=”Train XGBoost model on the dataset. No input needed.”
),
Tool(
name=”EvaluateModel”,
func=lambda x: xgb_manager.evaluate_model(
data_manager.X_test, data_manager.y_test
),
description=”Evaluate trained model performance. No input needed.”
),
Tool(
name=”FeatureImportance”,
func=lambda x: xgb_manager.get_feature_importance(
data_manager.feature_names, top_n=10
),
description=”Get top 10 most important features. No input needed.”
)
]

Herramientas de retorno

Definimos la función create_ml_agent para integrar tareas de aprendizaje automático en el ecosistema Langchain. Aquí, envolvemos las operaciones clave, la generación de datos, el resumen, la capacitación del modelo, la evaluación y el análisis de características en las herramientas de Langchain, lo que permite a un agente conversacional que realice flujos de trabajo ML de extremo a extremo a través de las instrucciones del lenguaje natural. Mira los códigos completos aquí.

def run_tutorial (): “” “Ejecutar el tutorial completo” “” “imprime (” = ” * 80) print (” avanzado langchain + xgboost tutorial “) print (” = ” * 80) data_mgr = dataManager (n_samples = 1000, n_feature = 20) xgb_mgr = xgboostmanager () herramientas = create_ml_agent (data, data, data, = 20) xgb_mgr) print (“N1. Generación de datos de datos …”) Result = Herramientas[0].func (“”) print (resultado) print (“n2. dataSet Resumen:”) Resumen = herramientas[1].func (“”) impresión (resumen) impresión (“n3. capacitación xgboost modelo …”) Train_result = herramientas[2].func (“”) print (Train_Result) print (“N4. Evaluación del modelo:”) Eval_Result = Herramientas[3].func (“”) print (eval_result) print (“N5. Importancios de características superiores:”) Importancia = Herramientas[4].func (“”) print (importancia) print (“n6. Generación de visualizaciones …”) xgb_mgr.visualize_results (data_mgr.x_test, data_mgr.y_test, data_mgr.feature_names) print (“n” + “=” * 80) Print (“Tutorial!”) Print (“=” * 80) Print (“” “” “):”) print (“- Las herramientas de langchain pueden envolver operaciones ML”) print (“- xgboost proporciona potente impulso de gradiente”) print (“- El enfoque basado en agente habilita las tuberías de ML conversacionales”) Impresa (“- Integración fácil con flujos de trabajo ML existentes”) si __name__ == “__Main__”: run_tutorial ()

Orquestamos el flujo de trabajo completo con run_tutorial (), donde generamos datos, entrenamos y evaluamos el modelo XGBOOST y las importantes de las características de la superficie. Luego visualizamos los resultados e imprimimos las conclusiones clave, lo que nos permite experimentar interactivamente una tubería de ML conversacional de extremo a extremo.

En conclusión, creamos una tubería ML completamente funcional que combina el marco de agente basado en herramientas de Langchain con la fuerza predictiva del clasificador XGBOOST. Vemos cómo Langchain puede servir como una interfaz de conversación para realizar operaciones de ML complejas, como generación de datos, capacitación de modelos y evaluación, todo de manera lógica y guiada. Este tutorial práctico nos ayuda a apreciar cómo la combinación de orquestación alimentada por LLM con el aprendizaje automático puede simplificar la experimentación, mejorar la interpretabilidad y allanar el camino para flujos de trabajo de ciencia de datos más inteligentes e impulsados ​​por el diálogo.

Mira los códigos completos aquí. No dude en consultar nuestra página de GitHub para obtener tutoriales, códigos y cuadernos. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro subreddit de 100k+ ml y suscribirse a nuestro boletín.

Asif Razzaq es el CEO de MarktechPost Media Inc .. Como empresario e ingeniero visionario, ASIF se compromete a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, MarktechPost, que se destaca por su cobertura profunda de noticias de aprendizaje automático y de aprendizaje profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el público.

🙌 Siga a MarkTechPost: agrégenos como una fuente preferida en Google.